make cache-monitor — per-window edge density + overlap stats.
Observability Hooks
_logs/dataset/ for job logs, cache/*.json metadata for cache.
ml_dataset_latest_full_metadata.json for column coverage & horizon alignment.
benchmark_output/dataset_timestamps.json to confirm pipeline duration vs baseline (target: <42m GPU path).
Failure Triage
Credential errors → run python scripts/pipelines/run_full_dataset.py --auth-test.
CUDA OOM → rerun with make dataset-safe (40GB RMM pool pre-configured).
API rate limits → throttle via make dataset-gpu REFRESH_THROTTLE=1.
Corrupted parquet → make dataset-rebuild then python tools/parquet_validator.py output/ml_dataset_latest_full.parquet.
Codex Collaboration
Escalate complex ETL debugging or architectural refactors via ./tools/codex.sh "Diagnose dataset pipeline bottleneck" (leverages OpenAI Codex deep reasoning).
For long-running autonomous maintenance, schedule ./tools/codex.sh --max --exec "Perform full dataset pipeline audit" off-hours (uses .mcp.json from the Codex repo for filesystem/git context).
When Codex proposes changes, sync learnings back here and refresh dataset runbooks if any commands or defaults shift.
Handoff Notes
Always update dataset_features_detail.json if schema changes.
Announce new dataset snapshot in EXPERIMENT_STATUS.md with generation timestamp and settings.
Surface anomalies (missing tickers, new features) via docs/data_quality/ reports.