The single-file ledger had grown to 2968 lines / ~42k tokens, mixing current design law with accreted history: 59 cycle-stamped realization blocks, 18 [HISTORY] passages, 22 supersession markers, and the C10 / C22 / C24 reframe sagas layered several supersessions deep. A code-grounding audit (31 agents, adversarially verified) confirmed 11 defects stated as current truth: stale crate homes from the C28 #288 roster split (cost nodes, PositionManagement, PositionEvent, Session), the renamed InputSpec->PortSpec, the pre-#241 project model in C16 and the open-threads section, a stale HarnessKind retirement deferral in C24, and three C28-internal inconsistencies. New shape, per the ailang precedent: - INDEX.md stays the sole addressable entry point: foundation, external components, a C-id-keyed contract map (one line per contract), and only the genuinely open architectural threads. - contracts/cNN-<slug>.md carries each contract's current truth only: Guarantee / Forbids / Why with ratified refinements integrated, plus a code-anchored Current state. All confirmed defects are fixed here; crate anchors were re-verified against the tree. - contracts/cNN-<slug>.history.md (18 sidecars) and INDEX.history.md preserve every superseded block verbatim, stamps and issue refs intact, under a frozen-record banner. Nothing was deleted: superseded design intent remains an addressable working-tree artifact, off the per-cycle audit walk. - Ledger discipline is now stated in INDEX.md: live files are edited in place at cycle close, superseded text moves verbatim to the sidecar, and a supersession marker in a live file is itself an audit finding. Every contract file was verified against its old text by an independent zero-loss pass (statement-by-statement) plus a code-accuracy spot check; C-ids and contract titles are unchanged, so existing C-id citations in code, tests, and issues resolve as before.
3.7 KiB
C21 — The World: the meta-level is the product
Guarantee. Above the harness (C12's disjoint sim unit) sits the World — the project's program / "game" (a Rust crate, C16). Within it, harnesses are dynamically constructible, first-class objects: meta-programs (walk-forward, sweep, optimize, Monte-Carlo — C12's orchestration axes) construct harness instances at runtime via the bootstrap (C19), run them disjointly in parallel (C1), aggregate / compare their results, and discard the transient instances. A walk-forward rolls windows → bootstraps a harness per window → stitches out-of-sample equity + parameter stability into one meta-result. Orchestrating families of harnesses is first-class, not a headless afterthought; the run registry (C18) is the World's memory. A harness's topology is a serializable data value the World owns (C24), not Rust source — the precondition for the World's full ambition: it can generate, mutate, structurally search (genetic / NEAT-style graph operators), compare, and serialize-for-reproduction (C18) families that vary structure, not only numeric params. A param sweep over a fixed skeleton is the degenerate case; varying the skeleton itself needs topology-as-value. (#109, resolved 2026-06-29.)
Forbids. Relegating multi-harness orchestration (walk-forward / sweep / comparison) to second-class headless-only status; treating the single backtest as the product.
Why. What happens within one harness — backtest a strategy → equity — is commodity; every quant system covers it. aura exists for the meta-level: a programmable space where harnesses are dynamically built and families of them orchestrated and explored. The deterministic single-harness engine (C1–C20) is the substrate; the World is the product. The game-engine principle (C16) made literal: the engine owns the scene / blueprint graph as content, instantiates and runs it, the way aura owns harness topology as data (C24).
Current state
The four orchestration axes (sweep, walk-forward, Monte-Carlo, generalize) are
realized as families the World constructs, runs disjointly (C1), and aggregates.
The dissolved orchestration verbs translate each invocation into a
content-addressed process + campaign document, run through a single campaign
executor (aura-campaign, driven by aura-runner), so every ad-hoc family run is
durable, diffable, reproducible intent rather than a bespoke code path per verb.
Harness topology is a World-owned serializable data value (C24): blueprints are
JSON that the bootstrap (C19) compiles to a flat instance (C23); the run registry
(C18) persists each run's manifest as the World's memory, and any family member is
re-derivable from that manifest.
The programmable analysis meta-level is only partly realized. Families are produced and compared (the trace explorer's family view, C22) but are not yet themselves composable — sweep / MC / walk-forward as first-class meta-level operators one can nest and pipe — and the structural-search ambition (generate / mutate / genetic / NEAT-style graph operators over topology-as-value) is not built. That is the open search-policy direction; today the World constructs fixed family shapes rather than searching over the space of shapes.
See also
- C24 — harness topology as a World-owned data value
- C16 — the engine / project split and the game-engine principle
- C12 — the atomic sim unit and the four orchestration axes
- C19 — blueprint → instance bootstrap
- C18 — the run registry, the World's memory
- C22 — the trace explorer that plays these families