Repository navigation
feat(release): verify installed gateway identity against wheel bytes - #1320
seonghobae wants to merge 4 commits into
Conversation
Embed the exact release source and API schema in the built wheel. Expose an inference-authenticated receipt only when installed package files match wheel RECORD hashes, and fail closed on source shadowing or mutation.
|
Warning Review limit reachedNext included review available in 11 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (8)
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 |
|
Local #1083 integration check, updated for this PR's current head On that synthetic tree, This confirms local compatibility with the current probe. It is not hosted acceptance, independent review, a published release, or a consumer deployment. The |
Keep generated Python bytecode caches outside the wheel digest while rejecting unrecorded source and data files. Document that the receipt verifies installed wheel bytes rather than already-loaded code.
|
#1083 release integration check for exact head The removal of I tested a local alternative that recompiles verified source and compares raw Separate #1083 container gap: current |
|
Exact-head admission correction — Ready is review admission only. Fresh audit against base
This PR is moved to Draft/Proposed until the causal owner repair is present on a successor exact head and re-audited. Queued/pending work is neither an additional blocker nor passing evidence. No Close, force push, destructive rebase, manual rerun, synthetic status/approval, merge, auto-merge, or bypass was performed. |
Scope
Adds the first release identity slice for #1023. The release workflow embeds the checked-out protected source SHA and canonical API schema digest in the wheel, then verifies the installed wheel before publication. An inference-authenticated
/v1/gateway/identityreports those fields and a package-tree digest only when installed package files match wheel RECORD hashes. Source checkouts, missing manifests, changed files, and extra importable files fail closed.This does not close #1023: independently authenticated deployment identity, scoped/ephemeral Actions credentials, an immutable published release, and consumer migration remain separate gates.
Evidence
83f30d250b7111d411e5478501a8078f8239d94f.actionlint .github/workflows/release.ymlandgit diff --check: passed.SOURCE_DATE_EPOCHmatched byte-for-byte; an isolated install returned the exact source SHA and package digest.Research
Torres-Arias et al., in-toto: Providing farm-to-table guarantees for bits and bytes, USENIX Security 2019: https://www.usenix.org/system/files/sec19-torres-arias.pdf. The paper motivates independent artifact-chain verification. This PR contributes one verifiable package link and does not claim the full signed in-toto chain. The PDF is linked because redistribution terms were not established.
Bytecode cache correction (2026-09-28)
Current head
352ac71547eef293aa4052181d57349f2717c8e5closes a source-versus-executed-bytecode gap. A timestamp-valid.pyccan run changed code while its wheel-recorded.pyremains intact; this was reproduced before the fix. The identity check now refuses any package bytecode cache. Release verification runs the freshly installed wheel withpython -B, and the release runbook requires a cache-free runtime package tree. The focused release/API/health tests passed (66),actionlintpassed, and an isolated wheel built from this commit returned its exact source SHA and package digest; the same install refused identity after a normal Python launch created caches. The Semgrep finding on the discardedmarshal.loadsapproach was addressed by removingmarshalentirely. Current-head hosted security and independent review remain pending. This is package-local evidence, not independent deployment attestation or signed release provenance.