Persist a price/signal tap pair so measure ic is reachable from the release binary #312

Open
opened 2026-07-23 06:36:23 +02:00 by claude · 2 comments
Collaborator

aura measure ic <RUN> --signal <tap> --price <tap> computes the Information Coefficient as a pure post-run reduction over two tap series read from a persisted trace (crates/aura-cli/src/main.rs:2073-2092). Via the release binary alone, no trace satisfying those inputs can be produced:

  • --trace is accepted on exactly two verbs, sweep --real and walkforward --real (#224 delivered these two and retired the rest: run --trace is hard-refused — crates/aura-cli/src/main.rs:1290-1292, exit at main.rs:1721-1724 — and mc --real and the synthetic sweep/walkforward paths refuse it, main.rs:2458, main.rs:2259, main.rs:2371).
  • The persistable tap vocabulary is closed at {equity, exposure, r_equity, net_r_equity} — the closed-vocabulary decision from #201 (crates/aura-research/src/lib.rs:780-782); any other persist_taps entry is an UnknownTap fault (lib.rs:2088-2091). None of the four works as --price (all are cumulative result curves, not a price series), and there is no bias/signal tap.

Consequence: every trace the release binary can produce lacks both inputs measure ic requires, so the subcommand is unreachable for a downstream user. Reaching it needs a source-side change — extending the closed tap vocabulary (or an equivalent persisted price/signal channel) so a recorded run carries a price series and a signal series.

Field evidence (2026-07-22 external field test; an LLM agent driving the release binary with no source or docs access): the agent reached for measure ic to score raw signal quality independently of the execution layer, hit the --trace refusals, concluded that CLI-side trace persistence is disabled in the installed version, and abandoned the measurement path entirely.

Related: #294 (IC offline-join duplicate-timestamp semantics), #309 (echoing a run's recorded trace handle), #307 (compact on-disk trace format).

`aura measure ic <RUN> --signal <tap> --price <tap>` computes the Information Coefficient as a pure post-run reduction over two tap series read from a persisted trace (`crates/aura-cli/src/main.rs:2073-2092`). Via the release binary alone, no trace satisfying those inputs can be produced: - `--trace` is accepted on exactly two verbs, `sweep --real` and `walkforward --real` (#224 delivered these two and retired the rest: `run --trace` is hard-refused — `crates/aura-cli/src/main.rs:1290-1292`, exit at `main.rs:1721-1724` — and `mc --real` and the synthetic sweep/walkforward paths refuse it, `main.rs:2458`, `main.rs:2259`, `main.rs:2371`). - The persistable tap vocabulary is closed at `{equity, exposure, r_equity, net_r_equity}` — the closed-vocabulary decision from #201 (`crates/aura-research/src/lib.rs:780-782`); any other `persist_taps` entry is an `UnknownTap` fault (`lib.rs:2088-2091`). None of the four works as `--price` (all are cumulative result curves, not a price series), and there is no bias/signal tap. Consequence: every trace the release binary can produce lacks both inputs `measure ic` requires, so the subcommand is unreachable for a downstream user. Reaching it needs a source-side change — extending the closed tap vocabulary (or an equivalent persisted price/signal channel) so a recorded run carries a price series and a signal series. Field evidence (2026-07-22 external field test; an LLM agent driving the release binary with no source or docs access): the agent reached for `measure ic` to score raw signal quality independently of the execution layer, hit the `--trace` refusals, concluded that CLI-side trace persistence is disabled in the installed version, and abandoned the measurement path entirely. Related: #294 (IC offline-join duplicate-timestamp semantics), #309 (echoing a run's recorded trace handle), #307 (compact on-disk trace format).
claude added the feature label 2026-07-23 06:36:23 +02:00
claude self-assigned this 2026-07-23 06:36:23 +02:00
claude removed their assignment 2026-07-23 12:16:42 +02:00
claude added this to the Measurement reachable — measure ic end-to-end on robust signals milestone 2026-07-23 13:42:58 +02:00
Author
Collaborator

Fieldtest evidence (binary-only M1 milestone fieldtest, 2026-07-24)

The dead-end is confirmed end-to-end from the release binary (d26f0c8): the only persistable taps are the presentation set (equity | exposure | r_equity | net_r_equity), so measure ic runs only on semantically-wrong inputs (--signal exposure --price equity → IC ≈ 0.0019, noise). The missing mechanism is now pinned one level deeper: declared taps ARE serialized by graph build but stripped on the registration path — see #327 (bug). Persisting declared taps through register + trace would supply exactly the signal/price pair this issue asks for. Corpus: fieldtests/m1-self-description/s5_trace_measurement/.

## Fieldtest evidence (binary-only M1 milestone fieldtest, 2026-07-24) The dead-end is confirmed end-to-end from the release binary (d26f0c8): the only persistable taps are the presentation set (`equity | exposure | r_equity | net_r_equity`), so `measure ic` runs only on semantically-wrong inputs (`--signal exposure --price equity` → IC ≈ 0.0019, noise). The missing mechanism is now pinned one level deeper: declared taps ARE serialized by `graph build` but stripped on the registration path — see #327 (bug). Persisting declared taps through register + trace would supply exactly the signal/price pair this issue asks for. Corpus: `fieldtests/m1-self-description/s5_trace_measurement/`.
Author
Collaborator

Prerequisite surfaced by the #310 skeptic pass (2026-07-24)

Two disjoint tap namespaces exist and this milestone is where they meet: the presentation channel (Presentation.persist_taps over the closed equity|exposure|r_equity|net_r_equity set, routed tap_channelTapChannel, crates/aura-research + aura-runner/src/runner.rs) vs the C27 declared taps (FlatGraph.taps bound via bind_tap_plan/FoldRegistry — which the campaign/sweep path does not bind at all today). Persisting declared taps through the campaign path (this issue + #327) must first decide the relationship between the two — do NOT graft a declared-tap or fold-bearing field onto persist_taps before that reconciliation. The #310 cycle ships the one-shot-path fold selector only and leaves this untouched.

## Prerequisite surfaced by the #310 skeptic pass (2026-07-24) Two disjoint tap namespaces exist and this milestone is where they meet: the presentation channel (`Presentation.persist_taps` over the closed `equity|exposure|r_equity|net_r_equity` set, routed `tap_channel` → `TapChannel`, crates/aura-research + aura-runner/src/runner.rs) vs the C27 declared taps (`FlatGraph.taps` bound via `bind_tap_plan`/FoldRegistry — which the campaign/sweep path does not bind at all today). Persisting declared taps through the campaign path (this issue + #327) must first decide the relationship between the two — do NOT graft a declared-tap or fold-bearing field onto `persist_taps` before that reconciliation. The #310 cycle ships the one-shot-path fold selector only and leaves this untouched.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#312