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:
2026-06-08 17:20:18 +02:00
parent 3b496883e6
commit bb90c42028
2 changed files with 13 additions and 2 deletions
@@ -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) :=`