spec.archiveLogs:false was the real kill-switch — it disabled archival for the whole workflow regardless
of the per-template MinIO-reachability fix. Flip to true so logs actually land in the argo-logs bucket.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root cause of months-long missing CI logs: MinIO's ingress netpol allows part-of in {foxhunt,foxhunt-ci,
argo-workflows}; the cockpit build/deploy pods carried neither label → MinIO denied the wait-sidecar's
log upload (i/o timeout) → builds errored. Using 'argo-workflows' (not 'foxhunt') admits them to MinIO
WITHOUT triggering argo-base-egress (which would block registry:5000/git:2222). Reverts the earlier
archiveLogs-disable approach — logs are now SAVED, not skipped.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Both latent bugs: a recreated Dagster instance would silently not arm the nightly schedule; and the
Argo build marked Error on the MinIO log-sink (masking real failures + skipping the auto-deploy step).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
write_features_bulk writes many symbols in a single transaction (one fsync/checkpoint vs one per
symbol); ingest_crypto_pit collects all 155 symbols then one bulk call. Equivalence test proves
identical result. Targets the ~52min nightly crypto ingest in the Dagster combined-book run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The B0 assets only ingested existing files → forward track froze on stale data. Mirror the retired
cron: crypto_bars fetches crypto_pit (Binance, free, daily, best-effort); futures_bars fetches via
Databento on Sundays (cost-capped, key-gated) before the silver→warehouse ingest.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wire the 4 B0 assets into combined_book_forward_job and a
ScheduleDefinition (cron 30 23 * * *, UTC) via a Dagster Definitions
object; dagster definitions validate passes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pins adjusted from >=1.8,<1.9 to >=1.12,<1.13 (dagster-webserver matching)
and >=0.28,<0.29 (dagster-postgres) — the 1.8.x/1.9.x/1.10.x lines cap at
Python <3.13 and the 1.11.x line caps at <=3.13.3; 1.12.x is the nearest line
that supports Python 3.13.6 (the venv runtime).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Extend FeatureStore protocol with catalog() and read_panel() so WarehouseSource
can be typed against the port (mypy strict clean)
- Add silver_ingest_helpers.ingest_crypto_pit — shared bronze→silver→warehouse
write path for assets and tests
- Implement WarehouseSource in combined_book_source.py; delegates crypto panel
to read_panel+_panel and futures to WarehousePriceProvider
- Add equivalence test: warehouse-fed panel == raw-file-fed panel (A→B gate)
- 291 tests pass, 0 regressions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sub-project B increment 0: stand up Dagster on the cluster + migrate the combined-book
paper-forward track end-to-end as an asset graph reading the warehouse SSOT (proves A->B),
replacing the fxhnt-forward cron. CombinedBookSource port (Warehouse/Raw), 4 assets,
cockpit ingest, reversible cutover. B1-B4 (other tracks, gauntlet, promote/live) deferred.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Daily bars (futures continuous-front + crypto close-only) flow bronze->silver->gold
into the point-in-time warehouse; WarehousePriceProvider reads them back via the
DataProvider port (--data-source warehouse, reversible); catalog/freshness view.
285 tests, mypy-strict clean on all new files. Polygon (incr 2) + news (incr 3) deferred.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the `warehouse` branch to `_data_provider` (the cutover seam for
hunt/run --data-source warehouse), plus two new commands: `warehouse-ingest`
(bronze→silver→gold for futures and crypto) and `warehouse-catalog`
(per-symbol inventory/freshness view of the SSOT).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Increment 1: daily bars (futures+crypto) bronze->silver->gold into the existing
point-in-time FeatureStore, consumed via the DataProvider port (WarehousePriceProvider),
plus a catalog/freshness view. Funding + retiring the other data homes are later increments.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sub-project A: grows available() 3->6 with three structurally-distinct single-market
kinds, and extends PriceSeries with high/low filled by all 4 adapters (databento/
yahoo/dbn_local/duckdb migration) for a true Donchian. 269 tests, mypy-strict clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>