audit: cycle 0022 (#46) — drift reconciled; output bindings shipped
Architect drift review (range 69d2094..HEAD), regression gate empty (no scripts configured). Status: drift_found, all resolved here or queued. What holds: C8/C23 intact — output_binding folds OutField.name onto the producer label as a pure render symbol; compiled_view_golden byte-identical, no name reaches the compilat; the drawn where: graph is now exactly the computation DAG (false terminals + node-count inflation gone). Resolved (doc reconciliation, this commit): - docs/design/INDEX.md: two stale render descriptions brought current — the C9/0018 realization said output names render as `[out:<name>]` markers; the C19/0017 realization said `[in:k]`/`[out]` port markers. Both superseded by the `name := producer` binding form (the `[out]` staleness is cycle-0022's; the adjacent `[in:k]` was pre-existing drift from 0019/0020 and is reconciled in the same clause while here). - docs/specs/0022: post-ship note added — its Components/Testing strategy under-counted the blast radius, missing the full-render golden blueprint_view_golden (forced re-capture, caught at implement). Queued (not fixed): output_binding's tuple arm `(a, b) := …` is spec'd + shipped but unexercised (no fixture re-exports >1 field from one node) — filed as #47 (idea). cycle 0022 drift-clean after this reconciliation (not a milestone close).
This commit is contained in:
@@ -303,7 +303,8 @@ cycle 0005). This is the **same arity** C8 already grants a leaf (OHLCV = one po
|
||||
of K fields, **one** port, **one** row per `eval` — C8/C7/C4 untouched, a boundary
|
||||
completion, not a contract change. A strategy composite is simply the K=1 case
|
||||
(one exposure field, C10). The re-export **names** are **non-load-bearing** (C23):
|
||||
they live at the blueprint boundary and in render (`[out:<name>]` markers, #13)
|
||||
they live at the blueprint boundary and in render (cycle 0022/#46 folds each onto
|
||||
its producing node as a `name := …` binding; originally `[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).
|
||||
@@ -613,7 +614,9 @@ label refinement now appears only in the *compiled* view (built nodes, `Node::la
|
||||
structure** as a *program with subroutines*: a flat **main graph** wiring the
|
||||
harness with each composite shown as a **single opaque node** `[name]`, plus a
|
||||
`where:` section that defines each **distinct** composite type **once** (its
|
||||
interior with `[in:k]`/`[out]` port markers; deduped by `name()`, collected
|
||||
interior with named input-entry nodes and outputs folded onto their producers as
|
||||
`name := …` bindings (render refined through cycles 0019–0022; originally
|
||||
`[in:k]`/`[out]` port markers); deduped by `name()`, collected
|
||||
recursively so nested composites are opaque nodes with their own definitions). This
|
||||
supersedes #13's original cluster-box model and is the durable split this view
|
||||
realizes: **blueprint = source** (composites as named subroutines, body once) vs.
|
||||
|
||||
@@ -281,6 +281,14 @@ Build / determinism:
|
||||
byte-identical (C23 — the compiled view never carried output names); the MACD run
|
||||
stays deterministic and unchanged in metrics (render-only change).
|
||||
|
||||
> **Post-ship note (audit 0022).** This Testing strategy and the §Components table
|
||||
> under-counted the test blast radius: besides the `contains`-style assertions, the
|
||||
> full-render golden `blueprint_view_golden` (`crates/aura-cli/src/main.rs`) pins the
|
||||
> entire sample (`sma_cross`) blueprint render and was forced to re-capture (the
|
||||
> `[cross]` output stub + its edge collapse into `[cross := Sub(#Sf,#Ss)]`). The
|
||||
> shipped change is correct and green; this note records the doc-vs-reality gap that
|
||||
> the implement phase surfaced.
|
||||
|
||||
A dedicated multi-output-per-node tuple-binding unit test is **not** required for
|
||||
acceptance (no such composite exists in the fixtures), but `output_binding`'s tuple
|
||||
branch is specified above so a future multi-output composite renders `(a, b) :=`
|
||||
|
||||
Reference in New Issue
Block a user