audit: cycle 0028 (#32) — drift-clean; param-sweep grid (the World, cycle C)
Architect drift review over 776bd54..HEAD: drift-clean on every load-bearing contract. - C1: sweep()'s disjointness is real — sweep_with_threads shares only an AtomicUsize cursor, tags results by point index, sorts post-join; the family order is the enumeration order, thread-count-independent (pinned by family_is_deterministic_across_thread_counts at 1 vs 8 vs derived-N). Each point builds fresh, shares nothing mutable. First realization of "parallelism across sims, never within one". - C16: zero-external-dependency intact — crates/aura-engine/Cargo.toml unchanged, no dependency added; execution is std::thread::scope, never rayon. No serde. - C12: scope discipline held — only the C12.1 grid axis landed; random / optimize / walk-forward / MC and per-point manifest assembly are absent and deferred per spec. - C19/C20: untouched — sweep drives bootstrap_with_params per point, no topology mutation. - C14: the CLI's sweep_point_to_json mirrors RunReport::to_json's hand-rolled token rules byte-for-byte; no second JSON dialect. C8/C18: metrics-drain stays author-side in the closure (the engine ↔ harness boundary the design intends). Regression: no scripts configured (profile regression: []) — architect is the sole gate, and it is green. Debt (filed, blocks nothing): - #53 — the SMA-cross sample harness topology is now duplicated across three sites (blueprint.rs test, sweep.rs test, cli main.rs production) with no test pinning them equal. Pure tidy, carry-on. Deferred follow-up filed: - #52 — random param-sweep enumeration (C12.1's other half: ranges + sample-count + seeded RNG), the deliberate scope cut from this cycle's design. Cycle 0028 closes #32 (param-sweep grid, engine primitive + aura sweep CLI demonstrator). Milestone "parameter-space & sweep" is NOT closed by this audit (that needs the milestone fieldtest, a separate manual act); #33 (run registry, cycle D) remains open in the milestone. closes #32
This commit is contained in: