audit(0087): cycle close — drift-clean after C24/C9 realization note; rm ephemeral spec/plan
Architect drift review of cycle 0087 (#155, the C24 blueprint-serialization-and- loader first cut). What holds (confirmed against the diff): C17 / no-RustAst (the format carries only type identity + name + bound params + topology; the build closure is dropped and re-derived, no node logic in the data); invariant 9 / domain-free engine (injected resolver, the closed match in aura-std, engine lib deps aura-core + aura-analysis only — a compiled-in closed set, not a dynamic registry); C9 round-trip / C23 bootstrap untouched (loader's terminal step is the unchanged Composite::new -> bootstrap_with_params; validation deferred to the existing gate, not bypassed). Resolution: - fix (ledger): C24 Status refreshed from "unbuilt" to "first cut shipped" with a cycle-0087 realization note; C9's round-trips-both-ways refinement marked realised. The ledger no longer contradicts the code. - backlog (debt-med): the hand-written std_vocabulary match has no guard test that fails when a new zero-arg aura-std node lacks an arm — fails safe today (clean UnknownNodeType, never silent-wrong). Filed as #160. - carry-on (scaling): construction-arg builders + sinks excluded, so no real harness round-trips yet; harness retirement blocks on the construction + project-as-crate layers — already tracked #156/#157/#159. No architect-sweep / regression script is declared in the project facts, so the suite is the gate: cargo test --workspace 748 passed (737 -> 748 = the 11 new tests); clippy --all-targets -D warnings clean. Ephemeral cycle artifacts removed (lifecycle convention): docs/specs/0087-*, docs/plans/0087-*.
This commit is contained in:
+25
-10
@@ -486,7 +486,8 @@ blueprint is not only *emitted* as data (`model_to_json`, the render half) but i
|
||||
itself a **serializable data value with a load path** (data → blueprint →
|
||||
`FlatGraph`), so topology is a value the World generates, stores, and reproduces —
|
||||
see C24. The Rust builder API stays the primary *human / LLM* authoring surface
|
||||
(C17); the data form is the *machine* surface the World owns.
|
||||
(C17); the data form is the *machine* surface the World owns. (Load path **realised**
|
||||
cycle 0087 / #155, `d5602ec`: `aura-engine::blueprint_from_json`.)
|
||||
|
||||
### C10 — Strategy output is a bias stream; signal quality is measured in R; cost is a composable downstream graph (gross R → net R); money is decoupled to the live deploy edge
|
||||
**Guarantee.** A strategy's primary, backtestable output is **not** an equity
|
||||
@@ -1779,16 +1780,30 @@ thread) force the **value**. The engine already treats topology as a runtime val
|
||||
(C9 graph-as-data, C19 "cheap graph re-compilation, not a code recompile", C23 the
|
||||
flat graph as the optimisation target); C24 only adds that the value **serializes out
|
||||
of Rust and loads back in**.
|
||||
**Status (2026-06-29).** The **principle** is settled (this contract, ratified in an
|
||||
in-context design discussion — the #109 resolution). The **format itself** — the
|
||||
concrete data structure, serialization, the data → blueprint loader, and
|
||||
content-addressing for identity (C18) — is **unbuilt**, the next brainstorm /
|
||||
milestone. `model_to_json` (C9) is the one-directional half that exists.
|
||||
Sequencing-coupled to the **project-as-crate authoring layer** (`aura new` /
|
||||
**Status (2026-06-29; first cut shipped — cycle 0087 / #155, `d5602ec`).** The
|
||||
**principle** is settled (this contract, ratified in an in-context design discussion
|
||||
— the #109 resolution). The **first cut now ships**: a `Composite` blueprint
|
||||
serializes to a **canonical, versioned** data value (`format_version` envelope,
|
||||
omit-defaults JSON) and **loads back** (data → blueprint → `FlatGraph`) via
|
||||
`blueprint_to_json` / `blueprint_from_json` (`aura-engine::blueprint_serde`),
|
||||
referencing nodes by **compiled-in type identity** through an **injected resolver**
|
||||
whose concrete closed `match` over the `aura-std` vocabulary lives outside the engine
|
||||
(`aura-std::std_vocabulary`) — the engine stays domain-free, no node registry
|
||||
(invariant 9). Acceptance met: a serialized blueprint runs **bit-identical** (C1) to
|
||||
its Rust-built twin. `model_to_json` (C9) remains the render half; this closes the
|
||||
loop for the round-trippable vocabulary. **Remaining** (each its own milestone
|
||||
issue): the forward-compat *must-understand* gate (#156); the introspectable
|
||||
construction service that *emits* blueprints (#157); content-addressed topology
|
||||
identity in the manifest (#158, C18); retiring the pre-C24 hard-wired `aura-cli`
|
||||
harnesses (`HarnessKind`, `run_stage1_r`, `*_sweep_family`) once the construction +
|
||||
project-as-crate layers land (#159). **Out of the first cut's round-trippable set**
|
||||
(deliberate; fails clean as `UnknownNodeType`, never a silent wrong graph): recording
|
||||
sinks (capture an `mpsc::Sender` — runtime identity, not param-generic data, C19) and
|
||||
construction-arg builders (`LinComb` / `CostSum` / `SimBroker` / `Session` —
|
||||
structural-axis args, a C20 concern), additively addable later (#156). Still
|
||||
sequencing-coupled to the **project-as-crate authoring layer** (`aura new` /
|
||||
`Aura.toml` / `cdylib` loading, C16/C17) and the **composable-orchestration** thread
|
||||
(#109): topology-as-data is the substrate both stand on. The pre-C24 hard-wired
|
||||
harnesses (`HarnessKind`, `run_stage1_r`, the per-strategy `*_sweep_family` in
|
||||
`aura-cli`) are scaffolding retired as it lands.
|
||||
(#109): topology-as-data is the substrate both stand on.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user