feat(core): bind release artifacts to canonical manifest identity - #219
feat(core): bind release artifacts to canonical manifest identity#219seonghobae wants to merge 54 commits into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthrough릴리스 매니페스트 공개 모듈에 build identity와 아티팩트 검증 규칙을 추가했습니다. Rust Changes릴리스 매니페스트
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: 🟡 Moderate · up to The release-manifest admission contract is well tested, but merge readiness is reduced by documentation that claims broader Microsoft synchronization compatibility than the validator provides, along with unresolved provenance and Git-reference accuracy issues. These bounded contract and documentation mismatches should be corrected or explicitly accepted before merge. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Partial implementation of #201.
Buyer-visible boundary
This lane adds a deliberately inert release-manifest admission primitive that binds an exact non-null lowercase Git source identity, bounded canonical Chromium revision, explicit release channel, the exact repository-pinned Rust toolchain, exact dependency-lock SHA-256 evidence, and bounded canonical artifact name/SHA-256 evidence without signing, publishing, update transport, installation, rollback, or release authority.
The production contract requires:
zero-idsentinel;1.97.1;sha256:dependency-lock digest;sha256:artifact digests;CON,PRN,AUX,NUL,COM0-COM9, andLPT0-LPT9, including extensions.The latter is an intentionally bounded buyer-environment filename rule, not a complete OneDrive or SharePoint synchronization-compatibility guarantee; additional service-specific restrictions such as
desktop.iniremain outside this validator.Possession of a valid manifest remains metadata evidence only. It does not authenticate a build, prove the claimed compiler or dependency lock was used, prove repository reachability, prove reproducibility/provenance, authorize a channel, or grant signing/publication/installation/update/rollback authority.
Test-first lineage
Historical failing heads are regression lineage only, never current passing evidence:
80531172b671fc5c7a36d0b8a77ecc1bf07ba120established the original missing release-manifest contract.b5d5365e364497b6c68cd0c35f2101675510f372reproduced case-only artifact-name collision admission.42ca2fd98750e7d0b09f98325ae939af8afdb27d/ CI32602571068reproduced moving Rust-toolchain alias admission.fc8e51d6b0b182601c8501b86ffac528db193d23/ CI32602850524reproduced stale toolchain-error text after exact-pin enforcement.c875358316ac78fa1075f2c2da947f3d21e68faf/ CI32603982257reproduced admission of Git's all-zero source sentinel.ac9f4ff80fb8615b0002c770750194397936adb0/ CI32609512987/ Rust job97120098572reproduced stale publicInvalidSourceCommitdiagnostic text after the non-null validator was already present.Current production requires at least one nonzero hexadecimal digit in addition to the exact lowercase 40-hex shape, and the public error contract states the same fail-closed rule.
Current exact state
Protected
mainis exactb05d5acca82b9d916ada2c8e82f59f92a89817e1. Current exact contributor head is3e34a54ae279686a28309d59b8b3b9bfbd283a80. GitHub reports this PR open, non-draft, and mergeable against that current protected-main base.The current head is a non-destructive convergence commit over the moved protected main. It preserves the release-manifest production boundary while incorporating current protected-main changes; predecessor evidence is not reused as current-head proof.
Exact-current evidence
On unchanged exact head
3e34a54ae279686a28309d59b8b3b9bfbd283a80:32701197890: success;97352884247: success — repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc all succeeded;97352884399: success and explicitly checked out exact SHA3e34a54ae279686a28309d59b8b3b9bfbd283a80;9510608942,exact-coverage-3e34a54ae279686a28309d59b8b3b9bfbd283a80, uploaded ZIP SHA-256d423cc3fa7f67d06530f4adfa63e566eb5bd2f87f3be43dbfae8e6c53fe865f3;32701197831: success;32701197767: success; and32701197741: success.The materializer workflow run on this head was skipped and is not promoted to passing evidence. All current inline review threads are resolved. Formal review inventory contains automated
COMMENTEDreviews only; no eligible counted independentAPPROVEDreview is inferred from scanners, CI, comments, author activity, or model output.Documentation / standards boundary
ADR 0015 records the release-manifest identity decision, including the pinned Rust baseline, Git zero-id rejection, bounded filename portability rule, and deliberate migration requirement for a future Rust upgrade. Canonical doctoring records the Microsoft filename rationale and versioned Git protocol evidence. Git's protocol grammar distinguishes
zero-id = 40*"0"from ordinary object identifiers; rejecting that sentinel is an identity-representation rule only and does not authenticate GitHub or establish source reachability/trust.Scope boundary
This slice does not close #201 and does not implement signing identity, full SBOM/SLSA provenance, installer/update transport, rollback/freeze protection, platform package authority, or integrated release acceptance. Those remain separately reviewed release-lifecycle work.
Protected-main
AGENTS.mdremains authoritative. This scheduled writer does not merge, self-approve, force-push, alter workflows/rulesets/secrets, tag, release, or publish.