# Fieldtest corpus — "Measurement as a first-class citizen" milestone Downstream-consumer study blueprints authored from the public interface (ledger C24/C26/C27, glossary, shipped example envelopes) to exercise the milestone's three composing capabilities end to end: 1. **normalized-time bucketing** — coarse bars / session anchoring bucket by the nominal minute despite jittered provider stamps; 2. **the four new std cells** — `Sign`, `Select`, `CumSum`, `When`; 3. **declared taps** — named measurement points on interior wires, recorded from one `aura run`. Each scenario ships three files: `*.ops.json` (the role-6a op-script, the canonical authoring input), `*.bp.json` (the `aura graph build` output), and `*.json` (the final runnable envelope — the built blueprint **plus a hand-added `taps` field**, since no op-script verb and no documented surface declares a tap; see the fieldtest spec). ## Reproduce Build the CLI (`cargo build --release -p aura-cli`), then, inside a scratch project (`aura new lab && cd lab`), copy a scenario's `*.json` in and run it. Declared taps persist under `runs/traces//` only inside a project; chart with `aura chart `. ### 1 — `mfc_1_gated_rate` (cells + taps, synthetic) ``` aura run mfc_1_gated_rate.json ``` A gated-rate / mux / counter study over the synthetic close stream. `Gt` drives a Bool gate; `Select` muxes it back to ±1 (the Bool→F64 bridge); `Sign` reads the fast−slow spread direction; `When(1.0, gate)` forwards a 1 only on gate-true cycles, and `CumSum` over it vs `CumSum` over the raw clock gives the rate = qualifying/total. Verified: `dir_sign == sign(spread)`; `mux_select == ±1` by the gate; `gated_when` records exactly the gate-true subsequence; `count_above / count_all == 6 / 18`. ### 2 — `mfc_2_session_anchor` (session anchoring + taps) ``` aura run mfc_2_session_anchor.json --real GER40 --from 1725148800000 --to 1725321600000 ``` `SessionFrankfurt` yields `bars_since_open`; `EqConst(·, 0)` flags the first block of each session; `When` gates a momentum sign to it. Over real GER40 the `isfirst_flag==1` set equals the `bars_since_open==0` set. On the synthetic stream `bars_since_open` is a constant pre-open sentinel (toy timestamps), so the anchoring is only meaningful over `--real`. ### 3 — `mfc_3_first_candle_momentum` (all three axes, real) ``` aura run mfc_3_first_candle_momentum.json --real GER40 --from 1725148800000 --to 1727740800000 ``` The origin question — "is the first coarse candle after a session open a momentum indicator?" `Resample` builds 15-minute bars (clean 15.0-min cadence preserved across `:59.999` jittered stamps — the snap fix), `SessionFrankfurt` anchors on the coarse close, and `When` gates `Sign(coarse close − coarse open)` to the first coarse candle of each session. Records exactly one `firstmom` sample per session (21 over September 2024), zero throwaway Rust.