fix: verify independently frozen packaging authorities - #203
Merged
Conversation
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
It modifies core packaged provenance/authority verification and workflow byte bindings, which warrants final human review and end-to-end packaged CI confirmation.
Pull request overview
This PR repairs packaged Phase 1 provenance verification for independently pinned “frozen” authorities (Chat production vs harness, SDK candidate vs evidence) by verifying exact identities + clean checkouts + locked digests/blobs, rather than requiring ancestry between revisions that are known to diverge.
Changes:
- Update packaged authority checks to validate exact revisions/trees (Chat) and exact revisions (SDK), enforce clean checkouts, and retain existing locked-blob/digest and package-identity verification.
- Add targeted regression tests to ensure the revised authority model accepts correct inputs and rejects substituted revisions/digests/dirty checkouts.
- Update conformance documentation and workflow script-byte bindings to reflect the modified verification behavior and updated script digest/size.
File summaries
| File | Description |
|---|---|
| src/phase1-conformance.test.ts | Adds regression coverage for independent SDK candidate/evidence binding and for frozen Chat authority (non-Windows). |
| scripts/phase1-conformance.mjs | Revises packaged authority verification to validate exact identities directly (no ancestry requirement), using clean-checkout + identity helpers. |
| scripts/phase1-conformance.d.mts | Exposes updated authority-check functions via type declarations. |
| docs/phase1-conformance.md | Updates documented provenance model to match the independent-authority verification rules and refreshes script hash metadata. |
| .github/workflows/client-v1-conformance.yml | Updates workflow byte-bindings for the changed scripts/phase1-conformance.mjs size and SHA-256. |
Review details
- Files reviewed: 5/5 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This was referenced Sep 10, 2026
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.
Packaged conformance rejects the frozen Chat and SDK revisions because it requires ancestry that those independently pinned authorities do not have. This change verifies their exact identities directly so the existing frozen inputs can reach packaging.
Chat verification retains the locked tree, selected source blobs/digests, clean checkout, harness authority and allowlisted native changes, and production adapter agreement. SDK verification binds the candidate and evidence revisions independently, requires clean checkouts, verifies all three evidence digests, and retains package identity checks. Frozen production/source candidates and release artifacts are unchanged; the executable harness now pins published c544594. Workflow script byte bindings and conformance documentation are updated.
Regression evidence: actual Chat and SDK pins failed the previous ancestry guards and pass the revised checks. Tests reject substituted revisions, evidence digests, and modified source. Focused review found no must-fix issues.
Validation: typecheck, lint, production build, and complete unit suites passed: normal 597 passed / 61 skipped; heavy 569 passed / 35 skipped. Focused review and whitespace checks passed.
Tracks #202 and the provenance prerequisite for #201. Binding commit
32e2e06384ae6fb83889a77af2fad7289db3b561pins the publishedc544594harness/tree and exact authority objects. The producer fixture now creates a distinct disposable revision/tree, so local precommit HEAD equality does not invalidate the test. Full suites passed with one worker (597 normal + 569 heavy); prior default-worker fixture timeouts are retained in the audit. Typecheck, lint, build, focused code/binding review and whitespace checks passed.Merge with an actual merge commit; never squash or rebase. This preserves the pinned branch-local source ancestry as required by the conformance guide. Require complete exact-head CI before merging. Afterwards, bind the SDK producer/validator to the actual Chat merge and obtain fresh protected validation.
Earlier packaged job 102780447287 ran old locked harness 0ae0e90 and failed at phase1.packaging.authority.failed. Fresh CI on 32e2e06 must exercise c544594 through bootstrapVerifiedRunner. No packaged or protected aggregate acceptance is claimed yet. Preserve chat and active worktrees.