Skip to content

QVAC-16777 feat[skiplog]: improve sdk-changelog tooling and add 0.10.0 release notes#1865

Merged
NamelsKing merged 2 commits into
tetherto:mainfrom
NamelsKing:feat-QVAC-16777-sdk-changelog
May 1, 2026
Merged

QVAC-16777 feat[skiplog]: improve sdk-changelog tooling and add 0.10.0 release notes#1865
NamelsKing merged 2 commits into
tetherto:mainfrom
NamelsKing:feat-QVAC-16777-sdk-changelog

Conversation

@NamelsKing

Copy link
Copy Markdown
Contributor

Note: be concise and prefer bullet points.

🎯 What problem does this PR solve?

Two related deliverables under QVAC-16777:

  • sdk-changelog skill + script were missing several quality-of-life fixes that surfaced while preparing the 0.10.0 release: backmerge PRs polluting the changelog, companion entries (vocab/lexicons/data shards) leaking into the Models section, no scripted way to produce the Slack announcement post, and CHANGELOG_LLM.md being optional.
  • The 0.10.0 release notes themselves land on main directly (in addition to the matching release-sdk-0.10.0 PR) so the historical record is in main from day one, and the eventual release → main backmerge becomes a no-op for changelog/NOTICE/per-version files.

🔧 How does it solve it?

Tooling (scripts/sdk/generate-changelog-sdk-pod.cjs)

  • Backmerge filter: PRs whose subject starts with Backmerge or Merge release … are skipped during processSDKPRs, with a clear log line.
  • Companion filter + entry-count strip: new isCompanionEntry, stripEntryCount, cleanModelEntries helpers applied to the inline [mod] summary in CHANGELOG.md and the body of models.md. Recognises *_LEX / *_VOCAB / *_DATA / *_METADATA constant suffixes and any line containing the word companion.
  • Indented continuation lines for [mod] PRs: Added: / Updated: / Removed: are emitted as indented sub-rows under the bullet (capped at MAX_INLINE_MODELS = 5 per section, (and N more) for the rest), instead of stuffed inline.
  • Announcement-post generator: new --generate-announcement-post CLI flag (with optional --version) parses CHANGELOG.md via parseChangelogMarkdown and emits the Slack template (:qvac: header, NPM/GitHub/changelog links, conditional :warning: Breaking Changes, per-section bullets with <url> link wrapping and :boom: breaking markers, footer). Sections cap at MAX_ANNOUNCEMENT_BULLETS = 10 with ... And much more, see full list in changelog :memo: only when strictly more than 10.
  • New helpers exported: parseChangelogMarkdown, generateAnnouncementPost.

Skill (.cursor/skills/sdk-changelog/SKILL.md)

  • Step 4 (CHANGELOG_LLM.md) is now mandatory — explicit "do not ask the user".
  • New Step 5: generate announcement-post.txt (mandatory) with the gitignore note and template spec.
  • NOTICE renumbered to Step 6.
  • Documented all new policies (backmerge, companion, entry-count strip, indentation, max-bullets cap).
  • CLI parameters table refreshed.

.gitignore

  • Added packages/*/changelog/*/announcement-post.txt. The post is a Slack copy-paste working artifact, not a release deliverable.

Release notes for 0.10.0

  • New packages/sdk/changelog/0.10.0/{CHANGELOG.md, breaking.md, api.md, models.md, CHANGELOG_LLM.md}.
  • Root aggregate packages/sdk/CHANGELOG.md rebuilt with v0.10.0 at top.
  • packages/sdk/NOTICE regenerated (191 models, 179 JS deps).
  • packages/sdk/package.json bumped 0.9.1 → 0.10.0.

✅ How was it tested?

  • Generated packages/sdk/changelog/0.10.0/ end-to-end. Verified PR chore[notask]: backmerge release sdk 0.9.1 #1726 (backmerge of release-sdk-0.9.1) is now skipped → 33 valid PRs vs 34 before.
  • Verified Models section in CHANGELOG.md shows only MARIAN_OPUS_* (renamed) under Removed, with BERGAMOT_*_LEX / BERGAMOT_*_VOCAB / BERGAMOT_METADATA_* / *_DATA correctly filtered.
  • Verified models.md matches the same filter (no companions, no entry-count suffixes).
  • Verified announcement-post.txt renders with Slack shortcodes, <url> link wrapping, :boom: breaking on the 5 breaking PRs, per-section truncation only on API (13 entries, > 10), not Fixes (8 entries, ≤ 10).
  • git status --ignored confirms announcement-post.txt is properly excluded.
  • Lint clean on the script.

