audit: cycle 0019 (#41) — drift-clean; C9 boundary-uniform realization note
Architect drift review over 8bc429f..HEAD (spec03f2dc4, planc9115e3, impl 41cbb55; plus the in-range #42 fieldtest port241bb62). No regression scripts configured (profile regression/architect_sweeps both empty) — the architect is the sole gate. Result: clean. C23 holds — Role.name / ParamAlias.name / OutField.name are all dropped at lowering; compiled_view_golden byte-identical (untouched in the diff); the param_space slot-order anchors green and unmodified. Param aliasing is a pure naming overlay (relabel in place, slot order/arity/kind unchanged), confirmed by the new relabel/unaliased/partial tests. C8/C7/C4/ C9 untouched (authoring-surface legibility only); BadInteriorIndex reused, no new variant. The #42 port is faithful (assertions strengthened, not gutted). One drift item, resolved here: the 0018 C9 realization note carried a stale "Input-role and param names ... remain index-only pending #41" sentence. #41 has landed, so this commit replaces it with a cycle-0019 realization note recording that all three composite-boundary edge-kinds (input roles / params / outputs) are now uniform named projections of interior handles (Role / ParamAlias / OutField), names non-load-bearing and dropped at lowering — the prose now matches the shipped code. drift-clean, not a milestone close (no milestone fieldtest run here).
This commit is contained in:
+16
-3
@@ -306,9 +306,22 @@ completion, not a contract change. A strategy composite is simply the K=1 case
|
||||
they live at the blueprint boundary and in render (`[out:<name>]` markers, #13)
|
||||
but are dropped at lowering — `ItemLowering::Composite.output` is `Vec<(usize,
|
||||
usize)>`, raw index pairs only, so the compilat is name-free (verified: the
|
||||
compiled-view render stayed bit-identical across this change). Input-role and
|
||||
param **names** at the same boundary remain index-only pending #41 (the legibility
|
||||
sibling that depends on this cycle).
|
||||
compiled-view render stayed bit-identical across this change).
|
||||
**Realization (cycle 0019 — name the composite boundary, #41).** The same
|
||||
named-projection shape now covers the other two boundary edge-kinds, so **all
|
||||
three** are uniform: `input_roles` is a `Vec<Role { name, targets }>` (was a bare
|
||||
`Vec<Vec<Target>>`) and a composite carries `params: Vec<ParamAlias { name, node,
|
||||
slot }>`, alongside `output: Vec<OutField>`. Each is an ordered, positionally-indexed
|
||||
**named projection** of interior handles. Param aliasing is a **pure naming overlay**,
|
||||
not curation: `param_space()` relabels an aliased slot's surface name **in place** —
|
||||
slot order, arity, and kinds are unchanged, so the sweep surface is identical and the
|
||||
`param_space_mirrors_compiled_flat_node_param_order` anchor stays green. Like the
|
||||
output names, role and param **names** are **non-load-bearing** (C23): they live at
|
||||
the blueprint boundary and in render (`[in:<name>]` / `[param:<name>]` markers) but
|
||||
are dropped at lowering — the compilat is wired by raw index and a dangling alias is
|
||||
rejected at compile (`BadInteriorIndex`), not silently lowered. The full composite
|
||||
boundary signature (named inputs, params, multi-outputs) is now legible without
|
||||
changing the compilat.
|
||||
|
||||
### 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
|
||||
|
||||
Reference in New Issue
Block a user