Skip to content

feat: v0.16.0 — cargo-vendor export + Corrosion (real build); rules_rust scoped honestly - #40

Merged
avrabe merged 1 commit into
mainfrom
feat/v0.16.0
Aug 12, 2026
Merged

feat: v0.16.0 — cargo-vendor export + Corrosion (real build); rules_rust scoped honestly#40
avrabe merged 1 commit into
mainfrom
feat/v0.16.0

Conversation

@avrabe

@avrabe avrabe commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

v0.16.0 — verified crates reach Corrosion; rules_rust honestly scoped

Extends the distribution arc from bare Cargo (v0.15.0) to more build systems.

REQ-VENDOR-001 — varve export-crates-vendor

Emits a cargo vendor-shaped directory (unpacked crate trees + .cargo-checksum.json whose package is the sha256 varve signs) + [source.vendored-sources]. Proven offline-consumable by bare Cargo AND Corrosion.

REQ-CORROSION-001 — proven by a REAL build

A real CMake+Corrosion build compiles varve's own export_vendor_dir output offline (FROZEN) and produces libapp.a. Gated integration test (VARVE_CORROSION_TEST=1 + cmake) + a dedicated CI job.

REQ-BRIDGE-001 — provenance preserved, not clobbered

The .cargo-checksum.json package == the .crate sha256 — both the crates.io cksum and varve's signed digest — so a consumer verifies both chains against one value.

rules_rust — honestly scoped OUT (the spike did its job)

I ran Bazel + rules_rust here. crate.from_cargo fails on a bare vendored dir: "Failed to get crate index config" — it wants a registry index. So REQ-VENDOR-001 is scoped to Cargo + Corrosion, and full rules_rust (varve emitting crates_vendor BUILD files) is REQ-VENDOR-002 (v0.17.0). The spike prevented an overclaim.

Independent review — twice (VER-REVIEW-v0.16.0)

First review: engineering sound, but dissented that two user-facing CLI strings still claimed rules_rust consumes the vendor tree "hermetically." Resolved (reworded both + added a real-.crate CLI test + narrowed REQ-BRIDGE-001); a second review confirmed the dissent closed — zero residual rules_rust overclaim anywhere.

Gate

185 tests (incl. the gated Corrosion build); clippy/fmt clean; --locked synced; rivet validate + verification-evidence (112 steps) + claim-check + review-check (4 verdicts) all green.

🤖 Generated with Claude Code

https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu

…ust scoped honestly

Extends verified crate distribution to more build systems.

REQ-VENDOR-001 — `varve export-crates-vendor` emits a `cargo vendor`-shaped
directory (unpacked crate trees + `.cargo-checksum.json` whose `package` is the
sha256 varve signs) + a `[source.vendored-sources]` config. Proven offline-
consumable by bare Cargo AND Corrosion.

REQ-CORROSION-001 — a REAL CMake+Corrosion build compiles varve's own
export_vendor_dir output offline (FROZEN) and produces libapp.a. Encoded as a
gated integration test (VARVE_CORROSION_TEST=1 + cmake) with a dedicated CI job.

REQ-BRIDGE-001 — the vendored tree preserves the upstream integrity anchor: the
`.cargo-checksum.json` `package` == the .crate sha256 (both the crates.io cksum
and varve's signed digest), so nothing is laundered in translation.

rules_rust, HONESTLY SCOPED OUT: a Bazel spike proved rules_rust's
`crate.from_cargo` splice needs a registry index and FAILS on a bare vendored
directory ("Failed to get crate index config"). So REQ-VENDOR-001 is scoped to
Cargo + Corrosion, and full rules_rust support (varve emitting crates_vendor
BUILD files) is deferred to REQ-VENDOR-002 (v0.17.0). The spike prevented an
overclaim.

Independently reviewed twice (VER-REVIEW-v0.16.0): the first review found the
engineering sound but DISSENTED that two user-facing CLI strings still claimed
rules_rust consumes the vendor tree; resolved by rewording both, adding a
real-.crate CLI test for export-crates-vendor, and narrowing REQ-BRIDGE-001. A
second review confirmed the dissent closed — zero residual rules_rust overclaim.

185 tests pass (incl. the gated Corrosion build); clippy/fmt clean; --locked
synced; rivet validate + verification-evidence (112 steps) + claim-check +
review-check (4 verdicts) all green. Version bumped to 0.16.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
@avrabe
avrabe merged commit 67575a6 into main Aug 12, 2026
13 checks passed
@avrabe
avrabe deleted the feat/v0.16.0 branch August 12, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant