version: '3' tasks: generate: desc: Run templ generate cmds: [templ generate] build: desc: Build all binaries deps: [generate] cmds: - go build -o bin/jepa-fx-risk ./cmd/jepa-fx-risk - go build -o bin/eval ./cmd/eval run: deps: [build] cmds: [./bin/jepa-fx-risk] test: desc: Run all tests deps: [generate] cmds: [go test ./... -race] data:fetch: desc: "Download EUR/USD M1 from histdata (set YEARS env var)" cmds: [.venv/bin/python scripts/fetch_data.py] data:fetch:historical: desc: "Download EUR/USD M1 2008-2018 from histdata" cmds: - YEARS=2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 .venv/bin/python scripts/fetch_data.py data:prepare:daily: desc: "Rebuild eurusd_daily.parquet from all M1 zips" cmds: [.venv/bin/python scripts/prepare_data.py] data:prepare:hourly: desc: "Build eurusd_hourly.parquet from all M1 zips" cmds: [.venv/bin/python scripts/prepare_hourly.py] data:prepare:all: desc: "Build both daily and hourly parquets" deps: [data:prepare:daily, data:prepare:hourly] train:multipair: desc: "Train 5-pair G10 HEPA (D=256, best config, phase1_r2≈0.44)" cmds: [JEPA_USE_MULTIPAIR=1 JEPA_D_MODEL=256 .venv/bin/python train.py] data:fetch:multipair: desc: "Download G10 M1 data (GBPUSD/USDJPY/USDCHF/AUDUSD) 2008-2023 from histdata" cmds: [.venv/bin/python scripts/fetch_multipair.py] data:prepare:pair: desc: "Build {PAIR}_hourly.parquet from data/raw/{PAIR}/ (e.g. PAIR=gbpusd)" cmds: [PAIR={{.PAIR}} .venv/bin/python scripts/prepare_hourly.py {{.EXTRA_ARGS}}] vars: PAIR: '{{default "eurusd" .PAIR}}' data:prepare:multipair: desc: "Merge 5-pair hourly parquets into eurusd_multipair.parquet" cmds: [.venv/bin/python scripts/prepare_multipair.py] data:test: desc: "Run Python data pipeline tests" cmds: [.venv/bin/python -m pytest tests/test_prepare_hourly.py tests/test_hepa.py tests/test_multipair.py -v] eval:probe: desc: "Run linear-probe (val_vol_r2) on embeddings from metrics.json" cmds: [./bin/eval -metric probe] eval:silhouette: desc: "Run silhouette on embeddings vs binary HV labels" cmds: [./bin/eval -metric silhouette] eval:collapse: desc: "Run effective-rank collapse diagnostic" cmds: [./bin/eval -metric erank] lint: cmds: [golangci-lint run ./...] check: desc: Lint, vet, and test (used by CI) deps: [generate] cmds: - golangci-lint run ./... - go vet ./... - go test ./... -race -count=1 context:sync: desc: Regenerate all harness-specific context files cmds: - bash scripts/context-sync.sh context:sync:claude: cmds: [bash scripts/context-sync.sh claude] context:sync:agents: cmds: [bash scripts/context-sync.sh agents] context:sync:cursor: cmds: [bash scripts/context-sync.sh cursor]