[codex] Guard package readiness before release#181
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Code Review
This pull request introduces comprehensive validation checks for release and publish invariants, including verifying packaged files, checking for forbidden prefixes, validating README links, and ensuring proper sequencing of dry-run publish steps in CI workflows. The review feedback highlights opportunities to improve robustness and correctness: guarding against a potential AttributeError if exc.stderr is None during subprocess failures, handling directory links in the README verification since cargo package --list only returns files, and enhancing the shell command parser to robustly handle inline environment variables and chained commands.
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.
Review Summary by QodoGuard package readiness with content validation and dry-run checks
WalkthroughsDescription• Adds package content validation for ordvec and ordvec-manifest crates • Validates README relative links resolve within packaged .crate files • Adds manifest crate publish dry-run before OIDC credential minting • Pins CI manifest-package deferral contract and ordering invariants • Adds documentation URL metadata to root crate Cargo.toml Diagramflowchart LR
A["Package Content Validation"] --> B["Required Files Check"]
A --> C["Forbidden Prefixes Check"]
A --> D["README Link Validation"]
B --> E["ordvec & ordvec-manifest"]
C --> E
D --> E
E --> F["CI Workflow Guards"]
F --> G["Manifest Dry-Run Ordering"]
G --> H["Before OIDC Minting"]
I["Release Workflow"] --> J["Manifest Publish Dry-Run"]
J --> K["After Byte-Identity"]
J --> H
File Changes1. tests/release_publish_invariants.py
|
484c510 to
1ba84d5
Compare
22705d4 to
305a6e6
Compare
f980406 to
39cf499
Compare
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
305a6e6 to
8631e4e
Compare
|
Addressed the package-readiness parser/link review findings in What changed:
Validation:
|
Summary
Stacked on #180.
This lane hardens the package-readiness gate before the release stack moves toward dry-run/publish work:
documentation = "https://docs.rs/ordvec"metadata;cargo publish --dry-run --lockedstep after manifest .crate byte-identity verification and before the crates.io OIDC credential is minted;cargo package --listfor both publishable crates and assert required/forbidden package contents;.crate;ordvec 0.4.0exists on crates.io;Scout / Review
Read-only package scout found two medium gaps:
ordvec-manifesthad no post-core publish dry-run before minting OIDC.Adversarial review found one low-severity shell brittleness issue: the signed-release dry-run command check was too argument-order-specific. Remediated with an order-insensitive
awkcheck while leaving Python's structuredshlexcommand parsing in place.Validation
Note: full
cargo package -p ordvec-manifest --lockedremains intentionally deferred untilordvec 0.4.0exists on crates.io; CI and release invariants now pin that deferral and require release.yml to package/publish-dry-run the manifest crate only afterpublish-cratesucceeds.