release: @workspacejson/spec + @workspacejson/rules 0.5.0 - #44
Merged
Conversation
Output of `pnpm changeset version` over the eight accumulated changesets. The fixed group moves 0.4.4 -> 0.5.0; the document profile does not move and stays at generated.specVersion 0.4. Also fixes the changelog parity assertion, which is META-332 and which this release is the first to actually hit. Two gates in this repository disagreed about the changelog heading format: packages/spec/src/index.test.ts required ## [0.5.0] (Keep a Changelog) scripts/verify-release-identity required ## 0.5.0 (Changesets) Changesets writes the bare form, so the test matched the first BRACKETED heading it could find — the historical ## [0.4.4] — and compared 0.4.4 against a manifest reading 0.5.0. The two assertions could not both be satisfied by any one file, so no changesets-generated release could ever have passed. The test now matches the release gate's form. Only the top heading is inspected; the bracketed entries below it are pre-Changesets history and are deliberately not matched, so a bracketed heading at the top would yield no match at all — the correct failure, since it would mean the released version was not versioned by Changesets. Test-only change: tests are not in `files` and do not ship, so it carries no changeset and does not move the version.
There was a problem hiding this comment.
qmarcelle has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
Reviewer's GuideRelease commit for @workspacejson/spec and @workspacejson/rules 0.5.0: versions are bumped, changelogs are updated to reflect eight prior changesets, and the release-parity test is fixed to match Changesets’ heading format so the release gates agree; no new runtime or schema behavior beyond what the accumulated changesets already introduced. Flow diagram for changelog heading parity testflowchart TD
start([Start release gate])
read["Read top heading from CHANGELOG.md"]
format["Expect heading in Changesets form: ## 0.5.0"]
check{"Does top heading match /^## 0\.5\.0$/?"}
ok["Use 0.5.0 from heading and compare to manifest versions"]
mismatch["Fail: changelog heading does not match manifest (not a Changesets release)"]
start --> read --> format --> check
check -->|yes| ok
check -->|no| mismatch
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The CHANGELOG heading format is now encoded in both
index.test.tsandscripts/verify-release-identity.mjs; consider centralizing the regex or deriving it from a shared helper to avoid the two gates drifting again on future format changes. - The changelog version regex
^## (\d+\.\d+\.\d+)\s*$withmwill match the first bare##line anywhere; if a non-release section (e.g.## Unreleased) is ever introduced above the latest version, this test will give a false positive—consider restricting the match to the first heading or asserting it appears immediately after the top-level title.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The CHANGELOG heading format is now encoded in both `index.test.ts` and `scripts/verify-release-identity.mjs`; consider centralizing the regex or deriving it from a shared helper to avoid the two gates drifting again on future format changes.
- The changelog version regex `^## (\d+\.\d+\.\d+)\s*$` with `m` will match the first bare `##` line anywhere; if a non-release section (e.g. `## Unreleased`) is ever introduced above the latest version, this test will give a false positive—consider restricting the match to the first heading or asserting it appears immediately after the top-level title.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



The release commit for the fixed group. Output of
pnpm changeset versionover the eight accumulated changesets, plus one gate fix this release was the first to actually hit.The version
0.4.4 → 0.5.0, both packages, derived by Changesets — not typed anywhere. The document profile does not move and stays at
generated.specVersion: "0.4". Package number and profile number are independent by policy; seedocs/versioning.md.Three of the eight changesets declare
minoron their own terms (ADR-003 A-009, ADR-003 A-010, ADR-006), so a patch bump was never available.META-332 is real, and I had it backwards
Two gates in this repository disagreed about the changelog heading format:
packages/spec/src/index.test.ts:290## [0.5.0]— Keep a Changelogscripts/verify-release-identity.mjs:187## 0.5.0— ChangesetsChangesets writes the bare form. So the test's regex skipped it, matched the first bracketed heading it could find — the historical
## [0.4.4]— and compared0.4.4against a manifest reading0.5.0.No Changesets-generated release could ever have passed both. META-332's original title — "Changesets-generated changelog headings break the release-commit parity test" — was exactly right. An earlier analysis on that issue called it inverted and self-resolving; that was wrong, and this PR is where it would have bitten.
The test now matches the release gate's form. Only the top heading is inspected; the bracketed entries below are pre-Changesets history and are deliberately not matched, so a bracketed heading at the top yields no match at all — the correct failure, since it would mean the version was not produced by Changesets.
Test-only change. Tests are not in
filesand do not ship, so it carries no changeset and does not move the version.Verification on this commit
check:release-identity --tag standard-v0.5.0check:architecture+ red testscheck:docscheck:adr+ red testsbuild·typecheck·testcheck:schema·check:examples·check:corpusrelease:verify-packs+ red testsrelease:verify-consumerAfter merge
Tag
standard-v0.5.0on the merged commit.release.ymlthen runs verify → boundary → environment approval, which waits on the steward → publish with provenance →release:verify-publishedagainst the real registry.NPM_TOKENis now scoped to thenpm-publishenvironment in both repositories with the repository-level copy deleted, sorelease.yml's comment about credential scoping is true for the first time. The environment requires a reviewer and is restricted to thestandard-v*tag namespace.No Linear release wiring is present. Live release mutations are disabled for this cut per the META-354 pilot verdict; the release is backfilled after registry verification from the verified version, commit and receipt.
Summary by Sourcery
Release both workspacejson packages as version 0.5.0 with widened compatibility, new analysis and path-identity APIs, clarified deprecated scoring behavior, and aligned package and schema metadata while keeping the document profile at 0.4.
New Features:
Bug Fixes:
Enhancements:
Build:
Documentation:
Tests:
Chores: