Skip to content

v0.0.1-rc7 - #5

Merged
emersonian merged 4 commits into
mainfrom
be/rc7
Aug 22, 2026
Merged

v0.0.1-rc7#5
emersonian merged 4 commits into
mainfrom
be/rc7

Conversation

@emersonian

Copy link
Copy Markdown
Contributor

Cuts v0.0.1-rc7. The headline is the build-freshness fix: rc6 shows "This build is out of date" on a freshly downloaded binary.

What's in it

  • 276d0d20 docs: Ironwood and Orchard share a receiver, not a value pool. Two comments (internal/state.rs, internal/send.rs) claimed a shared value pool; they are distinct pools that share the Orchard receiver, which is why one UFVK decrypts both and why reads match output_pool codes 3 and 4.
  • eebc4735 freshness: derive the build expiry from compile time. build.rs stamps ZKV_BUILD_UNIX (honouring an explicit ZKV_BUILD_UNIX, then SOURCE_DATE_EPOCH), and a build now expires 90 days after it was compiled instead of on a hard-coded date. That date had not moved since rc1, so rc5 shipped with three days of freshness and rc6 shipped already expired. The mainnet height backstop stays, projected from a refreshed anchor (3,455,954 at 2026-08-21) at the 75 s target block time. release.yml runs scripts/check-build-freshness.py before building anything, failing a tag whose window is under 30 days or whose anchor is over 180 days old.
  • eb812632 version bump to v0.0.1-rc7.
  • fa1169a3 website download notes to rc7.

Verified

The freshness change landed in the internal repo first (green there, including the regtest tier) and is ported here byte for byte.

Locally green on this branch: cargo fmt --check, cargo clippy --workspace --all-targets -D warnings, cargo test --workspace (all suites), cargo doc with -D warnings, cargo deny check, cargo +1.88 check, and the new guard script.

Behaviour checked end to end rather than by unit test alone: a fresh build prints no banner, and the same tree rebuilt with ZKV_BUILD_UNIX=1700000000 prints it.

🤖 Generated with Claude Code

Two comments claimed the two share a value pool. They do not: they are
distinct value pools that happen to share the Orchard receiver, which is
why one UFVK decrypts both and why the read path matches output_pool
codes 3 and 4. shallow/decrypt.rs already stated this correctly; these
two disagreed with it.

- internal/state.rs: pool_output_codes said "Ironwood shares the Orchard
  receiver and value pool". Reworded to lead with the distinct pools and
  the shared receiver, keeping the operational point (a single database's
  memos can land under either code, so reads must match both).
- internal/send.rs: dropped "Ironwood shares the Orchard pool on-chain"
  from the fallback_change_pool note; the builder-routing sentence that
  follows is the real justification and is unchanged.
- build.rs stamps ZKV_BUILD_UNIX (honouring an explicit ZKV_BUILD_UNIX,
  then SOURCE_DATE_EPOCH); a build expires FRESH_WINDOW_SECS (90 days)
  after it was compiled instead of on a hard-coded date
- that date had not moved since rc1, so rc5 shipped with three days of
  freshness left and rc6 shipped already expired
- the mainnet height backstop is projected from a refreshed anchor
  (3455954 at 2026-08-21) at the 75 s target block time
- release.yml now runs scripts/check-build-freshness.py before it builds
  anything, failing a tag whose window is under 30 days or whose anchor
  is over 180 days old
@emersonian
emersonian merged commit fa1169a into main Aug 22, 2026
6 checks passed
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