Export epoch_ns→unix_ms inverse (or Timestamp-window M1FieldSource::open) for real-data walk-forward #80

Closed
opened 2026-06-17 15:49:09 +02:00 by Brummel · 2 comments
Owner

Source: fieldtest milestone "The World, part II" — finding F6 (friction).
See docs/specs/fieldtest-milestone-the-world-orchestration-families.md.

A real-data walk-forward is the milestone's headline composition, yet it forces
the consumer to re-implement half of a time-unit convention the Source seam
already owns:

  • WindowRoller / WindowBounds / RunManifest.window are epoch-ns.
  • M1FieldSource::open(from_ms, to_ms) wants Unix-ms.
  • aura-ingest exports unix_ms_to_epoch_ns (ms→ns) but no inverse, so the
    walk-forward closure hand-writes ts.0 / 1_000_000 to feed the roller's ns
    bounds back into the ms-typed source.

A transposed divisor is a silent wrong-window bug class the seam was built to
prevent. The consumer should not re-derive a normalization the public surface
only provides in one direction.

Fix options: export an epoch_ns_to_unix_ms inverse beside
unix_ms_to_epoch_ns, or let M1FieldSource::open accept a Timestamp window
directly so the roller's bounds feed straight in.

**Source:** fieldtest milestone "The World, part II" — finding F6 (friction). See `docs/specs/fieldtest-milestone-the-world-orchestration-families.md`. A real-data walk-forward is the milestone's headline composition, yet it forces the consumer to re-implement half of a time-unit convention the Source seam already owns: - `WindowRoller` / `WindowBounds` / `RunManifest.window` are epoch-ns. - `M1FieldSource::open(from_ms, to_ms)` wants Unix-ms. - `aura-ingest` exports `unix_ms_to_epoch_ns` (ms→ns) but **no inverse**, so the walk-forward closure hand-writes `ts.0 / 1_000_000` to feed the roller's ns bounds back into the ms-typed source. A transposed divisor is a silent wrong-window bug class the seam was built to prevent. The consumer should not re-derive a normalization the public surface only provides in one direction. **Fix options:** export an `epoch_ns_to_unix_ms` inverse beside `unix_ms_to_epoch_ns`, or let `M1FieldSource::open` accept a `Timestamp` window directly so the roller's bounds feed straight in.
Brummel added the feature label 2026-06-17 15:49:09 +02:00
Author
Owner

Re-confirmed by the GER40 research deep-dive fieldtest (docs/specs/fieldtest-research-breakout-deepdive.md): every real-data walk_forward hand-divides ts.0 / 1_000_000 because WindowBounds/RunManifest.window are epoch-ns while M1FieldSource::open wants Unix-ms, and aura-ingest exports unix_ms_to_epoch_ns but not its inverse. Second independent hit on this seam (the mw_3 milestone fixture was the first).

Re-confirmed by the GER40 research deep-dive fieldtest (docs/specs/fieldtest-research-breakout-deepdive.md): every real-data walk_forward hand-divides ts.0 / 1_000_000 because WindowBounds/RunManifest.window are epoch-ns while M1FieldSource::open wants Unix-ms, and aura-ingest exports unix_ms_to_epoch_ns but not its inverse. Second independent hit on this seam (the mw_3 milestone fixture was the first).
Brummel added this to the Runway — real-data ergonomics & honesty hardening milestone 2026-06-18 11:02:34 +02:00
Author
Owner

Design reconciliation (specify, in-context entry)

Cycle: Runway-1 — aura-ingest real-data source-open seam (milestone "Runway — real-data ergonomics & honesty hardening"; closes #80 #81 #92). Per-cycle specs are now local-only ephemeral artifacts (retired from git in 28958f2), so this tracker comment is the durable record of the fork resolution. The fix-option fork below is listed open on this issue; it was resolved in the in-context design discussion.

  • Fork: window-currency ownership at the real-data seam → the seam owns the conversion. M1FieldSource / open_ohlc gain a Timestamp-window opener (alongside the existing inclusive-Unix-ms open, behaviour-preserving) that normalizes to the DataServer's Unix-ms internally, so a consumer feeds WindowRoller/WindowBounds epoch-ns bounds straight in with zero ts.0 / 1_000_000. The alternative (export only an epoch_ns_to_unix_ms inverse) was rejected: it leaves the divide — a transposable silent-wrong-window step — in consumer code, whereas a seam-owned Timestamp window makes the wrong-window class structurally impossible (C2/C3).
    Provenance: orchestrator decision ratified by the user in the specify session on 2026-06-18 (AskUserQuestion fork 1 → "Seam besitzt sie — Timestamp-Window-Opener").
## Design reconciliation (specify, in-context entry) Cycle: Runway-1 — aura-ingest real-data source-open seam (milestone "Runway — real-data ergonomics & honesty hardening"; closes #80 #81 #92). Per-cycle specs are now local-only ephemeral artifacts (retired from git in 28958f2), so this tracker comment is the durable record of the fork resolution. The fix-option fork below is listed open on this issue; it was resolved in the in-context design discussion. - **Fork: window-currency ownership at the real-data seam** → the **seam owns the conversion**. `M1FieldSource` / `open_ohlc` gain a `Timestamp`-window opener (alongside the existing inclusive-Unix-ms `open`, behaviour-preserving) that normalizes to the DataServer's Unix-ms internally, so a consumer feeds `WindowRoller`/`WindowBounds` epoch-ns bounds straight in with zero `ts.0 / 1_000_000`. The alternative (export only an `epoch_ns_to_unix_ms` inverse) was rejected: it leaves the divide — a transposable silent-wrong-window step — in consumer code, whereas a seam-owned Timestamp window makes the wrong-window class structurally impossible (C2/C3). Provenance: orchestrator decision ratified by the user in the specify session on 2026-06-18 (AskUserQuestion fork 1 → "Seam besitzt sie — Timestamp-Window-Opener").
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#80