audit: cycle 0031 (#56) — drift fixed (stale C9 render prose); node-instance naming

Architect drift review of cycle 0031 (node-instance naming; spec 5818497, plan
d890090, impl ffed8cc). Regression gate: no scripts configured (commands.regression
is empty) — the architect is the gate.

What holds: the ParamAlias retirement is complete and surgical — ParamAlias,
aliases_on, check_alias_indices, leaf_has_unaliased_param, Composite.params, and
the Composite::new 5th arg are gone from all code with no orphaned references
(only historical specs/plans 0016-0024 mention them, correctly untouched);
lib.rs re-exports cleaned. C23 preserved in fact: node_name() flows only into
signature_of (fan-in) and collect_params (param path), never into the compilat —
it stays name-free, wired by raw index. C11 value-empty holds: a node name is
construction identity, injected nowhere into the value vector. param_space() is
uniformly <node>.<param>; all call sites migrated in lockstep. 198 tests green,
clippy clean.

Drift fixed (this commit): the C9 fan-in refinement prose still asserted "the
graph view renders each fan-in input as the shortest sibling-unique prefix of its
source signature" — that render died with ascii-dag in cycle 0026; signature_of
now has zero render consumers. Corrected to state signature_of is
construction-phase-only with no render consumer, and that surfacing node identity
in the WASM viewer is tracked follow-up.

Drift routed to backlog: the node instance name does not reach the graph model
(model_to_json emits the type label, so the viewer shows identical [SMA] boxes
for named fan-in legs) — a deliberate 0031 scope decision, filed as #58 (idea,
relates to #13/#37), not a regression.

Cycle 0031 drift-clean after the one fix.
This commit is contained in:
2026-06-11 11:54:41 +02:00
parent ffed8cc612
commit 0e411f1796
+4 -3
View File
@@ -373,9 +373,10 @@ configuration axis: a collision is a `CompileError` (`IndistinguishableFanIn`)
when at least one colliding source carries a **param** (a param-bearing same-name
collision), resolved by giving the colliding nodes distinct names. Paramless
interchangeable same-name sources (equal signatures, no param) stay legal.
Construction-phase only; the compilat stays name-free (C23). The graph view
renders each fan-in input as the shortest sibling-unique prefix of its source
signature.
Construction-phase only; the compilat stays name-free (C23), and `signature_of`
has no render consumer (the ascii-dag fan-in render was retired with the renderer
in cycle 0026). Surfacing the disambiguating node identity in the WASM graph view
is tracked follow-up, not yet realized.
### C10 — Strategy output is an intent/exposure stream; position management is a decoupled derived layer; brokers are downstream nodes
**Guarantee.** A strategy's primary, backtestable output is **not** an equity