The FX/JEPA research project (jepa-fx-risk) currently has no experiment reproducibility layer. Model checkpoints, dataset versions, and metric histories are not tracked in a way that allows reproducing a specific run. This spec adds DVC backed by a self-hosted MinIO instance on koala.
Goals
Every experiment run is fully reproducible from a Git commit + DVC lock file
Dataset versions (yfinance pulls, synthetic FX paths) are content-addressed and stored outside Git
Model checkpoints and eval metrics are versioned alongside code
dvc repro triggered automatically on exp-* tags via Gitea Actions
Non-goals
Cloud storage (all artifacts stay on koala/LAN)
MLflow UI (metrics in DVC params/metrics files is sufficient for now)
Design
MinIO on koala
Deploy MinIO as a k3s workload in the ai-stack namespace (or standalone Docker — whichever matches current infra conventions). Single-node, single bucket dvc-artifacts. Expose on LAN only (no Tailscale egress needed for CI runner on koala).
bucket: dvc-artifacts
access: LAN only (10.0.1.20)
credentials: stored in Gitea Actions secrets
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
The FX/JEPA research project (
jepa-fx-risk) currently has no experiment reproducibility layer. Model checkpoints, dataset versions, and metric histories are not tracked in a way that allows reproducing a specific run. This spec adds DVC backed by a self-hosted MinIO instance on koala.Goals
dvc reprotriggered automatically onexp-*tags via Gitea ActionsNon-goals
Design
MinIO on koala
Deploy MinIO as a k3s workload in the
ai-stacknamespace (or standalone Docker — whichever matches current infra conventions). Single-node, single bucketdvc-artifacts. Expose on LAN only (no Tailscale egress needed for CI runner on koala).DVC remote config
Remote config committed to repo (credentials via env only).
dvc.yamlpipeline stagesGitea Actions workflow
Acceptance criteria
http://10.0.1.20:9000dvc.yamlcovers prepare → train → eval pipelinedvc reproruns clean from a fresh checkout (afterdvc pull)exp-*tag triggers the Actions workflow and pushes artifacts to MinIOmetrics/val_vol_r2.jsonwritten and readable post-runOpen questions
mathias/infra