plan: 0109 persist_taps wiring
4 tasks, strictly sequential: tap vocabulary + UnknownTap intrinsic validation (deferral eprintln survives until task 3; the 0107 deferral test splits into its two 0109 pins), trace_name widening + the claim-sentinel name-composition contract across registry and executor, persist_campaign_traces (nominee non-reduce re-run, metrics-equality C1 guard, TraceStore member-dir writes, loud skips, deferral line dies), gated e2e extension (trace files + chart read-back). Drafted per-task against the live tree (3 authors); cross-task seams verified in the notes: campaign_run.rs untouched by tasks 1-2 (task 3's fences stay valid), the task-1(b) test found by fixture not name, tap->channel mapping verified against persist_traces_r, nominee params bound from the report manifest via the shipped point_from_params inverse, reduce/non-reduce metrics equality grounded in the shared SeriesFold/GatedRecorder ledger construction. refs #201
This commit is contained in: