Export epoch_ns→unix_ms inverse (or Timestamp-window M1FieldSource::open) for real-data walk-forward #80
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.windoware epoch-ns.M1FieldSource::open(from_ms, to_ms)wants Unix-ms.aura-ingestexportsunix_ms_to_epoch_ns(ms→ns) but no inverse, so thewalk-forward closure hand-writes
ts.0 / 1_000_000to feed the roller's nsbounds 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_msinverse besideunix_ms_to_epoch_ns, or letM1FieldSource::openaccept aTimestampwindowdirectly so the roller's bounds feed straight in.
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).
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.M1FieldSource/open_ohlcgain aTimestamp-window opener (alongside the existing inclusive-Unix-msopen, behaviour-preserving) that normalizes to the DataServer's Unix-ms internally, so a consumer feedsWindowRoller/WindowBoundsepoch-ns bounds straight in with zerots.0 / 1_000_000. The alternative (export only anepoch_ns_to_unix_msinverse) 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").