version: '3' tasks: # ── Quality gate ────────────────────────────────────────────────────────── check: desc: "Full quality gate: lint + vet + test (run before every commit)" cmds: - golangci-lint run ./src/... - go vet ./src/... - go test ./src/... -race -count=1 - cd model && python -m pytest tests/ -q test: desc: Run Go tests only cmds: [go test ./src/... -race] lint: desc: Lint Go code cmds: [golangci-lint run ./src/...] # ── Data ───────────────────────────────────────────────────────────────── data:fetch: desc: "Download G10 tick data from DUKASCopy (2003–2022)" cmds: [go run ./src/cmd/fetch --config data/config.yaml] data:process: desc: "Resample ticks → hourly OHLCV + features (log-return, rolling HV)" cmds: [go run ./src/cmd/process --input data/raw --output data/processed] data:validate: desc: "Validate processed data: gap detection, outlier report, regime coverage" cmds: [go run ./src/cmd/validate --input data/processed] # ── Experiment ─────────────────────────────────────────────────────────── experiment:run: desc: "Run an experiment from a spec file. Usage: task experiment:run -- --spec specs/phase-0-ssl-feasibility.md" cmds: [go run ./src/cmd/experiment {{.CLI_ARGS}}] experiment:list: desc: List all recorded experiment runs cmds: [ls -lt experiments/ | head -20] # ── Evaluation ─────────────────────────────────────────────────────────── eval:silhouette: desc: "Compute silhouette score on embedding output. Usage: task eval:silhouette -- --run experiments/RUNID" cmds: [go run ./src/cmd/eval silhouette {{.CLI_ARGS}}] eval:probe: desc: "Run linear probe on frozen embeddings vs. realised-vol decile" cmds: [go run ./src/cmd/eval probe {{.CLI_ARGS}}] eval:collapse: desc: "Check collapse diagnostic: PC1 correlation with rolling HV" cmds: [go run ./src/cmd/eval collapse {{.CLI_ARGS}}] # ── Model (Python) ─────────────────────────────────────────────────────── model:train: desc: "Train TS-JEPA model. Usage: task model:train -- --config model/configs/phase0.yaml" dir: model cmds: [python train.py {{.CLI_ARGS}}] model:setup: desc: "Create Python venv and install model dependencies (uv)" dir: model cmds: - uv venv .venv - uv pip install -r requirements.txt # ── Context ────────────────────────────────────────────────────────────── context:sync: desc: "Regenerate CLAUDE.md and AGENTS.md from .context/PROJECT.md" cmds: [bash scripts/context-sync.sh]