CN-ANCHOR-01
CN release enforcedSingle BootstrapAnchor mint authority: exactly one pub fn in ade_runtime::bootstrap_anchor::mint produces a BootstrapAnchor with all 6 fields populated (network_magic, genesis_hash, seed_point: {slot, block_hash}, seed_artifact_hash, imported_utxo_fingerprint, initial_ledger_fingerprint). The struct has no default impl and no #[non_exhaustive]; any missing field is a compile error.
- Source
docs/planning/phase4-n-m-ledger-seed-invariants.md §1 (I-A3)
Enforcement trace
Tests 5
- crates/ade_runtime/src/bootstrap_anchor.rs::tests::mint_composes_inputs_byte_identically
- crates/ade_runtime/src/bootstrap_anchor.rs::tests::mint_then_round_trip_via_canonical_cbor
- crates/ade_runtime/src/bootstrap_anchor.rs::tests::mint_carries_seed_point_correctly
- crates/ade_runtime/src/bootstrap_anchor.rs::tests::mint_propagates_utxo_fingerprint_into_anchor
- crates/ade_ledger/src/bootstrap_anchor/anchor.rs::tests::bootstrap_anchor_match_is_exhaustive
Cross-references
Strengthened in
Evidence notes
PHASE4-N-M-A S2 (2026-05-26): mint is the SOLE pub fn producing a BootstrapAnchor; type-system enforces all 6 fields at construction (no Default impl, no #[non_exhaustive]). ci/ci_check_bootstrap_anchor_closure.sh enforces single-mint + single-codec authority + no-Default + no-non_exhaustive. PHASE4-N-F-A (2026-05-30): the anchor now binds a new recovered surface — the SeedEpochConsensusInputs sidecar is anchor-fp-keyed and warm-start verification rejects an anchor_fp mismatch (CN-CINPUT-02, DC-CINPUT-01).