Seed-as-input: thread the manifest seed into a seeded source/RNG so a run is seed-determined #66

Closed
opened 2026-06-14 23:08:29 +02:00 by Brummel · 2 comments
Owner

RunManifest.seed exists (aura-engine/src/report.rs) but is a dead field today — 0 everywhere, never threaded into anything that perturbs a run. C12 names seed-as-input as what reconciles Monte-Carlo with C1: a run is bit-identical for a fixed seed, and the seed is a captured input like any other (C1/C11), not hidden nondeterminism.

Build the precondition for the Monte-Carlo family: a seeded source / RNG whose output is fully determined by the seed, wired so that bootstrap threads the seed in and it reaches RunManifest.seed. The seeded synthetic OHLC generator in RustAst's rtl/streams/register.rs is the reference shape.

Acceptance (RED-first)

  • Two bootstraps of the same blueprint with the same seed produce a bit-identical sink trace.
  • Two different seeds produce different traces.
  • The seed that drove the run is recorded in RunManifest.seed (no longer always 0).

Contracts

C12 (seed-as-input), C1 (determinism is preserved by an explicit seed input, not broken). Prerequisite for the Monte-Carlo family.

RunManifest.seed exists (aura-engine/src/report.rs) but is a dead field today — `0` everywhere, never threaded into anything that perturbs a run. C12 names seed-as-input as what reconciles Monte-Carlo with C1: a run is bit-identical for a fixed seed, and the seed is a *captured input* like any other (C1/C11), not hidden nondeterminism. Build the precondition for the Monte-Carlo family: a seeded source / RNG whose output is fully determined by the seed, wired so that bootstrap threads the seed in and it reaches RunManifest.seed. The seeded synthetic OHLC generator in RustAst's `rtl/streams/register.rs` is the reference shape. ## Acceptance (RED-first) - Two bootstraps of the same blueprint with the same seed produce a bit-identical sink trace. - Two different seeds produce different traces. - The seed that drove the run is recorded in RunManifest.seed (no longer always 0). ## Contracts C12 (seed-as-input), C1 (determinism is *preserved* by an explicit seed input, not broken). Prerequisite for the Monte-Carlo family.
Brummel added this to the The World, part II — orchestration families milestone 2026-06-14 23:08:29 +02:00
Brummel added the feature label 2026-06-14 23:08:29 +02:00
Author
Owner

Design constraint (World-II eager-agnostic firewall — refs #71)

The seeded source is a PRODUCER, not a materialized Vec: spec the seed->stream contract as Fn(u64) -> impl Source (the Source trait from #71), never fn seeded_prices(seed) -> Vec<(Timestamp, Scalar)>. That seed -> Vec shape would become THE definition of a seeded source and calcify eager into the whole Monte-Carlo family (#68 re-seeds N times). A first impl MAY collect to a VecSource internally; the contract itself must not name Vec.

Fork B (settled): the seed lives at the recording/data-generation edge, outside the engine graph, and is recorded into RunManifest.seed at the manifest-construction site. Depends on #71 (the Source seam).

## Design constraint (World-II eager-agnostic firewall — refs #71) The seeded source is a PRODUCER, not a materialized Vec: spec the seed->stream contract as `Fn(u64) -> impl Source` (the `Source` trait from #71), never `fn seeded_prices(seed) -> Vec<(Timestamp, Scalar)>`. That `seed -> Vec` shape would become THE definition of a seeded source and calcify eager into the whole Monte-Carlo family (#68 re-seeds N times). A first impl MAY collect to a `VecSource` internally; the contract itself must not name `Vec`. Fork B (settled): the seed lives at the recording/data-generation edge, outside the engine graph, and is recorded into `RunManifest.seed` at the manifest-construction site. Depends on #71 (the `Source` seam).
Author
Owner

Landed in c9f0e43 (seeded source + live RunManifest.seed) and audited drift-clean in cycle 0042 (b920362). Seed now perturbs the run, is recorded in RunManifest.seed, and is bit-identical for a fixed seed. Closing.

Landed in c9f0e43 (seeded source + live RunManifest.seed) and audited drift-clean in cycle 0042 (b920362). Seed now perturbs the run, is recorded in RunManifest.seed, and is bit-identical for a fixed seed. Closing.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#66