Files
Aura/crates/aura-ingest/Cargo.toml
T
claude a895891ab1 perf(ingest,cli): derive archive bounds from the monthly file index — probe_window drain retired
probe_window drained a source's entire close column just to learn its
first and last bar timestamp; both live callers (open_real_source and
campaign_window_ms on the campaign trunk) now resolve through
aura-ingest's new archive_extent(): list the symbol's SYM_YYYY_MM.m1
files, load only the boundary months via the existing loader seam, and
walk across gap months forward/backward — O(2 file loads) typical
instead of O(archive). Empty-window refusal semantics are unchanged
(pinned). Two characterization tests captured the resolved windows
against the OLD implementation over the synthetic per-test archive and
stay green unchanged after the swap.

Measured: the probe itself drops 366ms -> 13ms (~28x) on the full
2014-2026 GER40 archive; end-to-end command wall-clock moves only
~2-3% because the sim loop dominates — the fix removes an
O(archive-size) term, not the dominant cost.

closes #252
2026-07-13 16:47:57 +02:00

35 lines
1.7 KiB
TOML

[package]
name = "aura-ingest"
edition.workspace = true
version.workspace = true
license.workspace = true
publish.workspace = true
[dependencies]
aura-core = { path = "../aura-core" }
# data-server: aura's first real data source. It enters the workspace at the
# ingestion edge (transitively chrono + regex + zip). Dependencies are admitted
# by the amended C16 per-case policy (INDEX.md), not a blanket zero-dep wall.
data-server = { git = "http://192.168.178.103:3000/Brummel/data-server.git", branch = "main" }
# M1FieldSource impls aura_engine::Source in the lib, so the engine is a regular
# (non-dev) dependency.
aura-engine = { path = "../aura-engine" }
[dev-dependencies]
# zip: hand-packs a tiny synthetic M1 archive (lib.rs's own unit tests, #252's
# archive_extent gap-walk coverage) in the exact on-disk format data-server
# reads — already transitive via the data-server dependency above (a normal,
# non-dev dependency there); declared directly here so test code may `use
# zip::...` (mirrors aura-cli's tests/common/mod.rs, no new dependency
# actually enters the build graph).
zip = "2"
# the integration tests bootstrap a sample harness + fold a RunReport
aura-std = { path = "../aura-std" }
# chrono / chrono-tz build the Berlin-local-wall-clock window bounds + the
# Session node's timezone for the real GER40 session-breakout example/test
# (examples/ger40_breakout_real.rs, tests/ger40_breakout_real.rs). Pinned to
# aura-std's / aura-engine's versions (the same DST-aware wall-clock math),
# test-only — never on the ingestion crate's normal path.
chrono = { version = "0.4", default-features = false, features = ["clock"] }
chrono-tz = { version = "0.10", default-features = false }