[codex] Add manifest crate release OIDC path#173
Conversation
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
9c2033c to
066a81f
Compare
There was a problem hiding this comment.
Code Review
This pull request updates the release pipeline documentation and invariant tests to support the lockstep publishing of the new ordvec-manifest crate alongside the core ordvec crate. Feedback on the changes suggests improving the robustness of the invariant tests: specifically, updating the awk step-parsing logic in release_signed_release_invariants.sh to reset context on any list item start, and using regular expressions with flexible whitespace matching instead of exact substring matches in release_publish_invariants.py.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
|
Addressed the two invariant robustness findings in 6919037. Changes:
Validation:
|
|
/agentic_review |
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewPrevious review resultsReview updated until commit 6919037 Results up to commit 6919037
Great, no issues found!Qodo reviewed your code and found no material issues that require review |
Review Summary by QodoAdd manifest crate release OIDC path with byte-identity verification
WalkthroughsDescription• Add manifest crate release OIDC path with separate build-manifest-crate and publish-manifest-crate jobs • Harden release invariant parsing with shell_logical_lines() and has_cargo_command() helpers • Include manifest .crate in GitHub attestation, SLSA subjects, and draft Release assets • Ensure manifest crate publishes after core ordvec with byte-identity verification • Update release docs and threat model for lockstep manifest crate release model Diagramflowchart LR
build["build-crate + build-manifest-crate"]
attest["attest + combine-hashes"]
draft["release-assets-draft"]
pub_core["publish-crate"]
pub_manifest["publish-manifest-crate"]
pub_pypi["publish-pypi"]
undraft["publish-github-release"]
build --> attest
build --> draft
attest --> draft
draft --> pub_core
draft --> pub_manifest
draft --> pub_pypi
pub_core --> pub_manifest
pub_core --> undraft
pub_manifest --> undraft
pub_pypi --> undraft
File Changes1. tests/release_publish_invariants.py
|
|
Code review by qodo was updated up to the latest commit 6919037 |
…e-oidc # Conflicts: # tests/release_publish_invariants.py
Summary
This extends the unified release workflow so
ordvec-manifestis a first-class lockstep crates.io package alongside the coreordveccrate.build-manifest-crateartifact/SBOM job.cratein GitHub attestation, SLSA hash subjects, and draft Release assetspublish-manifest-cratejob that runs afterpublish-crate, mints its own crates.io OIDC token, and proves pre/post publish byte identityNotes
This is stacked on #168 (
codex/manifest-publishability-dryrun). The manifest build artifact usescargo package -p ordvec-manifest --locked --no-verifybefore publish because a bumped lockstep manifest crate depends on a coreordvecversion that is not on crates.io untilpublish-cratesucceeds. The gatedpublish-manifest-cratejob then runs the normal verified package step afterordvechas published and byte-compares it to the attested artifact before minting its own OIDC token.Validation
bash tests/release_publish_invariants.shbash tests/release_signed_release_invariants.sh/tmp/ordvec-actionlint/actionlint .github/workflows/release.yml .github/workflows/ci.ymlcargo publish -p ordvec --dry-run --lockedcargo package -p ordvec-manifest --locked --no-verifycargo publish -p ordvec-manifest --dry-run --lockedcargo test -p ordvec-manifest --no-default-featurescargo test -p ordvec-manifestcargo test -p ordvec-manifest --features sqlitecargo test -p ordvec-manifest --all-featurescargo check -p ordvec-manifest --no-default-featurescargo fmt --all --checkgit diff --check