Files
Brummel 11dfff860c fieldtest: cycle 0031 node-naming — naming cure under-signposted on the by-name flow
Per-cycle fieldtest of node-instance naming (#56), driven as a downstream
consumer from the public interface only (ledger + spec + rustdoc + CLI; no
crates/*/src read), three fixtures built and run from HEAD.

Verdict: the core 0031 promise holds first-try. A consumer authors
Sma::builder().named("fast"), inspects param_space() (sma_cross.fast.length),
binds by name and runs; the default-name case (sma.length / exposure.scale,
verbatim lowercase) and paramless-interchangeable-stays-legal both hold.

0 bugs, 3 working, 2 friction, 1 spec_gap. The one real gap (verified by the
orchestrator against the fixture output): the spec's headline forcing function
IndistinguishableFanIn does NOT reach an author on the canonical
.with(...).bootstrap() flow. An un-named 2-SMA cross emits a literal DUPLICATE
knob (sma_cross.sma.length x2); the binder resolves names before the compile
fan-in check, so the author hits UnknownKnob / AmbiguousKnob("sma_cross.sma.length")
— which point at the knob, not at the cure "name your nodes". IndistinguishableFanIn
only surfaces via the positional compile_with_params path. Rejection still
happens (no invalid blueprint runs), so it is an ergonomic/signposting gap, not
a correctness bug. Routed to the backlog (relates to #58); 0031 stays
audit-closed. Minor: FlatGraph/Harness lack Debug, so a bootstrap Result can't
be {:?}-printed.
2026-06-11 12:18:29 +02:00

16 lines
649 B
Plaintext

[0] un-named cross param_space():
sma_cross.sma.length : I64
sma_cross.sma.length : I64
exposure.scale : F64
[1] un-named cross bootstrap is_err: true
-> diagnostic the author sees: UnknownKnob("sma_cross.length")
[1a] bind the real emitted (duplicate) name -> Some(AmbiguousKnob("sma_cross.sma.length"))
[1b] un-named cross compile_with_params err: Some(IndistinguishableFanIn { node: 2 })
-> IndistinguishableFanIn at interior node index 2 (the Sub that fans in both un-named SMAs)
[2] named cross bootstrap ok: true
[2] named run recorded 12 rows
OK: un-named fan-in rejected, naming the legs is the single recovering act.