soft3/bbg/audit/release-dependency-continuation.md

Release dependency continuation — 2026-09-12

The BBG changes since the source rehearsal preserve the public proof and state certificate bytes. All three archived state fixtures verify with current BBG and regenerate byte-for-byte. The dependency closure now requires neuron/id; the storage migration marker introduces an explicit older-binary boundary.

Compared inputs and scope

Baseline: /tmp/cyber-release-source-v7-20260912/bbg, from source archive SHA-256 9bce1a685bc5568277f01865c505008c43e733e1d242611ca047a228f0ae1961. Current: /Users/master/cyber/bbg and /Users/master/cyber/neuron/id. Read BBG and Neuron working instructions and the exact source diffs. This review changed only this audit file; production code and lock updates belong to their owners. The Linux VM remained idle.

Dependency and protocol findings

  • rs/Cargo.toml adds neuron-id version0.1 at ../../neuron/id. The BBG lock delta adds that dependency and its path package, version0.1.0; no registry package versions change in this delta.
  • types.rs replaces pub type NeuronId = [u8; 32] with the re-export pub use neuron_id::NeuronId. That crate is #![no_std], has no dependencies, and defines precisely the same alias. It adds no derivation, authentication, serialization adapter or runtime machinery. A neuron identifier remains32bytes.
  • certificate.rs, proof.rs, query.rs, query_auth.rs, query_wire.rs, dim.rs, state.rs, state/commits.rs, and the query-proof golden fixture are unchanged relative to the rehearsal. No public proof/certificate version, namespace layout, root serialization or field encoding changes in this delta.
  • Neuron's workspace contains other packages, but the product dependency reaches only neuron-id. The source archive must include its workspace manifest and inherited license/edition context. Resolving all Neuron workspace members is a different dependency denominator from the product closure.

Storage changes and compatibility boundary

storage/application.rs adds bounded semantic namespace activation: NamespaceMigration, MigrationTarget, apply_migration, migration_target, and Error::Fenced. Activation validates nonempty, sorted, distinct source namespaces (maximum256), checks exact source heads in the transaction, and stores immutable source-to-target/manifest fences. Ordinary subsequent writes to a fenced source fail; exact historical retries are checked first and remain usable.

The existing migration status slot receives neuron-v1. Current Database open accepts that completed status or complete; older binaries reject neuron-v1. Consequently, reopening an activated database with an older binary is unsupported by design, even though public state certificates remain compatible. Semantic mapping, authorization and fingerprint framing belong to the application adapter, as stated in specs/application-storage.md.

The seven native record domains already existed in the rehearsal. Latest records.rs and backend_fjall.rs changes are formatting and SSD-only gating of RecordDomain::ALL. Added tests exercise shared native/application/shard commits, rollback, bounded reads/scans, reopen and injected storage failures. These changes do not insert application records into the public certificate tables.

Executed checks

Host compiler: rustc1.95.0 Homebrew. This continuation is separate from the previous native release build with Rust1.89.

Command Actual result
cargo test --manifest-path bbg/rs/Cargo.toml --all-features --locked 152 passed, 0 failed, 0 ignored; exit0
cargo test --manifest-path bbg/rs/Cargo.toml --locked 82 passed, 0 failed, 0 ignored; exit0, zero warnings
cargo test --manifest-path neuron/Cargo.toml -p neuron-id --locked exit0; alias-only crate has 0 unit and 0 doc tests
Temporary external fixture probe against current BBG with serde All three old certificates verify, round-trip exactly, and regenerate exactly

BBG coverage includes72 unit tests, application migration13, application storage5, look integration3, native records3, native transitions13, authenticated queries6, serde wire4, shared application8, state certificates5, storage contract13, persistence5 and storage-tier failures2. No tests were ignored or filtered.

Logs: /tmp/bbg-dependency-continuation-tests.log, /tmp/bbg-dependency-continuation-default.log, /tmp/neuron-id-continuation-tests.log, /tmp/bbg-old-fixture-compatibility.log. The fixture probe lives entirely under /tmp/bbg-old-fixture-compatibility/; it deserializes each old certificate, recomputes and verifies its root, checks the pretty-JSON round-trip and independently reconstructs the energy77/88 graph and requested namespaces to compare complete regenerated bytes.

Three vendored Fjall warnings remain in the all-feature run: config.rs:49 unused journal_recovery_mode, stats.rs:26 unused outstanding_flushes, and tx/keyspace.rs:42 mismatched lifetime syntax in write_tx. The fourth warning-prefixed log line summarizes these three. This receipt therefore does not claim a warning-free all-feature BBG build.

Exact old fixture compatibility

Input files were extracted from the already verified native Linux archive /tmp/cyber-native-linux-rehearsal-20260912/cyber-tools-linux-aarch64-rehearsal.tar.gz, SHA-256 bc0178a663d372420a2713b4aa7f8a9355d1c60e80c206b9ab88a1618234bd1d.

Fixture SHA-256, unchanged after current-code regeneration
state.json 8953a46858800afc0b9e9cd3a2a9869efec0f3fea1177c2b63c4180458b3b2e8
other-state.json 16b1bab42e8f64781c9723cc1b5122ea43690b98eda5673e2dfddd97eb72ab5f
state-all.json 2a0e6d0d29ab36f8259dc3512e9db0b05fb1ea7f62a780a274c36df9d864b02c

A fresh final source archive and product rebuild must include the new dependency and corrected owning lockfiles. Fixture compatibility does not make the old binary archive a build of the newly changed source. No publication occurred.

Graph