audit: cycle 0109 tidy (drift resolved by ledger/glossary lift + tap-channel cross-pin)

Architect verdict: drift_found — the code holds (C1 honored not
assumed: the nominee re-run's metrics-equality hard refusal; C22/C14
clean: existing TraceStore + unchanged viewer, serde-default widening
round-trips, name composition single-sourced in derive_trace_name).
Resolved here:

- C18: the 0107 paragraph's 'persist_taps is deferred' points forward;
  new cycle-0109 realization paragraph records the closed tap
  vocabulary + UnknownTap tier, the nominee-only non-reduce re-run
  with the C1 metrics guard, the campaign trace family layout, the
  trace_name claim contract, the loud-skip lines, and the noted
  chart-over-family-root debt.
- Glossary: tap entry names the closed vocabulary + escalation rule;
  campaign document's presentation clause references it; campaign run
  gains the trace_name pointer.
- Debt fixed inline (architect med): tap_channel gains the
  emit_vocabulary-twin debug_assert cross-pin so a fifth vocabulary
  tap fails loudly instead of silently skipping.

The consumed 0108 fieldtest spec is removed with the cycle's spec+plan
(all its dispositions shipped: F6 #205, F8 #207, F11 #206, F7/F9/F10
doc-tightens).

Regression: cargo test --workspace 1041/0; clippy -D warnings clean;
cargo doc 0 warnings.

refs #201
This commit is contained in:
2026-07-04 04:22:41 +02:00
parent 46a85d3ea4
commit 179c2f8bf0
6 changed files with 38 additions and 1824 deletions
+11
View File
@@ -476,6 +476,17 @@ enum TapChannel {
/// An unknown name cannot reach here (`validate_campaign` refuses it) and
/// maps to `None` all the same rather than guessing.
fn tap_channel(tap: &str) -> Option<TapChannel> {
// The emit_vocabulary debug_assert's twin: every vocabulary tap must be
// either routable here or the one known cost-only tap — a future fifth
// vocabulary entry fails loudly instead of silently skipping with the
// hardcoded needs-a-cost-run message.
debug_assert!(
aura_research::tap_vocabulary()
.iter()
.all(|t| *t == "net_r_equity"
|| matches!(*t, "equity" | "exposure" | "r_equity")),
"tap_vocabulary drifted from the channels campaign_run routes"
);
match tap {
"equity" => Some(TapChannel::Equity),
"exposure" => Some(TapChannel::Exposure),