diff --git a/crates/aura-engine/src/sweep.rs b/crates/aura-engine/src/sweep.rs index f23c1ec..b419627 100644 --- a/crates/aura-engine/src/sweep.rs +++ b/crates/aura-engine/src/sweep.rs @@ -1,8 +1,11 @@ -//! Grid param-sweep (C12.1): enumerate a cartesian grid over a blueprint's -//! param-space and run each point disjointly (C1). This module owns enumeration -//! (`GridSpace`), execution (`sweep`), and collection (`SweepFamily`); the -//! per-point run-to-metrics closure is the author's (harness-specific sink glue -//! the engine cannot generically own — C8/C18). +//! Param-sweep (C12.1): enumerate a blueprint's param-space — either a cartesian +//! `GridSpace` (a discrete per-slot lattice) or a seeded `RandomSpace` (`N` draws +//! over typed continuous ranges) — and run each point disjointly (C1). Both +//! enumerations implement the `Space` trait that `sweep` is generic over, so +//! either runs through one execution path. This module owns enumeration +//! (`GridSpace` / `RandomSpace` / the `Space` trait), execution (`sweep`), and +//! collection (`SweepFamily`); the per-point run-to-metrics closure is the +//! author's (harness-specific sink glue the engine cannot generically own — C8/C18). use aura_core::{zip_params, Cell, ParamSpec, Scalar, ScalarKind}; use crate::RunReport; diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 8f3bcfe..c8e989c 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -568,6 +568,16 @@ a streaming path *existing*, not by deleting the eager one). **Still open:** cross-*sim* `Arc<[T]>` sharing — one window shared zero-copy across many disjoint sweep sims — has no consumer until the orchestration families (axes 2–4 above: #66/#68/#69) are built, and remains the target for those cycles. +**Realization (cycles 0028, 0049).** Axis 1 (param-sweep) is built. `GridSpace` +(0028) enumerates a cartesian lattice over discrete per-slot value-lists; +`RandomSpace` (0049) draws `N` seeded points over typed continuous `ParamRange`s +(I64 inclusive `[lo,hi]`, F64 half-open `[lo,hi)`), validated against the +param-space before any run. Both implement the `Space` trait the disjoint +`sweep` / `run_indexed` core is generic over, so either enumeration runs through +one execution path (C1: results in enumeration order, not completion order). The +seeded sampler reuses the bit-stable `SplitMix64` as a **code-path-disjoint** +instance from the data-edge seed RNG (the source-seam firewall, #52/#71: they +share only the `u64` type, never a path). **Forbids.** Baking a specific search strategy (Bayesian/genetic) into the primitive — those are pluggable policies atop the atomic unit; recompiling on a param change.