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:
+24
-2
@@ -1418,8 +1418,8 @@ registry grew the **`campaign_runs.jsonl`** JSONL sibling (beside `runs.jsonl` /
|
||||
per-cell realized stage prefixes linking family ids, gate survivor ordinals, and sweep
|
||||
selections — over untouched family records, run-counted per campaign id. Zero survivors
|
||||
truncate a cell's realized prefix and exit 0 (a null result is a valid research result);
|
||||
`emit` is honored (`family_table`/`selection_report` lines), `persist_taps` is deferred
|
||||
LOUDLY on stderr (no name→tap wiring exists yet). The **blueprint on-ramp** (#196) closes
|
||||
`emit` is honored (`family_table`/`selection_report` lines); `persist_taps` was deferred
|
||||
LOUDLY on stderr in this cycle (the wiring shipped in cycle 0109, below). The **blueprint on-ramp** (#196) closes
|
||||
the F5 authoring gap: `aura graph register` (store put keyed by content id == topology
|
||||
hash), `aura graph introspect --params` (the RAW `param_space` namespace campaign axes
|
||||
are validated against), and a blueprint-file mode on `--content-id`. The
|
||||
@@ -1456,6 +1456,28 @@ strategy × window with `winners`/`missing`), both serde-default sparse — pre-
|
||||
(introspection doc-strings dropped "in v1" only). Noted debt: the mc arm detects the wf
|
||||
family by the stringly `block == "std::walk_forward"` literal (a pre-existing lockstep
|
||||
pattern with the realization's block strings).
|
||||
**Realization (cycle 0109, #201 — persist_taps wired).** Campaign presentation persists
|
||||
traces: the tap namespace is a **closed vocabulary** of the wrap convention's four sink
|
||||
names (`equity`/`exposure`/`r_equity`/`net_r_equity`; `aura_research::tap_vocabulary`,
|
||||
intrinsic `DocFault::UnknownTap` — the escalation for a new observable is a new
|
||||
vocabulary entry or an authored blueprint sink, never an open node-path namespace).
|
||||
Scope is the per-cell **nominee only**: after the pipeline settles, the CLI re-runs each
|
||||
nominee once in non-reduce mode (all four channels drained; windowed to the nominee
|
||||
manifest's own ns bounds) and **asserts metrics equality** against the recorded nominee —
|
||||
the C1 drift alarm, hard refusal on divergence (the reproduce precedent, enforced).
|
||||
Traces land in the existing TraceStore as
|
||||
`traces/{campaign8}-{run}/{strategy8}-{instrument}-w{n}/{tap}.json`
|
||||
(`ensure_name_free(Family)` once; window ordinal doc-derived), chartable by the unchanged
|
||||
viewer. The record carries ONE sparse pointer, `CampaignRunRecord.trace_name`
|
||||
(`Some("{campaign8}-{run}")` iff the doc requests taps — the claim-sentinel contract:
|
||||
`execute` claims, `append_campaign_run` composes the name via the single-sourced
|
||||
`derive_trace_name`, `execute` mirrors it onto the returned copy). Loud lines replace
|
||||
the retired deferral: per-cell no-nominee skip, per-run unproducible-tap skip
|
||||
(`net_r_equity` needs a cost leg; the campaign runner wires none), one summary.
|
||||
`aura-campaign` stays trace-agnostic (the MemberRunner seam is unchanged; the stamp is a
|
||||
pure name derivation). Noted debt: `aura chart` over the campaign family ROOT (cells
|
||||
spanning instruments) is untested/semantically undefined — only per-cell read-back is
|
||||
pinned.
|
||||
**Guarantee.** Construction is a distinct phase, recursive at every level. Each
|
||||
node type has a **factory** `params → sized concrete node` (e.g. `SMA(length)`
|
||||
sizes its ring buffer). A **blueprint** is the param-generic, input-role-generic
|
||||
|
||||
Reference in New Issue
Block a user