Collapse the redundant _open example twins into their closed siblings #248
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
#246 made a bound blueprint param an overridable default: a sweep/campaign axis may name a bound param and re-open it per family (
docs/design/INDEX.md, C12 amendment 2026-07-12). The four example pairs undercrates/aura-cli/examples/—r_sma/r_sma_open,r_breakout/r_breakout_open,r_meanrev/r_meanrev_open,r_channel/r_channel_open— predate that change: each_openvariant exists only because sweeping used to require open params. All params involved are smooth tuning magnitudes (SMA lengths, band multipliers) with honest defaults, so the closed variants alone now serve bothrunandsweep(via bound-override axes) — the same consolidation the #246 scaffold already shipped (singlesignal.jsonstarter).Decision (2026-07-13)
The
_opentwins are removed; the closed variants remain the only user-facing example corpus. The open param state itself STAYS: a design analysis found two classes where a required default would be semantically dishonest — discrete hypothesis-selector params (e.g. a weekday or news-category id, where a default silently substitutes a different experiment) and instrument-dimensioned magnitudes (e.g. grid spacing in raw price units, where no value is honest across instruments) — and thegangmechanism structurally requires its members to stay un-bound (docs/authoring-guide.md§1, gang row). Only the redundant example twins go.Scope note (verified 2026-07-13)
112 references to the four
_openfilenames:crates/aura-cli/tests/cli_run.rs(82),crates/aura-cli/src/main.rs(13),crates/aura-cli/tests/graph_construct.rs(11),crates/aura-cli/tests/research_docs.rs(3),crates/aura-cli/tests/project_load.rs(1),crates/aura-cli/src/render.rs(1),docs/design/INDEX.md(1). Tests sweeping an_openfile move to the closed twin with bound-override axes; the wrap prefix changes with the blueprint name (r_sma_open.fast_sma.length→r_sma.fast_sma.length). Code paths that genuinely need an OPEN blueprint (the run/mc closed-guard refusal, sweep's missing-knob coverage error, gang) keep their coverage via fixtures undercrates/aura-cli/tests/fixtures/, not via user-facing examples.Acceptance
crates/aura-cli/examples/ships no_openvariantsDesign reconciliation (specify)
Spec: collapse-open-example-twins. A full recon over the 112 references corrects one scope-note premise and resolves four derivable forks; this records them.
Correction to the scope note (axis prefixes). The axis wrap prefix is the blueprint's internal
namefield, which is identical between each twin pair (sma_signal,r_breakout_signal,r_meanrev_signal,hl_channel) — not the filename. Migrated tests therefore keep their--axisstrings byte-for-byte; only the file path swaps. The scope note's example rename (r_sma_open.fast_sma.length→r_sma.fast_sma.length) does not occur anywhere._openfiles → relocate tocrates/aura-cli/tests/fixtures/. Basis: derived — 22 tests genuinely need OPEN shapes (introspect axis-namespace pins, gang-vs-hardwired equivalence, run/mc closed-guard refusals, the subset-axes MissingKnob refusal), the closed twins carry nogangssection, and no existing fixture provides these shapes; the issue body itself names fixtures as the coverage home. The acceptance line "examples/ ships no_openvariants" holds either way.emit_*/shipped_*_serializein crates/aura-cli/src/main.rs) — drop their_openhalves vs. repoint → repoint to the fixture location. Basis: derived — the relocated open fixtures stay builder-generated and byte-pinned (green-by-construction), which the gang-equivalence tests rely on; dropping the pins would leave hand-maintained fixture bytes free to drift from the builders they mirror.aura graphwith no blueprint argument) embedsexamples/r_sma_open.jsonviainclude_str!(crates/aura-cli/src/main.rs,dispatch_graph) → repoint toexamples/r_sma.json. Basis: derived — the default sample is user-facing surface and belongs to the user-facing gallery; rendering does not require open params. (The scope note's "all references are test code" was wrong for this one site.)e902a0f), so axis references over a closed-seeded blueprint resolve identically; the migrated suite run verifies it.Reference classification over the 112 sites: 22 NEEDS-OPEN (repoint to the relocated fixtures), 70 MIGRATE (file-path swap, axis strings unchanged), 7 GENERATOR (repoint emit/pin targets), 7 DOC (comments + one design-ledger history note). Four byte-pinned exact-grade tests (cli_run.rs) are expected float-stable under migration (the axes fully bind
fast.length/slow.length;bias.scale=0.5is identical across the r_sma twins) and are re-run to confirm.Autonomous sign-off (specify)
The spec collapse-open-example-twins was signed autonomously on 2026-07-13 via an independent grounding-check PASS — 7 load-bearing assumptions ratified by currently-green tests (among them: sweeping a closed blueprint over a bound-param axis reproduces bit-identically since #246; open-swept metrics equal closed-hardwired metrics in the gang-equivalence pins; the shipped _open bytes match their builders). No human signed at sign time; this comment is the audit trail and the decision is vetoable.