📝 Notes for reviewers

…otes

Tooling (scripts/sdk/generate-changelog-sdk-pod.cjs):
- Backmerge filter: PRs whose subject starts with `Backmerge` or
  `Merge release ...` are skipped during processSDKPRs (same shape as
  the existing [skiplog] filter).
- Companion filter + entry-count strip: new isCompanionEntry,
  stripEntryCount, cleanModelEntries helpers applied to the inline
  [mod] summary in CHANGELOG.md and the body of models.md. Recognises
  *_LEX / *_VOCAB / *_DATA / *_METADATA constant suffixes and any
  line containing the word "companion".
- Indented continuation lines for [mod] PRs: Added/Updated/Removed
  are emitted as indented sub-rows under the bullet (capped at
  MAX_INLINE_MODELS = 5 per section, "(and N more)" for the rest)
  instead of stuffed inline.
- Announcement-post generator: new --generate-announcement-post CLI
  flag (with optional --version) parses CHANGELOG.md via
  parseChangelogMarkdown and emits the Slack template (:qvac: header,
  NPM/GitHub/changelog links, conditional :warning: Breaking Changes,
  per-section bullets with <url> link wrapping and :boom: breaking
  markers, footer). Sections cap at MAX_ANNOUNCEMENT_BULLETS = 10
  with "... And much more, see full list in changelog :memo:" only
  when strictly more than 10.
- New helpers exported: parseChangelogMarkdown, generateAnnouncementPost.

Skill (.cursor/skills/sdk-changelog/SKILL.md):
- Step 4 (CHANGELOG_LLM.md) is now mandatory.
- New Step 5: generate announcement-post.txt (mandatory) with the
  gitignore note and template spec.
- NOTICE renumbered to Step 6.
- Documented all new policies (backmerge, companion, entry-count
  strip, indentation, max-bullets cap).
- CLI parameters table refreshed.

.gitignore:
- Added packages/*/changelog/*/announcement-post.txt. The post is a
  Slack copy-paste working artifact, not a release deliverable.

Release notes for 0.10.0:
- New packages/sdk/changelog/0.10.0/ folder with CHANGELOG.md,
  breaking.md, api.md, models.md, CHANGELOG_LLM.md.
- Root aggregate packages/sdk/CHANGELOG.md rebuilt with v0.10.0 at
  top.
- packages/sdk/NOTICE refreshed (191 models, 179 JS deps).
- packages/sdk/package.json bumped 0.9.1 -> 0.10.0.

Backmerge of release-sdk-0.10.0 -> main is a no-op for the release
artifacts (changelog, NOTICE) because they land here directly.
@NamelsKing NamelsKing requested review from a team as code owners May 1, 2026 14:11
simon-iribarren added a commit to simon-iribarren/qvac that referenced this pull request May 1, 2026
…d conflict with 0.10.0 PR

PR tetherto#1865 (the 0.10.0 release) is open against main and bumps
packages/sdk/package.json version 0.9.1 -> 0.10.0. This backmerge
was bumping the same line 0.9.1 -> 0.9.2, so whichever lands second
hits a conflict on that single line.

Since main is moving to 0.10.0 directly (the 0.9.2 hotfix is a
separate release line), drop the package.json change from this
backmerge and let tetherto#1865 own the version bump. Main's package.json
will briefly say 0.9.1 while CHANGELOG.md lists 0.9.2 as the latest
shipped version, but that's transient — tetherto#1865 overwrites it to
0.10.0 anyway.

