diff --git a/crates/aura-engine/Cargo.toml b/crates/aura-engine/Cargo.toml index 9e32830..68185d3 100644 --- a/crates/aura-engine/Cargo.toml +++ b/crates/aura-engine/Cargo.toml @@ -7,8 +7,9 @@ publish.workspace = true [dependencies] aura-core = { path = "../aura-core" } -# data-server (the first data source) enters when the ingestion task starts; -# kept out of the bare skeleton so the workspace compiles without the network. +# No external dependencies: aura-engine is an engine crate and stays +# dependency-pure. The data-server ingestion edge lives in the aura-ingest crate +# (the external-dependency firewall — cycle 0011, INDEX.md C16), never here. [dev-dependencies] aura-std = { path = "../aura-std" } diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 716f4c7..f1fc9ed 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -62,9 +62,14 @@ source of truth — not session memory. **AoS** (`M1Parsed`/`TickParsed`, `time_ms: i64` Unix-ms). The ingestion boundary (C3) therefore **transposes** these AoS records into aura's SoA columns (C7) and normalizes `time_ms` → canonical epoch-ns at that one - boundary. Pulled in as a cargo git dependency when the ingestion task starts; - deliberately absent from the bare skeleton so the workspace compiles without - the network. + boundary. Pulled in as a cargo git dependency by the **`aura-ingest`** crate + (cycle 0011) — the ingestion edge and the workspace's **external-dependency + firewall**: `aura-ingest` is the *only* crate that links `data-server` (hence + its transitive `chrono`/`regex`/`zip`), so the engine crates (`aura-core` / + `aura-std` / `aura-engine` / `aura-cli`) and the frozen deploy artifact (C13) + stay external-dependency-free. Consequence: `cargo build/test --workspace` now + resolves from a populated cargo cache (one Gitea fetch) rather than fully + offline. - **RustAst (`myc`)** — `~/dev/RustAst`, Gitea `Brummel/RustAst` (`http://192.168.178.103:3000/Brummel/RustAst.git`). The predecessor DSL attempt (Foundation): **a conceptual reference, never a dependency** — its DSL authoring @@ -352,6 +357,12 @@ unit: (1) param-sweep (grid/random), (2) optimization (argmax metric), (3) walk-forward (rolling in-sample optimize + out-of-sample test), (4) Monte-Carlo (N seeded realizations perturbing input). **MC = sweep over seeds**; each realization is itself deterministic given its seed. +*Status (cycle 0011).* The first ingestion (`aura-ingest`) **eagerly +materializes** a data-server window into owned source streams rather than +sharing `data-server`'s `Arc<[T]>` chunks zero-copy across sims — the cross-sim +`Arc<[T]>` sharing has no consumer until the orchestration axes above are built. +That sharing remains the target for the orchestration cycle that introduces +them; the transpose logic is unchanged by it. A known, deliberate gap, not drift. **Forbids.** Baking a specific search strategy (Bayesian/genetic) into the primitive — those are pluggable policies atop the atomic unit; recompiling on a param change. @@ -410,11 +421,21 @@ strategy / experiment blueprints — plus a static `Aura.toml` (project context: data paths, instrument/pip metadata, default broker & window, runs dir). During research the `aura` host loads and runs it (C13 hot-reload); for deploy the chosen strategy + broker freeze into a standalone binary. **A project is -therefore always a Rust program built on the engine.** +therefore always a Rust program built on the engine.** Beyond the node-reuse +tiers, the engine workspace also carries non-node crates — `aura-engine` (the +run loop), `aura-cli` (the `aura` binary), and **`aura-ingest`** (the +data-source ingestion edge, cycle 0011). `aura-ingest` is the +**external-dependency firewall**: it alone links external crates (via +`data-server`), keeping the other engine crates and the frozen deploy artifact +(C13) dependency-pure (see External components). The engine workspace is +**zero-external-dependency** by commitment — the hand-rolled JSON of C14/C18 and +the from-scratch `aura-core` substrate exist precisely to honour it; the one +sanctioned external tree enters at the ingestion edge and is firewalled there. **Forbids.** Project-specific signals in the aura repo (it keeps at most example/fixture nodes under `examples/` for its own tests); a multi-project manager inside aura; a bespoke node registry/marketplace (cargo + Gitea *is* the -package mechanism). +package mechanism); an external (crates.io / git) dependency in any engine crate +other than the ingestion-edge crate `aura-ingest`. **Why.** The engine/game split keeps the engine sharp and reusable while each project versions its own research with its own forward-queue. Promotion (local → shared → std) is the ordinary Rust reuse gradient, no new mechanism.