From 3b56efbdb4a610e9c6d489f2a4fc8521f8e5de0d Mon Sep 17 00:00:00 2001 From: Brummel Date: Thu, 18 Jun 2026 21:45:03 +0200 Subject: [PATCH] =?UTF-8?q?docs(design):=20amend=20C22/C14=20visual=20face?= =?UTF-8?q?=20=E2=80=94=20web-from-disk,=20not=20egui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The visual face pivots from the ledger's egui-native, in-process zero-copy direction to a web frontend served from disk-persisted recorder traces: the engine writes recorded traces to disk, a browser charts them. Settled in an in-context design discussion (provenance in issue #101): raw per-tap trace persistence + serve-time join_on_ts alignment + a static self-contained HTML chart (uPlot). The engine stays headless (C14) — arguably more strictly, since a browser reading a serialized file is further from the hot path than egui reaching into the live SoA columns. Amends the C14 visual-face note and the open "Playground & World UI surface" thread; the C22 realization note lands when the seam ships. refs #101 --- docs/design/INDEX.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 446a5ca..c26ecde 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -623,9 +623,14 @@ for human exploration. Visualization is only a downstream consumer node on the streams. **Forbids.** Any UI/pixel knowledge inside the engine. **Why.** The LLM drives programmatically, the human visually; a headless core -serves both. The visual face is the **playground** (C22) — egui-native, -in-process zero-copy from the SoA columns; it is staged after the runnable -substrate but is core to aura's identity, not optional. +serves both. The visual face is the **playground** (C22) — a **web frontend +served from disk-persisted traces** (revised 2026-06, issue #101: the engine +writes recorded traces to disk, a browser charts them; supersedes the earlier +egui-native / in-process-zero-copy-from-SoA direction). It is staged after the +runnable substrate but is core to aura's identity, not optional. The pivot keeps +this contract's core intact — and arguably tightens it: a browser reading a +serialized trace file is a stricter "no UI knowledge in the engine" than egui +reaching zero-copy into the live SoA columns. ### C15 — Resampling-as-node; sessions/calendars **Guarantee.** A resampler is a node (finer stream → coarser bar stream), @@ -1066,9 +1071,14 @@ load-bearing in the flat graph. ## Open architectural threads not yet resolved -- **Playground & World UI surface** — the playground is core (C22), egui-native; - open is the concrete UI of the meta-views (walk-forward, sweep surfaces, - comparison) and the run/replay clock controls. +- **Playground & World UI surface** — the playground is core (C22); the surface + is a **web frontend served from disk-persisted traces** (revised 2026-06, issue + #101; not egui). Settled for the first cut: raw per-tap trace persistence to + disk (columnar/SoA form, C7) + serve-time `join_on_ts` alignment + a static + self-contained HTML chart page (uPlot, vendored like the `render_html` + Graphviz-WASM blob), feeds overlaid or timestamp-aligned in panels. Still open: + families-comparison meta-views (walk-forward, sweep surfaces, multi-strategy / + instrument comparison), a local server, and the run/replay clock controls. - **Parameter-space search strategies** (Bayesian/genetic) — pluggable policies atop the atomic sim unit (C12), not yet designed. - **`aura new` scaffolder, the experiment-builder API, and `Aura.toml`'s