Repository navigation
chore(release): register 3.2.x and carry post-tag GA hygiene onto 3.2.x - #7860
Conversation
Register the 3.2.x branch (created from the v3.2.1 Version Packages merge c32bd78) with Release (push trigger, dispatch recovery case, and the storyboard verification gates), the release-state and changesets fences, Build Check, Changeset Check, CodeQL, Dependency Review, apps/web check, and training-agent storyboards. Add forward-merge-3.2.yml, a 3.2.x copy of forward-merge-3.1.yml, and cover it in the release-workflow immutability test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…stration training-agent-storyboards.yml is a protocol-scoped path (#7510), so changing it requires a changeset. A CI branch-filter change should not carry a release changeset, and policy forbids an empty one to satisfy CI. Register 3.2.x there in a follow-up that already carries a real 3.2.x patch changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The 3.2.1 GA Version Packages cut makes two tests fail: - mcp-schema-projection hardcoded surface_version '3.2.0'. Derive the expected active surface from package.json: x.y.0 while the line is in prerelease, the released package version once it is stable (3.2.1, since 3.2.0 is withdrawn). - hosted-compliance-version used the real 3.2 line as its RC-only fixture. Move the #7356 guard to an isolated fixture tree with an RC-only 3.3 line, and assert the RC resolves so the throw is not vacuous. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3dee3a4)
* chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93)
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated paths touched without an APPROVED review.
This PR registers the 3.2.x maintenance line across CI/release workflows and scripts: adding 3.2.x to branch lists, a faithful 3.1→3.2 copy of forward-merge-3.1.yml, lockstep immutability-test updates, and a clean cherry-pick removing the temporary storyboard-reuse step from release.yml. The reviewer found no Critical/High/Medium findings and the change reads as a mechanical, well-scoped CI/release-only update.
However, the PR modifies files under .github/workflows/**, which are under a deterministic hard approval gate (gated_paths: true), and review_decision is not APPROVED. Per decision rule row 2, the gate is not satisfied and the outcome must be escalate regardless of the clean diff. The non-blocking note (unchecked CI-green test-plan box; behavioral test:release-workflow gate is checked) does not affect the gate.
Escalation reasons
- Modifies gated workflow files (
.github/workflows/release.yml,forward-merge-3.2.ymladded, plus apps-web-check / build-check / changeset-check / codeql / dependency-review / training-agent-storyboards) matching.github/workflows/**; human/CODEOWNERS review (review_decision: APPROVED) is required before merge.
Why human review
- Touches gated path
.github/workflows/**(release.yml and 7 other workflow files, incl. new forward-merge-3.2.yml) while review_decision is not APPROVED — human/CODEOWNERS approval required to satisfy the hard approval gate. - This PR touches a path under a hard, non-overridable approval gate (.github/workflows/apps-web-check.yml (modified) matches
.github/workflows/**; .github/workflows/build-check.yml (modified) matches.github/workflows/**; .github/workflows/changeset-check.yml (modified) matches.github/workflows/**; .github/workflows/codeql.yml (modified) matches.github/workflows/**; .github/workflows/dependency-review.yml (modified) matches.github/workflows/**; .github/workflows/forward-merge-3.2.yml (added) matches.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**; .github/workflows/training-agent-storyboards.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'unknown', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated paths touched without an approving review.
This PR modifies and adds files under .github/workflows/**, which is a hard, path-based approval gate (gated_paths: true), and review_decision is not APPROVED. Per decision rule row 2, the outcome must be escalate until a human/CODEOWNERS review approves.
Escalation reasons
- Touches gated CI workflow files under
.github/workflows/**(modified: apps-web-check.yml, build-check.yml, changeset-check.yml, codeql.yml, dependency-review.yml, release.yml; added: forward-merge-3.2.yml). Human/CODEOWNERS review is required.
Medium findings (non-blocking, for the human reviewer)
- release.yml — 3.2.x added to the release-push storyboard gate, but training-agent-storyboards.yml (the authoritative per-PR gate) was not updated, so storyboard-affecting PRs into 3.2.x skip the matrix until the release push.
The review itself is clean (one Medium, no critical/high), but the gated-path rule governs: this cannot auto-approve without an approving review.
Why human review
- Touches gated CI workflow files under .github/workflows/** (6 modified, 1 added) and review_decision is not APPROVED — human/CODEOWNERS review required (decision rule row 2).
- Non-blocking medium: release.yml adds 3.2.x to the release-push storyboard gate but training-agent-storyboards.yml (per-PR gate) was not updated — storyboard PRs into 3.2.x skip the matrix until release push.
- This PR touches a path under a hard, non-overridable approval gate (.github/workflows/apps-web-check.yml (modified) matches
.github/workflows/**; .github/workflows/build-check.yml (modified) matches.github/workflows/**; .github/workflows/changeset-check.yml (modified) matches.github/workflows/**; .github/workflows/codeql.yml (modified) matches.github/workflows/**; .github/workflows/dependency-review.yml (modified) matches.github/workflows/**; .github/workflows/forward-merge-3.2.yml (added) matches.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'unknown', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated workflow paths touched without an APPROVED review decision.
This PR modifies/adds files under .github/workflows/**, a hard, non-overridable approval gate (gated_paths: true), and the current review_decision is unknown/none — not APPROVED. Decision table row 2 therefore fires: outcome must be escalate until a human/CODEOWNERS approval is recorded.
The reviewer found no Critical/High/Medium code-correctness issues. The delta since the prior review is 3.2.x GA release hygiene: an append-only dist/docs/3.2.1 snapshot (all added, immutability preserved — no in-place edits to existing semver artifacts), docs default flips, and schema-tools.ts + test cherry-picks verified byte-identical to already-merged origin/main. High-risk flag is driven only by (added) dist files plus one (modified) schema-tools.ts with no findings against it — none of this is escalation-worthy on its own.
The sole blocker is the unsatisfied hard approval gate. This is also consistent with the prior escalate decision, which stands because the gate remains unsatisfied.
Escalation reasons
- Touches gated path
.github/workflows/**(release.yml, codeql.yml, dependency-review.yml, build-check.yml, changeset-check.yml, apps-web-check.yml, and new forward-merge-3.2.yml) whilereview_decisionis notAPPROVED— human/CODEOWNERS approval required to satisfy the hard approval gate.
Why human review
- Touches gated path
.github/workflows/**(release.yml, codeql.yml, dependency-review.yml, build-check.yml, changeset-check.yml, apps-web-check.yml, and the new forward-merge-3.2.yml) while review_decision is not APPROVED — human/CODEOWNERS approval required to satisfy the hard, non-overridable approval gate. - This PR touches a path under a hard, non-overridable approval gate (.github/workflows/apps-web-check.yml (modified) matches
.github/workflows/**; .github/workflows/build-check.yml (modified) matches.github/workflows/**; .github/workflows/changeset-check.yml (modified) matches.github/workflows/**; .github/workflows/codeql.yml (modified) matches.github/workflows/**; .github/workflows/dependency-review.yml (modified) matches.github/workflows/**; .github/workflows/forward-merge-3.2.yml (added) matches.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'unknown', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated path touched without an APPROVED review.
This PR modifies/adds files under .github/workflows/**, a hard, non-overridable approval gate (gated_paths: true), while review_decision is unknown/none (not APPROVED). Per decision rule row 2, this must escalate until a human/CODEOWNERS approval is recorded.
Escalation reasons
- Touches gated path
.github/workflows/**— modified: apps-web-check.yml, build-check.yml, changeset-check.yml, codeql.yml, dependency-review.yml, release.yml; added: forward-merge-3.2.yml — and the current GitHub review decision is not APPROVED. Human/CODEOWNERS review is required to satisfy this gate.
Blocking findings
- None. The reviewer's delta pass found no Critical/High/Medium findings; the changed files are sound (published-versions.json dist-tag cleanup is append-only/non-wire; docs-nav bootstrap guard is self-expiring and SHA-pinned). The escalation is purely the deterministic gated-path gate, not a code defect.
This sustains the prior escalate, which remains correct because the gated-path condition still holds; it will lift automatically once review_decision becomes APPROVED.
Why human review
- Touches gated path
.github/workflows/**(modified: apps-web-check.yml, build-check.yml, changeset-check.yml, codeql.yml, dependency-review.yml, release.yml; added: forward-merge-3.2.yml) while review_decision is not APPROVED — human/CODEOWNERS approval required to satisfy the hard, non-overridable approval gate. - This PR touches a path under a hard, non-overridable approval gate (.github/workflows/apps-web-check.yml (modified) matches
.github/workflows/**; .github/workflows/build-check.yml (modified) matches.github/workflows/**; .github/workflows/changeset-check.yml (modified) matches.github/workflows/**; .github/workflows/codeql.yml (modified) matches.github/workflows/**; .github/workflows/dependency-review.yml (modified) matches.github/workflows/**; .github/workflows/forward-merge-3.2.yml (added) matches.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'unknown', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated-path approval gate not satisfied.
This PR touches files under a hard, non-overridable approval gate (.github/workflows/**) and the current GitHub review_decision is unknown/none, not APPROVED. Per decision rule #2, the gate is NOT satisfied, so the outcome must be escalate (no blocking findings exist, so not request-changes).
Escalation reasons
- Modifies/adds
.github/workflows/**files (apps-web-check.yml, build-check.yml, changeset-check.yml, codeql.yml, dependency-review.yml, release.yml [modified]; forward-merge-3.2.yml [added]; training-agent-storyboards.yml [modified]) whilereview_decisionis not APPROVED — human/CODEOWNERS approval required to satisfy the hard, non-overridable approval gate.
Review notes
- Reviewer found no Critical/High/Medium findings. The storyboard-branch-registration carve-out in
scripts/check-changeset-protocol-scope.cjsis narrow, fail-closed, and test-covered; thetraining-agent-storyboards.yml3.2.x trigger addition is clean. No code concerns. - This is a subsequent pass following a prior
escalate. The prior escalation was driven solely by the gated-path gate (no findings), and that gate still applies because no human/CODEOWNERS approval is recorded. The escalation persists on the deterministic gate, not on sticky row 6 (which requires fresh findings).
The gate lifts automatically once review_decision becomes APPROVED; the clean diff can then approve on re-run.
Why human review
- Touches gated path
.github/workflows/**(modified: apps-web-check.yml, build-check.yml, changeset-check.yml, codeql.yml, dependency-review.yml, release.yml, training-agent-storyboards.yml; added: forward-merge-3.2.yml) while review_decision is not APPROVED — human/CODEOWNERS approval required to satisfy the hard, non-overridable approval gate. - This PR touches a path under a hard, non-overridable approval gate (.github/workflows/apps-web-check.yml (modified) matches
.github/workflows/**; .github/workflows/build-check.yml (modified) matches.github/workflows/**; .github/workflows/changeset-check.yml (modified) matches.github/workflows/**; .github/workflows/codeql.yml (modified) matches.github/workflows/**; .github/workflows/dependency-review.yml (modified) matches.github/workflows/**; .github/workflows/forward-merge-3.2.yml (added) matches.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**; .github/workflows/training-agent-storyboards.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'unknown', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
* docs(release): backport the 3.2.1 docs snapshot and GA default to 3.2.x (#7868) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * test(docs): treat the stable branch as its own docs surface in CI On the stable maintenance branch (or a PR into it), comparing navigation against the branch's own pre-change tip rejects every navigation change, including the GA flip that makes it the stable surface. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(release): register 3.2.x and carry post-tag GA hygiene onto 3.2.x (#7860) * chore(ci): add 3.2.x maintenance line to release and CI workflows Register the 3.2.x branch (created from the v3.2.1 Version Packages merge c32bd78) with Release (push trigger, dispatch recovery case, and the storyboard verification gates), the release-state and changesets fences, Build Check, Changeset Check, CodeQL, Dependency Review, apps/web check, and training-agent storyboards. Add forward-merge-3.2.yml, a 3.2.x copy of forward-merge-3.1.yml, and cover it in the release-workflow immutability test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * revert(release): restore the full storyboard gate in verify-release (#7840) Reverts the temporary 3.2.1 GA reuse of the CI storyboard verification (#7836) now that v3.2.1 is published. The proper replacement is tracked in Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a2f12a4) * chore(ci): leave training-agent-storyboards.yml out of the 3.2.x registration training-agent-storyboards.yml is a protocol-scoped path (#7510), so changing it requires a changeset. A CI branch-filter change should not carry a release changeset, and policy forbids an empty one to satisfy CI. Register 3.2.x there in a follow-up that already carries a real 3.2.x patch changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test: stop assuming the 3.2 line has no stable release (#7839) The 3.2.1 GA Version Packages cut makes two tests fail: - mcp-schema-projection hardcoded surface_version '3.2.0'. Derive the expected active surface from package.json: x.y.0 while the line is in prerelease, the released package version once it is stable (3.2.1, since 3.2.0 is withdrawn). - hosted-compliance-version used the real 3.2 line as its RC-only fixture. Move the #7356 guard to an isolated fixture tree with an RC-only 3.3 line, and assert the RC resolves so the throw is not vacuous. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3dee3a4) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * fix(compliance): track active SDK publication tags * test(docs): allow exact 3.2 release branch bootstrap * test(docs): pin GA branch bootstrap commit for shallow CI * ci(release): gate 3.2 storyboards before maintenance merges --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* docs(release): backport the 3.2.1 docs snapshot and GA default to 3.2.x (#7868) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * test(docs): treat the stable branch as its own docs surface in CI On the stable maintenance branch (or a PR into it), comparing navigation against the branch's own pre-change tip rejects every navigation change, including the GA flip that makes it the stable surface. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(release): register 3.2.x and carry post-tag GA hygiene onto 3.2.x (#7860) * chore(ci): add 3.2.x maintenance line to release and CI workflows Register the 3.2.x branch (created from the v3.2.1 Version Packages merge c32bd78) with Release (push trigger, dispatch recovery case, and the storyboard verification gates), the release-state and changesets fences, Build Check, Changeset Check, CodeQL, Dependency Review, apps/web check, and training-agent storyboards. Add forward-merge-3.2.yml, a 3.2.x copy of forward-merge-3.1.yml, and cover it in the release-workflow immutability test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * revert(release): restore the full storyboard gate in verify-release (#7840) Reverts the temporary 3.2.1 GA reuse of the CI storyboard verification (#7836) now that v3.2.1 is published. The proper replacement is tracked in Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a2f12a4) * chore(ci): leave training-agent-storyboards.yml out of the 3.2.x registration training-agent-storyboards.yml is a protocol-scoped path (#7510), so changing it requires a changeset. A CI branch-filter change should not carry a release changeset, and policy forbids an empty one to satisfy CI. Register 3.2.x there in a follow-up that already carries a real 3.2.x patch changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test: stop assuming the 3.2 line has no stable release (#7839) The 3.2.1 GA Version Packages cut makes two tests fail: - mcp-schema-projection hardcoded surface_version '3.2.0'. Derive the expected active surface from package.json: x.y.0 while the line is in prerelease, the released package version once it is stable (3.2.1, since 3.2.0 is withdrawn). - hosted-compliance-version used the real 3.2 line as its RC-only fixture. Move the #7356 guard to an isolated fixture tree with an RC-only 3.3 line, and assert the RC resolves so the throw is not vacuous. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3dee3a4) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * fix(compliance): track active SDK publication tags * test(docs): allow exact 3.2 release branch bootstrap * test(docs): pin GA branch bootstrap commit for shallow CI * ci(release): gate 3.2 storyboards before maintenance merges --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> * docs(accounts): clarify account references before provisioning (#7871) (#7884) * docs(accounts): clarify account references before provisioning Spells out what the error table and cache_scope contract already required. A buyer-declared natural key resolves only after provisioning. An unresolved account that the seller doesn't lazily provision returns ACCOUNT_NOT_FOUND even where account is optional. Buyers omit unprovisioned keys and send brand. Account errors are not seller-health signals. An echoed account_id is a seller handle. ACCOUNT_NOT_FOUND recovery is now consistent. * docs(signals): note unresolved account behavior on get_signals --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs: fix contradictions between trust docs and the spec (#7881) (#7890) * docs: fix contradictions between trust docs and the spec - verification overview: anchor on the agent URL, not response signing - relationship_trust values and house_domain instead of parent_house - direct, delegated, and ad_network all pair with delegation_type - missing authorized_operators listing means reject or manual review - agents[] examples instead of deprecated brand_agent/rights_agent - schema spec links point to by-layer/L1/security * docs: address review on trust docs consistency - name verify_brand_claim(s) as the only signed response payloads - give the pinned webhook key adcp_use and key_ops - one URL per agent role; scope the Brand Agent resolution step - fix leftover glossary, brand-agent checklist, and schema example * docs: keep the pin example to schema-declared key fields --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(media-buy): backport opportunity usage advisory to 3.2 (#7912) * Version Packages (#7888) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * test(compliance): cover the released 3.2.2 hosted bundle --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* docs(release): backport the 3.2.1 docs snapshot and GA default to 3.2.x (#7868) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * test(docs): treat the stable branch as its own docs surface in CI On the stable maintenance branch (or a PR into it), comparing navigation against the branch's own pre-change tip rejects every navigation change, including the GA flip that makes it the stable surface. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(release): register 3.2.x and carry post-tag GA hygiene onto 3.2.x (#7860) * chore(ci): add 3.2.x maintenance line to release and CI workflows Register the 3.2.x branch (created from the v3.2.1 Version Packages merge c32bd78) with Release (push trigger, dispatch recovery case, and the storyboard verification gates), the release-state and changesets fences, Build Check, Changeset Check, CodeQL, Dependency Review, apps/web check, and training-agent storyboards. Add forward-merge-3.2.yml, a 3.2.x copy of forward-merge-3.1.yml, and cover it in the release-workflow immutability test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * revert(release): restore the full storyboard gate in verify-release (#7840) Reverts the temporary 3.2.1 GA reuse of the CI storyboard verification (#7836) now that v3.2.1 is published. The proper replacement is tracked in Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a2f12a4) * chore(ci): leave training-agent-storyboards.yml out of the 3.2.x registration training-agent-storyboards.yml is a protocol-scoped path (#7510), so changing it requires a changeset. A CI branch-filter change should not carry a release changeset, and policy forbids an empty one to satisfy CI. Register 3.2.x there in a follow-up that already carries a real 3.2.x patch changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test: stop assuming the 3.2 line has no stable release (#7839) The 3.2.1 GA Version Packages cut makes two tests fail: - mcp-schema-projection hardcoded surface_version '3.2.0'. Derive the expected active surface from package.json: x.y.0 while the line is in prerelease, the released package version once it is stable (3.2.1, since 3.2.0 is withdrawn). - hosted-compliance-version used the real 3.2 line as its RC-only fixture. Move the #7356 guard to an isolated fixture tree with an RC-only 3.3 line, and assert the RC resolves so the throw is not vacuous. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3dee3a4) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * fix(compliance): track active SDK publication tags * test(docs): allow exact 3.2 release branch bootstrap * test(docs): pin GA branch bootstrap commit for shallow CI * ci(release): gate 3.2 storyboards before maintenance merges --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> * docs(accounts): clarify account references before provisioning (#7871) (#7884) * docs(accounts): clarify account references before provisioning Spells out what the error table and cache_scope contract already required. A buyer-declared natural key resolves only after provisioning. An unresolved account that the seller doesn't lazily provision returns ACCOUNT_NOT_FOUND even where account is optional. Buyers omit unprovisioned keys and send brand. Account errors are not seller-health signals. An echoed account_id is a seller handle. ACCOUNT_NOT_FOUND recovery is now consistent. * docs(signals): note unresolved account behavior on get_signals --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs: fix contradictions between trust docs and the spec (#7881) (#7890) * docs: fix contradictions between trust docs and the spec - verification overview: anchor on the agent URL, not response signing - relationship_trust values and house_domain instead of parent_house - direct, delegated, and ad_network all pair with delegation_type - missing authorized_operators listing means reject or manual review - agents[] examples instead of deprecated brand_agent/rights_agent - schema spec links point to by-layer/L1/security * docs: address review on trust docs consistency - name verify_brand_claim(s) as the only signed response payloads - give the pinned webhook key adcp_use and key_ops - one URL per agent role; scope the Brand Agent resolution step - fix leftover glossary, brand-agent checklist, and schema example * docs: keep the pin example to schema-declared key fields --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(media-buy): backport opportunity usage advisory to 3.2 (#7912) * Version Packages (#7888) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(release): backport conformance corrections for 3.2.3 (#7941) * fix(release): backport conformance corrections for 3.2.3 * fix(training-agent): backport scoped guaranteed task completion * fix(compliance): backport validate_input capability gates * fix(compliance): backport evaluator feature membership * Version Packages (#7975) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(signing): backport A2A required_for resolution security errata to 3.2.x (#7981) * fix(signing): backport A2A required_for resolution security errata to 3.2.x Backport of #7945 (GHSA-2pm6-6mc8-8xcm, #7820) to 3.2.x: required_for / supported_for / warn_for match the operation resolved from the request, so they apply over A2A, with fail-closed resolution and 33 tiered conformance vectors. Excludes the 3.3-only request_signing.operation_sources marker. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test(signing): tag the pre-check ordering vector as contradiction-resolution Rule 4 (resolution before signature-header checks) is a core clause, so its only vector (negative/018) belongs in the MUST tier. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> * chore(release): restore unpublished 3.2.3 for security errata (#7980) * Version Packages (#7994) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * test(release): expect the registered 3.2.3 hosted target --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* docs(release): backport the 3.2.1 docs snapshot and GA default to 3.2.x (#7868) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * test(docs): treat the stable branch as its own docs surface in CI On the stable maintenance branch (or a PR into it), comparing navigation against the branch's own pre-change tip rejects every navigation change, including the GA flip that makes it the stable surface. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * chore(release): register 3.2.x and carry post-tag GA hygiene onto 3.2.x (#7860) * chore(ci): add 3.2.x maintenance line to release and CI workflows Register the 3.2.x branch (created from the v3.2.1 Version Packages merge c32bd78) with Release (push trigger, dispatch recovery case, and the storyboard verification gates), the release-state and changesets fences, Build Check, Changeset Check, CodeQL, Dependency Review, apps/web check, and training-agent storyboards. Add forward-merge-3.2.yml, a 3.2.x copy of forward-merge-3.1.yml, and cover it in the release-workflow immutability test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * revert(release): restore the full storyboard gate in verify-release (#7840) Reverts the temporary 3.2.1 GA reuse of the CI storyboard verification (#7836) now that v3.2.1 is published. The proper replacement is tracked in Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit a2f12a4) * chore(ci): leave training-agent-storyboards.yml out of the 3.2.x registration training-agent-storyboards.yml is a protocol-scoped path (#7510), so changing it requires a changeset. A CI branch-filter change should not carry a release changeset, and policy forbids an empty one to satisfy CI. Register 3.2.x there in a follow-up that already carries a real 3.2.x patch changeset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test: stop assuming the 3.2 line has no stable release (#7839) The 3.2.1 GA Version Packages cut makes two tests fail: - mcp-schema-projection hardcoded surface_version '3.2.0'. Derive the expected active surface from package.json: x.y.0 while the line is in prerelease, the released package version once it is stable (3.2.1, since 3.2.0 is withdrawn). - hosted-compliance-version used the real 3.2 line as its RC-only fixture. Move the #7356 guard to an isolated fixture tree with an RC-only 3.3 line, and assert the RC resolves so the throw is not vacuous. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3dee3a4) * chore: snapshot docs for v3.2.1 (#7842) * chore: snapshot docs for v3.2.1 * test: derive docs version selectors from docs.json after the 3.2.1 snapshot The v3.2.1 docs snapshot makes 3.2 the default and retires the 3.2-rc and 3.2-beta selectors, breaking tests pinned to the pre-GA navigation. - audio-radio-formats: check the radio guide in every 3.2 navigation in docs.json instead of requiring a 3.2-beta entry. - docs-indexer: resolve the default and newest 3.2 selectors at run time; pin the default to docs.json's default stable snapshot; keep the 3.1/3.0/2.5 no-leak assertions; accept either 3.2 format registry guide. - addie/schema-tools: build the selector matrix from DOCS_SCHEMA_RELEASES and DEFAULT_SCHEMA_VERSION; map pinned 3.2 prerelease $schema URLs to the live channel or, after GA, the stable 3.2 snapshot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 30ec290) * docs: align the GA banner with the 3.2 message (#7843) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit fe3bf93) * fix(compliance): track active SDK publication tags * test(docs): allow exact 3.2 release branch bootstrap * test(docs): pin GA branch bootstrap commit for shallow CI * ci(release): gate 3.2 storyboards before maintenance merges --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> * docs(accounts): clarify account references before provisioning (#7871) (#7884) * docs(accounts): clarify account references before provisioning Spells out what the error table and cache_scope contract already required. A buyer-declared natural key resolves only after provisioning. An unresolved account that the seller doesn't lazily provision returns ACCOUNT_NOT_FOUND even where account is optional. Buyers omit unprovisioned keys and send brand. Account errors are not seller-health signals. An echoed account_id is a seller handle. ACCOUNT_NOT_FOUND recovery is now consistent. * docs(signals): note unresolved account behavior on get_signals --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs: fix contradictions between trust docs and the spec (#7881) (#7890) * docs: fix contradictions between trust docs and the spec - verification overview: anchor on the agent URL, not response signing - relationship_trust values and house_domain instead of parent_house - direct, delegated, and ad_network all pair with delegation_type - missing authorized_operators listing means reject or manual review - agents[] examples instead of deprecated brand_agent/rights_agent - schema spec links point to by-layer/L1/security * docs: address review on trust docs consistency - name verify_brand_claim(s) as the only signed response payloads - give the pinned webhook key adcp_use and key_ops - one URL per agent role; scope the Brand Agent resolution step - fix leftover glossary, brand-agent checklist, and schema example * docs: keep the pin example to schema-declared key fields --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(media-buy): backport opportunity usage advisory to 3.2 (#7912) * Version Packages (#7888) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(release): backport conformance corrections for 3.2.3 (#7941) * fix(release): backport conformance corrections for 3.2.3 * fix(training-agent): backport scoped guaranteed task completion * fix(compliance): backport validate_input capability gates * fix(compliance): backport evaluator feature membership * Version Packages (#7975) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix(signing): backport A2A required_for resolution security errata to 3.2.x (#7981) * fix(signing): backport A2A required_for resolution security errata to 3.2.x Backport of #7945 (GHSA-2pm6-6mc8-8xcm, #7820) to 3.2.x: required_for / supported_for / warn_for match the operation resolved from the request, so they apply over A2A, with fail-closed resolution and 33 tiered conformance vectors. Excludes the 3.3-only request_signing.operation_sources marker. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test(signing): tag the pre-check ordering vector as contradiction-resolution Rule 4 (resolution before signature-header checks) is a core clause, so its only vector (negative/018) belongs in the MUST tier. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> * chore(release): restore unpublished 3.2.3 for security errata (#7980) * Version Packages (#7994) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * chore(docs): sync 3.2.3 maintenance snapshot navigation (#8000) * fix(release): backport reporting and conformance fixes for 3.2.4 (#8139) * fix(release): backport reporting and conformance fixes for 3.2.4 * test(ledger): backport synchronized recovery fixtures * docs(release): finalize the 3.2.4 maintenance narrative * Version Packages * test(release): pin the 3.2.4 hosted compliance bundle and align the 026 vector note Load the explicitly pinned 3.2.4 bundle with the hosted SDK alongside the other 3.2 pins, so the new alias target is exercised end to end. The non-ASCII host vector's comment now records that the correction shipped in 3.2.4 and is carried on 3.3. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(release): verify artifact links through file descriptors --------- Co-authored-by: aao-release-bot[bot] <280565558+aao-release-bot[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Summary
This is the
3.2.xside of #7859 (cut-minor-ga.mdPhase 10, step 25). Workflow triggers for pushes and PRs on3.2.xare read from3.2.x's own copy of the workflows. This PR also brings the post-tag release hygiene that landed onmainafterv3.2.1onto3.2.x.8fb4cc329+49b681c883.2.xto the release, CI, and fence branch lists, addsforward-merge-3.2.yml, and updates the immutability test.training-agent-storyboards.ymlis left out (see #7859).8e76141cfrelease.ymlis byte-identical tomain.532b8ccea2564d32bbv3.2.1docs snapshot (dist/docs/3.2.1,docs.jsondefault →3.2).ec7aa2a2aAfter these commits,
docs.jsonanddist/docs/3.2.1here are identical tomain.Why the docs snapshot is urgent
tests/docs-nav-validation.test.cjs("default navigation matches the stable release branch surface") comparesmain's default docs nav withorigin/<default>.x. The test is designed to start comparing against3.2.xonce the GA flip makes3.2the default. That moment came when3.2.xwas cut atc32bd78c53. But the snapshot landed onmainafter the tag, so3.2.xstill defaults to3.1. Until this PR merges,Canonical tests (2/4)fails on everymainPR (seen on #7859).The branch bootstrap guard now accepts only the exact
v3.2.1commit while3.2.xstill has the old docs default. After this PR advances the branch, route parity is enforced again. The guard passes locally against both the tag and this PR's updated docs surface.What runs after merge
release.ymlruns on3.2.x. No changesets are pending andv3.2.1is tagged, so it should do nothing.forward-merge-3.2.ymlruns. The tree should equalmainfor these paths, so it should skip or produce a trivial merge.Test plan
npm run test:release-workflowpasses on the registration commits.docs.json,dist/docs/3.2.1, and the cherry-picked tests are byte-identical toorigin/main.npm run test:docs-navpasses 49/49 against the current3.2.xtag.npm run check:published-compliancepasses with active npm tags.🤖 Generated with Claude Code
CI bootstrap fixes
This PR now also carries the active SDK publication-tag manifest from #7861 and the exact-tag docs-nav bootstrap guard. These fix the unrelated
Build and static checksnpmbetalookup and self-referentialCanonical tests (2/4)failure that blocked the release branch PR. The storyboard trigger review finding is fixed inee5c10c800;node tests/changeset-protocol-scope.test.cjsand the real-branch scope check pass.