From e7542864c6c16b6d689aca620e7b138a9e92c04d Mon Sep 17 00:00:00 2001 From: Brummel Date: Thu, 4 Jun 2026 17:18:14 +0200 Subject: [PATCH] =?UTF-8?q?audit:=20cycle=200007=20tidy=20=E2=80=94=20add?= =?UTF-8?q?=20C10=20Realization=20(cycle=200007)=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Architect drift review (f000373..HEAD) found one item: the C10 reframe was amended in framing but carried no "Realization (cycle 0007)" note recording what actually shipped — the spec's own ship gate required it (C8/C22 carry their realization notes; C10 did not). Added: the signal-quality half realized as Exposure { scale } + SimBroker { pip_size } on the unchanged, domain-free engine, with the position-management half explicitly confirmed deferred. Everything else holds: the reframe is propagated consistently across CLAUDE.md invariant #7, the seven touched glossary entries + the new exposure-stream entry, and project-layout.md (no stale "position table is the strategy output" survivor); the engine stays domain-free (the only RefCell hit in aura-engine/src is a #[cfg(test)] doc comment); C1 determinism and C2 causality are each pinned by a behaviour test asserting observable output, not internals. No regression scripts configured (commands.regression empty) — that gate is a no-op; architect is the gate. Cycle 0007 is drift-clean. refs #4 #5 Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/design/INDEX.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 4147d8c..716f4c7 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -311,6 +311,22 @@ broker nodes then test real-world viability. Modelling brokers as nodes (not a bespoke subsystem) keeps them within the one Node/graph abstraction (C9). This supersedes the earlier "the strategy's output is the position-event table" framing (cycle 0007 reframe). +**Realization (cycle 0007).** The signal-quality half of this contract is now +realized at the substrate, as two `aura-std` nodes composed on the unchanged +engine (the engine stays domain-free — it routes only `f64` records, never +"exposure" or "equity"). The **exposure stream** is realized as `Exposure { scale +}`: the decision/sizing node, `clamp(signal / scale, -1, +1)`, one `f64` per fired +cycle (`None` until warmed up). The **sim-optimal broker** is realized as +`SimBroker { pip_size }`: a two-input node (exposure, price) that accumulates +`prev_exposure · (price − prev_price) / pip_size` and emits cumulative pip equity +— the exposure held *into* a cycle (decided at t-1) earns that cycle's return, so +the integration is causal (C2), and `pip_size` is held reference metadata +(C7/C15), never streamed. An end-to-end harness (SMA-cross → `Exposure` → +`SimBroker` → recording sink) produces a recorded pip-equity curve, bit-identical +across runs (C1). The **position-management half** — deriving the position-event +table (buy/sell/close, `position_id`, partial closes) from the exposure history, +and the realistic broker nodes that consume it — is deliberately **not** built +this cycle; it remains the decoupled, derived, deferred layer described above. ### C11 — Generalized sources; record-then-replay determinism boundary **Guarantee.** A source is anything that produces timestamped scalar streams —