Keep the changelog artifacts (changelog/0.9.2/ folder + the
prepended ## [0.9.2] entry in aggregated CHANGELOG.md) so main
retains a record of the 0.9.2 release in its history.
@NamelsKing

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (1/1)
- 1 Team Lead OR Management approval ✅ (3/1)

**Bypass rule:** Triggered (2+ Team Lead approvals (Tier 1 exception)). This PR is approved regardless of tier.

---
*This comment is automatically updated when reviews change.*

@NamelsKing NamelsKing merged commit c24dfa1 into tetherto:main May 1, 2026
13 of 15 checks passed
NamelsKing added a commit that referenced this pull request May 4, 2026
* QVAC-18184 chore[notask|skiplog]: backmerge release sdk 0.9.2

Brings the 0.9.2 release artifacts back into main now that
@qvac/sdk@0.9.2 has been published to npm (`latest` dist-tag,
2026-05-01 10:09 UTC).

- Bump packages/sdk/package.json: 0.9.1 -> 0.9.2
- Add packages/sdk/changelog/0.9.2/CHANGELOG.md and CHANGELOG_LLM.md
- Prepend 0.9.2 entry to aggregated packages/sdk/CHANGELOG.md

Hotfix content (z.xor -> z.union, zod floor bump) is the cherry-pick
of #1790 that already landed on main, so no source changes here.

Dependencies in package.json are intentionally NOT brought over from
the release branch — main has progressed past 0.9.1 on several
internal packages (e.g. @qvac/llm-llamacpp 0.14.4 -> 0.17.1,
@qvac/translation-nmtcpp 0.6.10 -> 2.0.1, react-native-bare-kit
0.11.5 -> 0.12.3) and a blind merge would regress them. Only the
version field is changed, matching the 0.9.1 backmerge precedent (#1726).

* chore[skiplog]: drop package.json version bump from backmerge to avoid conflict with 0.10.0 PR

PR #1865 (the 0.10.0 release) is open against main and bumps
packages/sdk/package.json version 0.9.1 -> 0.10.0. This backmerge
was bumping the same line 0.9.1 -> 0.9.2, so whichever lands second
hits a conflict on that single line.

Since main is moving to 0.10.0 directly (the 0.9.2 hotfix is a
separate release line), drop the package.json change from this
backmerge and let #1865 own the version bump. Main's package.json
will briefly say 0.9.1 while CHANGELOG.md lists 0.9.2 as the latest
shipped version, but that's transient — #1865 overwrites it to
0.10.0 anyway.

Keep the changelog artifacts (changelog/0.9.2/ folder + the
prepended ## [0.9.2] entry in aggregated CHANGELOG.md) so main
retains a record of the 0.9.2 release in its history.

---------

Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com>
tamer-hassan-tether pushed a commit that referenced this pull request May 5, 2026
* QVAC-18184 chore[notask|skiplog]: backmerge release sdk 0.9.2

Brings the 0.9.2 release artifacts back into main now that
@qvac/sdk@0.9.2 has been published to npm (`latest` dist-tag,
2026-05-01 10:09 UTC).

- Bump packages/sdk/package.json: 0.9.1 -> 0.9.2
- Add packages/sdk/changelog/0.9.2/CHANGELOG.md and CHANGELOG_LLM.md
- Prepend 0.9.2 entry to aggregated packages/sdk/CHANGELOG.md

Hotfix content (z.xor -> z.union, zod floor bump) is the cherry-pick
of #1790 that already landed on main, so no source changes here.

Dependencies in package.json are intentionally NOT brought over from
the release branch — main has progressed past 0.9.1 on several
internal packages (e.g. @qvac/llm-llamacpp 0.14.4 -> 0.17.1,
@qvac/translation-nmtcpp 0.6.10 -> 2.0.1, react-native-bare-kit
0.11.5 -> 0.12.3) and a blind merge would regress them. Only the
version field is changed, matching the 0.9.1 backmerge precedent (#1726).

* chore[skiplog]: drop package.json version bump from backmerge to avoid conflict with 0.10.0 PR

PR #1865 (the 0.10.0 release) is open against main and bumps
packages/sdk/package.json version 0.9.1 -> 0.10.0. This backmerge
was bumping the same line 0.9.1 -> 0.9.2, so whichever lands second
hits a conflict on that single line.

Since main is moving to 0.10.0 directly (the 0.9.2 hotfix is a
separate release line), drop the package.json change from this
backmerge and let #1865 own the version bump. Main's package.json
will briefly say 0.9.1 while CHANGELOG.md lists 0.9.2 as the latest
shipped version, but that's transient — #1865 overwrites it to
0.10.0 anyway.

Keep the changelog artifacts (changelog/0.9.2/ folder + the
prepended ## [0.9.2] entry in aggregated CHANGELOG.md) so main
retains a record of the 0.9.2 release in its history.

---------

Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com>
Proletter pushed a commit that referenced this pull request May 24, 2026
…otes (#1865)

Tooling (scripts/sdk/generate-changelog-sdk-pod.cjs):
- Backmerge filter: PRs whose subject starts with `Backmerge` or
  `Merge release ...` are skipped during processSDKPRs (same shape as
  the existing [skiplog] filter).
- Companion filter + entry-count strip: new isCompanionEntry,
  stripEntryCount, cleanModelEntries helpers applied to the inline
  [mod] summary in CHANGELOG.md and the body of models.md. Recognises
  *_LEX / *_VOCAB / *_DATA / *_METADATA constant suffixes and any
  line containing the word "companion".
- Indented continuation lines for [mod] PRs: Added/Updated/Removed
  are emitted as indented sub-rows under the bullet (capped at
  MAX_INLINE_MODELS = 5 per section, "(and N more)" for the rest)
  instead of stuffed inline.
- Announcement-post generator: new --generate-announcement-post CLI
  flag (with optional --version) parses CHANGELOG.md via
  parseChangelogMarkdown and emits the Slack template (:qvac: header,
  NPM/GitHub/changelog links, conditional :warning: Breaking Changes,
  per-section bullets with <url> link wrapping and :boom: breaking
  markers, footer). Sections cap at MAX_ANNOUNCEMENT_BULLETS = 10
  with "... And much more, see full list in changelog :memo:" only
  when strictly more than 10.
- New helpers exported: parseChangelogMarkdown, generateAnnouncementPost.

Skill (.cursor/skills/sdk-changelog/SKILL.md):
- Step 4 (CHANGELOG_LLM.md) is now mandatory.
- New Step 5: generate announcement-post.txt (mandatory) with the
  gitignore note and template spec.
- NOTICE renumbered to Step 6.
- Documented all new policies (backmerge, companion, entry-count
  strip, indentation, max-bullets cap).
- CLI parameters table refreshed.

.gitignore:
- Added packages/*/changelog/*/announcement-post.txt. The post is a
  Slack copy-paste working artifact, not a release deliverable.

Release notes for 0.10.0:
- New packages/sdk/changelog/0.10.0/ folder with CHANGELOG.md,
  breaking.md, api.md, models.md, CHANGELOG_LLM.md.
- Root aggregate packages/sdk/CHANGELOG.md rebuilt with v0.10.0 at
  top.
- packages/sdk/NOTICE refreshed (191 models, 179 JS deps).
- packages/sdk/package.json bumped 0.9.1 -> 0.10.0.

Backmerge of release-sdk-0.10.0 -> main is a no-op for the release
artifacts (changelog, NOTICE) because they land here directly.
Proletter pushed a commit that referenced this pull request May 24, 2026
* QVAC-18184 chore[notask|skiplog]: backmerge release sdk 0.9.2

Brings the 0.9.2 release artifacts back into main now that
@qvac/sdk@0.9.2 has been published to npm (`latest` dist-tag,
2026-05-01 10:09 UTC).

- Bump packages/sdk/package.json: 0.9.1 -> 0.9.2
- Add packages/sdk/changelog/0.9.2/CHANGELOG.md and CHANGELOG_LLM.md
- Prepend 0.9.2 entry to aggregated packages/sdk/CHANGELOG.md

Hotfix content (z.xor -> z.union, zod floor bump) is the cherry-pick
of #1790 that already landed on main, so no source changes here.

Dependencies in package.json are intentionally NOT brought over from
the release branch — main has progressed past 0.9.1 on several
internal packages (e.g. @qvac/llm-llamacpp 0.14.4 -> 0.17.1,
@qvac/translation-nmtcpp 0.6.10 -> 2.0.1, react-native-bare-kit
0.11.5 -> 0.12.3) and a blind merge would regress them. Only the
version field is changed, matching the 0.9.1 backmerge precedent (#1726).

* chore[skiplog]: drop package.json version bump from backmerge to avoid conflict with 0.10.0 PR

PR #1865 (the 0.10.0 release) is open against main and bumps
packages/sdk/package.json version 0.9.1 -> 0.10.0. This backmerge
was bumping the same line 0.9.1 -> 0.9.2, so whichever lands second
hits a conflict on that single line.

Since main is moving to 0.10.0 directly (the 0.9.2 hotfix is a
separate release line), drop the package.json change from this
backmerge and let #1865 own the version bump. Main's package.json
will briefly say 0.9.1 while CHANGELOG.md lists 0.9.2 as the latest
shipped version, but that's transient — #1865 overwrites it to
0.10.0 anyway.

Keep the changelog artifacts (changelog/0.9.2/ folder + the
prepended ## [0.9.2] entry in aggregated CHANGELOG.md) so main
retains a record of the 0.9.2 release in its history.

---------

Co-authored-by: Dmytro Medvinskyi <functionsilence@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants