From e482f0ec359905a9b94906286afa0d0d7655ea8e Mon Sep 17 00:00:00 2001 From: claude Date: Fri, 24 Jul 2026 15:11:27 +0200 Subject: [PATCH] =?UTF-8?q?audit:=20#310=20cycle=20close=20=E2=80=94=20run?= =?UTF-8?q?=20usage=20names=20--tap;=20C14=20class=20tension=20routed=20to?= =?UTF-8?q?=20#297?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Architect (cycle 9124275..1baee77) holds: the C27 boundary is preserved and ledger-anchored (selection = run-mode authority, fold growth stays Rust/role 2; validation solely in the shared bind_tap_plan seam before store I/O; unlisted taps inert); C1 byte-identity pinned for the explicit all-record plan vs the record-all default; ledger discipline kept (superseded C27 sentence verbatim in the new history sidecar); the C25 projection tension was explicitly adjudicated in C27's Current state, deferral #312/#327 minuted. Drift resolution: - [medium] C14 exit-class: --tap-content refusals (unknown label / undeclared tap) exit 1 through the assembly crate's runner-side registers while C14 assigns argv/blueprint-content faults to class 2. Pre-existing register family (#283 duplicate-tap, #286 exposes- neither). RESOLVED AS TRACKED-FORWARD to #297 (RunnerError propagation is where the CLI regains class authority; evidence comment with concrete sites posted there). A CLI-side shadow pre-validation was rejected: it duplicates the bind_tap_plan seam and can drift. - [low] FIXED here: the three hand-rolled `aura run` usage strings and the loaded-blueprint-grammar comment now name --tap. - [low] ADJUDICATED equivalent-as-delivered: the fold-mean expectation is derived from the pinned R_SMA_PRICES const rather than a second record run — an independent derivation of the same series; the spec's intent (fold row equals the series mean) is pinned. Regression: aura-bench report-only, exit 0, all five surfaces within tolerance, fingerprints OK (engine 13.78M bars/s Δ-1.6%, ingest 13.13M Δ+1.0%, campaign_sweep rss 93.9MB Δ+1.9%, campaign_heavy rss 106.9MB Δ+5.4%, cli run 3.6ms Δ-0.3%; loadavg-5.3 warning noted, report-only). No baseline update. Cycle spec + plan + the spent m1 fieldtest spec removed from the working tree (git-ignored files, shell rm per lifecycle). refs #310, refs #297 --- crates/aura-cli/src/main.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/aura-cli/src/main.rs b/crates/aura-cli/src/main.rs index 6cb2430..82ae0a1 100644 --- a/crates/aura-cli/src/main.rs +++ b/crates/aura-cli/src/main.rs @@ -1474,7 +1474,7 @@ fn is_blueprint_file(arg: &Option) -> Option<&str> { /// mirroring the old `parse_blueprint_run_args` window guard (`--from`/`--to` /// require `--real`; empty symbol rejected). Refuses in place (stderr + exit 2). fn run_data_from(real: Option<&str>, from: Option, to: Option) -> RunData { - let usage = "Usage: aura run [--params ] [--seed ] [--real [--from ] [--to ]]"; + let usage = "Usage: aura run [--params ] [--seed ] [--real [--from ] [--to ]] [--tap …]"; match real { Some(s) if !s.is_empty() => RunData::Real { symbol: s.to_string(), from, to }, Some(_) => { @@ -1799,13 +1799,13 @@ fn tap_plan_from_args(args: &[String]) -> Result { fn dispatch_run(a: RunCmd, env: &aura_runner::project::Env) { match is_blueprint_file(&a.blueprint) { Some(path) => { - // The loaded-blueprint grammar takes only --params/--seed/--real/--from/--to; + // The loaded-blueprint grammar takes only --params/--seed/--real/--from/--to/--tap; // the built-in-only flags are rejected here (exit 2), never silently dropped — // mirroring the sweep/mc blueprint branches, which reject their non-branch flags // exhaustively (refuse-don't-guess). clap's optional `[blueprint]` positional // makes these structurally parseable, so the guard is re-asserted at dispatch. if a.trace.is_some() { - eprintln!("aura: Usage: aura run [--params ] [--seed ] [--real [--from ] [--to ]]"); + eprintln!("aura: Usage: aura run [--params ] [--seed ] [--real [--from ] [--to ]] [--tap …]"); std::process::exit(2); } let doc = std::fs::read_to_string(path).unwrap_or_else(|e| { @@ -1893,7 +1893,8 @@ fn dispatch_run(a: RunCmd, env: &aura_runner::project::Env) { None => { eprintln!( "aura: Usage: aura run [--params ] \ - [--seed ] [--real [--from ] [--to ]]" + [--seed ] [--real [--from ] [--to ]] \ + [--tap …]" ); std::process::exit(2); }