Repository navigation
chore(release): forward-merge 3.2.4 release records into main - #8153
Conversation
….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>
….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>
#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 - 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>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* 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
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
… 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>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* 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
Merge origin/3.2.x (v3.2.4, 5e6c4b0) into main, preserving 3.2.x ancestry. Adds the immutable dist/schemas/3.2.4, dist/compliance/3.2.4 and signed dist/protocol/3.2.4.tgz{,.sha256,.sig,.crt} records, byte-identical to the v3.2.4 tag and the published GitHub/CDN tuple. Updates the schema discovery indexes, published-versions registry, patch changelog and 3.2.4 release notes. Main keeps its package/lock/source version, pending 3.3 changesets, docs navigation and all 3.3 source content; every conflicted source file outside the 3.2.3->3.2.4 delta stays at main's prior reviewed resolution. Hosted-target tests now expect the 3.2 alias to resolve to 3.2.4 and verify that an exact 3.2.3 pin still resolves to 3.2.3. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…26 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>
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — forward-merge of published 3.2.4 release requires human/CODEOWNERS ratification.
This PR forward-merges the published 3.2.4 maintenance release into main: 2,213 added files under dist/schemas/3.2.4/, dist/compliance/3.2.4/, and dist/protocol/3.2.4.*, verified byte-identical to tag v3.2.4 (tree hashes c02d4567/5a82d524 and the four tuple blob hashes match 5e6c4b0). No existing semver artifact is modified or deleted, preserving release-artifact immutability. The 7 modified files (index.json/latest.json alias bumps keeping main's 3.1.27/3.0.27, CHANGELOG/release-notes 3.2.4 blocks, published-versions +3.2.4, a comment-only 026 vector with signed bytes unchanged, storyboards.test.ts) are internally consistent.
The reviewer surfaced no Critical/High/Medium code-correctness findings. However, the repo's governance bar treats a forward-merge of a published release as a human act requiring ratification, and review_decision is REVIEW_REQUIRED (not APPROVED). Under the prose-based hard gate, this release-governance decision cannot be auto-approved absent human/CODEOWNERS approval. No destructive change is present and high_risk is driven entirely by (added) files, which is normal release scaffolding — so the escalation is governance-driven, not defect-driven.
Escalation reasons
- Forward-merge of the published 3.2.4 release into main is a release-governance decision requiring explicit human/CODEOWNERS ratification;
review_decisionis REVIEW_REQUIRED, not APPROVED.
Why human review
- Forward-merge of published release v3.2.4 into main is a release-governance decision that requires explicit human/CODEOWNERS ratification; review_decision is REVIEW_REQUIRED, not APPROVED. Diff is mechanically clean (artifacts byte-identical to tag v3.2.4, no existing semver artifact modified/deleted) but ratification is a human act.
|
Addressing the release-governance review: the maintainer now explicitly requested in the current session, “8153 is blocked can we get it clean & out”. That authorizes cleanup and landing; this comment does not represent a GitHub APPROVED review. Please assess the final head The new merge includes current main without content conflicts. All 2,213 release records still match The failed original image smoke is repaired in code; final-head CI must verify the full image. The five failure annotations in the passing canonical release-fixture suite are deliberate Merge method must be merge, preserving |
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — release-governance ratification required.
PR #8153 forward-merges the immutable 3.2.4 release records into main. The reviewer confirms a clean pass: no Critical/High/Medium findings. The authored delta since the prior clean review (a Docker runtime-image dedup script scoped to immutable semver dirs, with content-equality verification, symlink skipping, idempotency, and fail-closed link/rename semantics) was reviewed closely and preserves the immutability invariant — adopters pinning dist/<semver>/ still get byte-identical content. No existing semver artifact is modified or deleted.
Why escalate rather than approve: this PR embodies a release-governance / breaking-class publication decision (forward-merge of a published release line into main). The repo's constitution treats ratification of a release as a human act, never auto-approved unless review_decision is APPROVED. Here review_decision is REVIEW_REQUIRED, so the prose hard gate's escalation instruction stands. The prior decision was also escalate for exactly this reason. Although the reviewer surfaced no fresh critical/high/medium findings (so row 6's sticky condition is not independently met), the standing prose governance gate for breaking/release-class changes applies on its own and requires human/CODEOWNERS ratification before merge.
All dist/** entries are (added) — new immutable artifacts, not modifications or deletions — so the high-risk flag alone is not the trigger; the release-ratification gate is.
Escalation reason: forward-merge of published release v3.2.4 into main is a release-governance decision requiring explicit human/CODEOWNERS ratification; review_decision is REVIEW_REQUIRED, not APPROVED.
Why human review
- Forward-merge of published release v3.2.4 into main is a release-governance / breaking-class publication decision that requires explicit human/CODEOWNERS ratification; review_decision is REVIEW_REQUIRED, not APPROVED. Diff is mechanically clean (artifacts byte-identical to tag v3.2.4, no existing semver artifact modified or deleted; the sole authored change is a fail-closed Docker dedup script that preserves immutability), but ratification is a human act per the constitution's hard gate on breaking/release-class changes.
|
The final-head review found no code defects, but classifies this forward merge as a new breaking-class publication decision. There is a concrete distinction to reassess:
Fresh CI evidence: the production image including external repository clones builds at 7,163 MiB, below the unchanged 7,424 MiB guard. The image deduplication saved 293,302,721 content bytes; every published path remains present. Remaining checks are still running. Requesting a fresh assessment of this classification on the same head |
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — forward-merge of published release v3.2.4 into main requires human/CODEOWNERS ratification.
This PR publishes release artifacts for v3.2.4 under dist/compliance/3.2.4/** (plus a fail-closed Docker dedup script and two new rejection tests). The reviewer reports the diff is mechanically clean: added artifacts are byte-identical to tag v3.2.4, no existing semver artifact is modified or deleted, symlinks are excluded, and the dedup script fails closed with byte/mode/uid/gid verification before an atomic rename. No Critical/High/Medium findings.
However, a forward-merge of a published release is a Breaking/release-class publication decision. The constitution's hard gate ("Breaking-class changes are never auto-approved") requires explicit human ratification: escalate unless review_decision is APPROVED. Here review_decision is unknown/none, so the gate is NOT satisfied. The prior run also escalated on this same release-governance basis.
Escalation reasons
- Forward-merge publishing release v3.2.4 (
dist/compliance/3.2.4/**) is a release-class / breaking-class publication decision that requires explicit human/CODEOWNERS ratification per the constitution's hard gate. review_decisionis notAPPROVED(unknown/none); the human-ratification gate is unsatisfied.
The sticky escalation (prior = escalate) persists here because the governance gate condition still holds; the diff remains clean with no new actionable findings, and the sole blocker is the human-ratification act.
Why human review
- Forward-merge publishing release v3.2.4 (dist/compliance/3.2.4/**) is a release-class/breaking-class publication decision requiring explicit human/CODEOWNERS ratification per the constitution's hard gate on breaking-class changes.
- review_decision is not APPROVED (unknown/none), so the human-ratification gate is not satisfied — human/CODEOWNERS review required before merge.
Keep both image-size fixes: hard-link dedup in the builder, then main's runtime-artifacts prune stage (#7496). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — release-class publication requires human/CODEOWNERS ratification.
This PR publishes stable release v3.2.4 by forward-merging into the release branch, adding the immutable versioned artifact tree under dist/compliance/3.2.4/** (2000+ added files). Per the repo constitution's hard gate, a release-class / breaking-class publication is never auto-approved — ratification is a human act — and must escalate unless review_decision is APPROVED.
Escalation reasons
- Forward-merge publishing release v3.2.4 (
dist/compliance/3.2.4/**) is a release-class publication decision requiring explicit human/CODEOWNERS ratification per the constitution's hard gate on breaking/release-class changes. review_decisionisREVIEW_REQUIRED(not APPROVED), so the human-ratification prose gate is not satisfied.- Prior decision was
escalate; the current run still presents the same release-publication evidence (the v3.2.4 artifact tree), so the escalation persists.
Findings: Reviewer reports a clean delta — the change since the prior head is #7496's runtime-artifact pruning already merged to main and pulled in via a clean merge; scripts/prune-runtime-artifacts.cjs is fail-closed (verify-before-prune ordering, verifyPrunedTree) and acts only on the Docker builder copy, leaving git/R2 release records immutable. No schema/source or changeset-surface changes, no critical/high/medium findings. Nonetheless the release remains a human-ratification gate.
Human/CODEOWNERS review required before merge.
Why human review
- Forward-merge publishing stable release v3.2.4 (dist/compliance/3.2.4/**) is a release-class publication requiring explicit human/CODEOWNERS ratification per the constitution's hard gate on breaking/release-class changes.
- review_decision is REVIEW_REQUIRED (not APPROVED) — the human-ratification prose gate is not satisfied.
- Prior decision was escalate and the same release-publication evidence (the v3.2.4 artifact tree) still exists in this run, so the escalation persists.
Forward-merge the published
v3.2.4maintenance release (origin/3.2.x@5e6c4b01113237234b440b6c95adb8c6e0a07ca9, the #8144 Version Packages merge) intomain, as a true merge commit that preserves the 3.2.x ancestry. This is the manual recipe in.agents/playbook.md§ Release lines: the automatic forward-merge cannot run because the earlier 3.2.2/3.2.3 forward merges (#7918, #7997) were squash-merged, so the new merge re-conflicts on 69 paths.What lands on main
Net diff vs
main: 2,213 added files and 7 modified.dist/schemas/3.2.4/(1,625 files),dist/compliance/3.2.4/(584), and the signed tupledist/protocol/3.2.4.tgz{,.sha256,.sig,.crt}.CHANGELOG.md(3.2.4 block),docs/reference/release-notes.mdx(3.2.4 section),dist/schemas/index.jsonanddist/schemas/latest.json(3.2/3.x aliases andlatest_stablenow 3.2.4; main's newer 3.1.27/3.0.27 aliases kept),static/compliance/published-versions.json(+3.2.4).static/compliance/source/test-vectors/request-signing/negative/026-non-ascii-host.json: comment now says the correction shipped in 3.2.4 and is carried on 3.3 (bytes of the signed vector are unchanged).server/tests/unit/storyboards.test.ts: the hosted 3.2 alias now resolves to 3.2.4; exact 3.2.3 and 3.2.4 pins load their own bundles through the hosted SDK.Main keeps its package/lock/schema-index version (3.2.1 pre-release state), pending 3.3 changesets and pre-mode, docs navigation,
.dockerignore, Addie'sDOCS_SCHEMA_RELEASESand all 3.3 source. The 3.2.4 docs snapshot is the separate bot PR #8150 and is not in this diff. No protocol changeset (forward-merge branch prefix skips the check).Immutable-byte evidence (no resigning, no regeneration)
v3.2.4(git ls-tree -rvs the merge index); tagv3.2.4^{}=5e6c4b01…= the merged 3.2.x tip.https://adcontextprotocol.org/protocol/3.2.4.tgz*, fetched with a curl UA; the default urllib UA gets a 403):3.2.4.tgz23,463,422 Bd5a0b167b323e5ee05ac2c8da9ca01c46a5cb5a7b988570f40f746bb8b15ae76;.sha25676 B0e038fc515a117426c22ba1245cffe823bedc209e36a9f81746c902ede529764;.sig96 B0cf40f20d768172cd98e54464624b7684846d3dcc6849df31f0ffcae08b56ac3;.crt2,476 B34d8d052bc50b8a821d8cf1e4d8ec51d5df2cc256bb13b4a649e9ee119d90aad.sha256sum -cpasses andcosign verify-blobpasses against identityhttps://github.com/adcontextprotocol/adcp/.github/workflows/release.yml@refs/heads/3.2.x, issuerhttps://token.actions.githubusercontent.com.schemas/andcompliance/trees match the committeddisttrees except thegenerated_attimestamps inschemas/manifest.jsonandcompliance/index.json, which are as published.Conflict resolution (all 69 reviewed)
v3.2.3andv3.2.4(their 3.2.x side is the 3.2.3 content that chore(release): forward-merge 3.2.3 release records #7997 already reconciled), so main's reviewed blob stays. This is not a blanket--ours: each was checked againstgit diff v3.2.3 origin/3.2.x.REVISION_UNREADABLEtext with main's compaction rules, thechannelsrow, the principal walkthrough link). The only text taken from 3.2.x is the 026 vector note above.package.json,package-lock.jsonandstatic/schemas/source/index.jsonwere restored to main's values after the textual merge took the 3.2.4 version.docs.json,.dockerignore,schema-tools.tsstay main's.Validation
ADCP_SKIP_STORYBOARD_MATRIX=1option was used; the matrix is advisory and CItraining-agent-storyboardsis authoritative and must be green on the final head.Review and maintainer instruction
On 2026-10-13 the maintainer requested: “8153 is blocked can we get it clean & out”. That instruction authorizes fixing the blockers and landing this published release. It is not a GitHub APPROVED review; the exact final head still needs fresh review and green checks before merge. The content-conflict audit above remains available for that review.
Follow-ups, not in this PR: the frozen docs snapshot #8150 needs this PR and the snapshot-extraction fix (separate PR) before it can be regenerated.
🤖 Generated with Claude Code
Open workspace in Conductor
Runtime image blocker repair (2026-10-13)
The original Production docs index smoke failed because
/appwas 7,491 MiB against the existing 7,424 MiB disk guard. Image assembly now hard-links byte-identical immutable schema, compliance, and configured docs snapshot files before copying them into the runtime image. This retains every published path and byte, excludes mutablelatestoutput and symlinks, preserves permissions/ownership, verifies bytes before linking, and fails the build on an unsuccessful replacement. The disk guard is unchanged. Generated.addie-reposis excluded from the build context; the authoritative repos stage still populates the runtime cache.Current
mainwas merged into this PR without conflicts so the release is tested with the latest platform changes while preserving the original 3.2.x merge ancestry.Fresh verification: all 2,213 added release files match
v3.2.4by Git blob; all four protocol tuple files match the GitHub Release downloads; checksum and official release-workflow cosign verification pass. Seven storage controls pass (path/byte preservation, idempotence, mutable-output isolation, permissions and symlink handling, failed-replacement path preservation, and byte/symlink substitution rejection); all 60 hosted-bundle tests pass with the pinned SDK; the published-compliance manifest check passes. A Docker multi-stage control confirms COPY preserves the hard links. Normal repository hooks passed: 12,562 server unit tests (31 intentional skips), 1,113 root unit tests on the final working tree, boundary guards, and TypeScript checks. Full production-image smoke and final-head CI remain authoritative.Release decision provenance and measured production image
The stable cut was human-approved on Version Packages #8144 (
bokelley, APPROVED at head60800c7dec3283d1da067eaef35347f6bb6bead7), merged on 2026-10-12, and published as signed tagv3.2.4(5e6c4b01113237234b440b6c95adb8c6e0a07ca9) at 09:29:41 UTC. This PR imports the exact published records; it does not make a new release cut or republish them.Historical head
3682e6c74c164159dc70d3f99c9ee19e55b73f51Production Docker build, including external repo clones, passed: 7,163 MiB against the unchanged 7,424 MiB guard. Image assembly saves 293,302,721 content bytes. No release bytes or paths are removed.CodeQL filesystem-race fix
Fix commit
3682e6c74c164159dc70d3f99c9ee19e55b73f51fixes the inline CodeQL finding at the original helper line 58. All content reads use an opened descriptor withO_NOFOLLOW;fstatand byte reads refer to that same inode. After creating a temporary hard link, the helper opens that actual link, verifies its complete bytes, permissions, and ownership, and only then atomically replaces the destination. Cleanup no longer checks a pathname before unlinking it. New controlled races substitute different bytes or a symlink during link creation and prove the published destination remains unchanged and the temporary link is removed. All seven storage controls, 1,113 root tests, guards, and type checks pass. Server source and the previously passing 12,562 server tests are unchanged. Fresh final-head CI and review are required.The governance reassessment attempt failed before running the reviewer because GitHub
pulls.listFilesclosed its connection. It produced no new verdict. The upstream human-approved stable-cut evidence above remains available for the fresh review.Latest main integration
Current head is
64643608a151c93a69ce84ab627d447ed014d09e, incorporating maind89129e884c4ea3acbd01d79747603f76ac6cd8f(#7496). The merge preserves both image-size repairs: builder hard-link deduplication, followed by main's disposable runtime-schema closure. Git release records stay immutable and all 2,213 imported release blobs still matchv3.2.4. The runtime closure retains all 49 published compliance/schema pairs, including 3.2.4, all four configured docs snapshots, current aliases, and the retained training anchors. Main's unused schema history is omitted only from the Fly runtime copy; public Git/R2 release records remain intact. The original deduplication statement above describes the builder stage, not a guarantee that every historical schema stays in the final Fly image after #7496.Fresh local checks on this head: eight pruning/closure controls and all seven descriptor/link controls pass. Both complete image/smoke checks and the full CI matrix restarted for this new head. Earlier image sizes and passing CI are historical evidence, not transferred final-head qualification. The resolved CodeQL fix is unchanged. The independent human GitHub approval requirement remains unsatisfied; no review or branch-protection bypass has been performed.