chore: prepare v0.3.0 release#107
Conversation
2ee3911 to
e772d50
Compare
Review Summary by QodoPrepare v0.3.0 release with hardened workflows and Python input validation
WalkthroughsDescription• Bump version to 0.3.0 across Rust/Python release surfaces • Add Python add() capacity preflight checks to raise ValueError instead of core asserts • Replace ordered-float comparator with finite f32::total_cmp and explicit index tie-breaks • Harden release workflow with exact linux/aarch64 wheel smoke tests and post-publish PyPI hash verification • Pin cargo-fuzz installation with locked bundled lockfile on stable toolchain • Exclude sidecars (ordvec-ffi, ordvec-go, ordvec-manifest, ordvec-python) from published .crate package Diagramflowchart LR
A["Version Bump<br/>0.2.0 → 0.3.0"] --> B["Python Capacity<br/>Validation"]
A --> C["Comparator<br/>Refactor"]
A --> D["Release Workflow<br/>Hardening"]
B --> E["ValueError on<br/>Overflow"]
C --> F["total_cmp +<br/>Index Tiebreak"]
D --> G["aarch64 Wheel<br/>Smoke Test"]
D --> H["PyPI Hash<br/>Verification"]
D --> I["Pinned cargo-fuzz<br/>Install"]
A --> J["Crate Exclude<br/>Sidecars"]
File Changes1. ordvec-python/src/lib.rs
|
Code Review by Qodo
1. Pre-tag docs links 404
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Code Review
This pull request updates the project to version 0.3.0, hardens release workflow scripts, and introduces a capacity check in the Python bindings to prevent index capacity overflows from causing Rust panics across the FFI boundary. The review feedback correctly identifies a potential vulnerability on 32-bit platforms where the total allocated byte size could overflow usize even if the element count does not. To resolve this, the reviewer suggests passing the element size to the capacity check function to perform a second checked multiplication, and provides specific suggestions to update all call sites and tests.
There was a problem hiding this comment.
Pull request overview
Prepares the v0.3.0 release across the Rust crate, Python bindings, and supporting docs/workflows. Version bumps are paired with packaging exclusions that keep the root .crate minimal while documenting ordvec-ffi/ordvec-go/ordvec-manifest as full-checkout sidecars, plus a focused set of behavioral hardenings (Python add() capacity preflight, finite-f32 comparator without partial_cmp panic, release-workflow gating).
Changes:
- Bump crate/Python package versions to 0.3.0, promote the changelog entry, and refresh README/ROADMAP/THREAT_MODEL/RELEASING wording (including pinned
v0.3.0doc links). - Harden release pipeline: native linux/aarch64 wheel smoke job gated into
release-assets-draft, exact-wheel install via--no-index, post-publish PyPI SHA-256 verification, pinnedcargo-fuzzinstall/toolchains, and strongerrelease_signed_release_invariants.shordering checks. - Add Python-side
check_add_capacitypreflight on alladd()paths and replace thepartial_cmp(...).expect(...)finite comparator withtotal_cmp+ explicit index tie-break (with unit tests).
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Cargo.toml | Bump to 0.3.0; expand exclude to keep sidecars/release tests out of the published .crate. |
| Cargo.lock | Regenerated for the 0.3.0 bump of ordvec / ordvec-python. |
| src/util.rs | Replace partial_cmp.expect with ==-shortcut + f32::total_cmp for the finite comparator. |
| ordvec-python/Cargo.toml | Version bump to 0.3.0. |
| ordvec-python/pyproject.toml | Version bump to 0.3.0. |
| ordvec-python/python/ordvec/init.py | __version__ bump to 0.3.0. |
| ordvec-python/src/lib.rs | Add check_add_capacity and call it from every add() path; add unit tests. |
| ordvec-python/README.md | Note numpy>=2.2 runtime requirement. |
| README.md | Bump install snippet to 0.3, note numpy floor, repoint sidecar docs to v0.3.0 tag. |
| CHANGELOG.md | Promote [Unreleased] to [0.3.0] - 2026-05-29; numpy 2.2 correction; new compare links. |
| ROADMAP.md | Mark distribution baseline done; describe new C ABI / Go wrapper status. |
| RELEASING.md | Document the post-publish PyPI hash verification step. |
| THREAT_MODEL.md | Update status to v0.3.0 / 2026-05-29 and refine SUPPLY-001 wording. |
| .github/workflows/release.yml | New smoke-linux-aarch64-wheel job, exact-wheel install, PyPI post-publish hash check. |
| .github/workflows/fuzz.yml | Pin cargo-fuzz install toolchain + nightly via env, install with --locked. |
| tests/release_signed_release_invariants.sh | New ordering assertions for publish-crate steps and PyPI post-publish hash check. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
e772d50 to
c4a99ed
Compare
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
c4a99ed to
7e85f6e
Compare
Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
|
Bot remediation summary:
Validation after the Gemini fix:
All six Gemini inline review threads have been replied to and resolved. |
Summary
0.3.0, promote the changelog, and update README/ROADMAP/THREAT_MODEL/RELEASING wording for the v0.3.0 release boundaryordvec-manifest,ordvec-ffi,ordvec-go, and Python/release operational material out of the root.cratepackage while documenting sidecars as full-checkout artifacts with links that stay valid before the release tag existscargo-fuzzinstall/toolchains, PyPI post-publish hash verification, and stronger signed-release invariantsadd()capacity preflight so public add paths raiseValueErrorinstead of allowing core asserts to cross the binding boundary; follow-up remediation also checks total byte-size overflow before core allocationordered-floatcomparator dependency pattern by using finitef32::total_cmpwith explicit equal-value index tie-breaksValidation
cargo package -p ordvec --locked --listcargo publish -p ordvec --dry-run --lockedcargo test -p ordvec --all-targets --no-default-featurescargo test -p ordvec --all-targets --features experimentalcargo +1.89.0 test -p ordvec --lockedcargo clippy -p ordvec --all-targets --all-features -- -D warningscargo test -p ordvec-manifest --no-default-featurescargo test -p ordvec-manifest --all-featurescargo clippy -p ordvec-manifest --all-targets --all-features -- -D warningscargo test -p ordvec-fficargo build -p ordvec-ffi --releaseGOCACHE=/tmp/ordvec-go-cache go test -count=1 ./...cargo clippy -p ordvec-python --all-targets -- -D warningsmaturin build --release --manifest-path ordvec-python/Cargo.toml --out /tmp/ordvec-wheels-v2python -m pytest ordvec-python/tests -q(503 passed)cargo +1.89.0 install cargo-fuzz --version 0.13.1 --locked --root /tmp/cargo-fuzz-install-checkbash tests/release_signed_release_invariants.shbash tests/release_publish_invariants.shBot remediation validation
cargo fmt --all -- --checkcargo clippy -p ordvec-python --all-targets -- -D warningscargo clippy -p ordvec --all-targets --all-features -- -D warningsmaturin build --release --manifest-path ordvec-python/Cargo.toml --out /tmp/ordvec-wheels-remediation/tmp/ordvec-remediation-venv/bin/python -m pytest ordvec-python/tests -q(503 passed)Notes
Do not tag from this branch. The final
v0.3.0tag should wait until this PR lands, main CI is green for the exact SHA, and the external GitHub environment / Trusted Publisher settings are verified.