Architect drift review of the #38 cycle (a70c5fa..cd31447) against the design ledger. No ledger-contract drift: C23 holds (render_compilat byte-identical, compiled_view_golden green), C9/C12 honoured (the new main-graph + where:- definitions view renders a composite as an opaque authoring-level node with its body defined once — a faithful blueprint/source view vs. the inlined compiled form), the nested-composite unimplemented! is genuinely removed and tested, and no orphaned references to the removed ItemDisplay/producer_id/consumer_ids remain in crates/ (only frozen historical plan docs mention them). Two debt items, both fixed here (not carried): - [medium] crates/aura-cli/src/graph.rs — render_compilat open-coded the same Graph::with_mode/add_node/add_edge/render idiom the new render_flat helper wraps. Fixed: render_compilat now builds its edge-pairs (its Edge structs + source targets) and delegates to render_flat, so render_flat is the single flat-build point shared by all three render functions. Behaviour-preserving — same node and edge insertion order — verified by compiled_view_golden staying byte-identical. - [low] the retired cluster-box blueprint-render model and its substantive cause (ascii-dag 0.9.1's subgraph /2 centering bug; flat-only being the fix) lived only in the superseded spec 0013, not in the durable contract layer. Fixed: added a "Realization (cycle 0017 — blueprint render = main graph + definitions)" note to the ledger (INDEX.md, under the C22 blueprint-view detail) recording the opaque-node + where:-definitions model, the authoring-vs-compiled split, the ascii-dag-bug rationale, the scale/render-once/nested benefits, and the #37 playground (enter/focus) counterpart vs. #38 static CLI form. regression: profile declares no regression scripts and no architect_sweeps — the architect review is the sole gate. No baseline to update. Cycle 0017 is drift-clean after these fixes. NOT a milestone close — that needs the end-to-end milestone fieldtest, still deferred until the sweep root (#32-#33) lands.
This commit is contained in:
@@ -137,17 +137,11 @@ pub fn render_compilat(nodes: &[Box<dyn Node>], sources: &[SourceSpec], edges: &
|
||||
labels.push(format!("source:{:?}", src.kind));
|
||||
}
|
||||
|
||||
let mut g = Graph::with_mode(RenderMode::Vertical);
|
||||
for (id, l) in labels.iter().enumerate() {
|
||||
g.add_node(id, l);
|
||||
}
|
||||
for e in edges {
|
||||
g.add_edge(e.from, e.to, None);
|
||||
}
|
||||
let mut edge_pairs: Vec<(usize, usize)> = edges.iter().map(|e| (e.from, e.to)).collect();
|
||||
for (i, src) in sources.iter().enumerate() {
|
||||
for t in &src.targets {
|
||||
g.add_edge(source_base + i, t.node, None);
|
||||
edge_pairs.push((source_base + i, t.node));
|
||||
}
|
||||
}
|
||||
g.render()
|
||||
render_flat(&labels, &edge_pairs)
|
||||
}
|
||||
|
||||
@@ -569,6 +569,25 @@ invariant). The value *domain* (e.g. `length ≥ 1`) stays the constructor's own
|
||||
detail for C22: the blueprint view (pre-run, param-generic) labels a leaf by **bare
|
||||
type** (`LeafFactory::label` → `[SMA]`) — the value-bearing `SMA(2)` of C8's render-
|
||||
label refinement now appears only in the *compiled* view (built nodes, `Node::label`).
|
||||
**Realization (cycle 0017 — blueprint render = main graph + definitions).** The
|
||||
`aura graph` blueprint view (C9 graph-as-data, #13) renders the **authored
|
||||
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
|
||||
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.
|
||||
**compiled = inlined machine form** (C23, boundary dissolved). The substantive cause
|
||||
for retiring cluster boxes is a real renderer defect — `ascii-dag` 0.9.1's subgraph
|
||||
level-centering rounds sibling x-positions with `/2`, overlapping wide sibling
|
||||
labels (width/parity-sensitive, no config/padding dodge surviving unequal-width
|
||||
siblings); the **flat** layout is collision-free, and both views now build flat
|
||||
graphs only. The model also scales (blueprint size tracks top-level wiring, not
|
||||
inlined node count) and removes #13's nested-composite `unimplemented!` (the
|
||||
definitions pass recurses). The interactive *enter/focus* counterpart (a composite
|
||||
collapsed to a navigable node) is the playground's, parked as a separate concern
|
||||
(#37); the static CLI keeps the all-at-once definitions form (#38).
|
||||
|
||||
### C20 — Strategy ↔ harness; the harness is the root sim graph
|
||||
**Guarantee.** A **strategy** is a reusable composite-node blueprint (C9):
|
||||
|
||||
Reference in New Issue
Block a user