ML training with forensic certainty.
Push-button ML training with deterministic, contract-driven behavior. Same dataset, same seed, same version — identical model, every time. No surprises.
Install
ext install mcp-tool-shop.runforge
Set dataset
RUNFORGE_DATASET=data.csv
# CSV must have a "label" column
Train
Ctrl+Shift+P → RunForge: Train (Standard)
# → .ml/runs/<id>/run.json
What’s New in v1.1.0
Phase 4 ships lifecycle, recovery, and doctrine. Plus closes all five v1.0.1 CRITICAL regressions.
Cancel In-Progress Training
New "RunForge: Cancel Active Training" command. Or hit the cancel button on the live progress notification. 5s graceful SIGTERM window, then SIGKILL. Cancelled runs land a .cancelled marker so the run picker can classify them.
Recover Index
New "RunForge: Recover Index" command walks .ml/runs/ and re-appends any run missing from index.json. Idempotent. Useful after a crashed write or a workspace move.
Workspace Trust Guard
Python subprocess spawn now requires vscode.workspace.isTrusted. Untrusted workspaces get an actionable SafeError pointing at the Manage Workspace Trust UI.
Live Progress Notifications
Training surfaces per-epoch progress through VS Code’s native progress notification API, with a built-in cancel button.
Hardened CSV Errors
Non-comma delimiters, non-UTF-8 encodings, all-NaN labels, single-column CSVs, and header-only CSVs each surface specific, actionable diagnostics instead of opaque pandas tracebacks.
Custom ESLint Rules
The architectural doctrines in docs/CONTRACTS.md are now mechanized as ESLint rules. No canonical-value literal duplication. No shadow types in consumer modules. Catches what humans miss.
Doctrine Documentation
docs/CONTRACTS.md codifies six architectural rules plus seven operational patterns surfaced by five waves of structured audit. Non-negotiable for any cross-domain work.
The RunForge Guarantee
Opinionated software designed to replace "it works on my machine" with reproducible, traceable results.
Deterministic by Design
Every run is seeded. Re-run the same preset with the same seed on the same data — you get the exact same model. No randomness outside explicitly seeded behavior.
3 Models + Profiles
Logistic Regression, Random Forest, Linear SVC. Combine with fast, thorough, or default training profiles. Hyperparameters are explicit, recorded, and never guessed.
Full Interpretability
Feature importance (RandomForest), linear coefficients (Logistic/SVC), model-aware metrics, and a unified interpretability index — all saved as versioned JSON artifacts.
Getting Started
1. Point at your dataset
# CSV with a "label" column
RUNFORGE_DATASET=/path/to/data.csv
# Or set in VS Code settings:
"runforge.datasetPath": "/path/to/data.csv" 2. Choose a model
// .vscode/settings.json
{
"runforge.modelFamily": "random_forest",
"runforge.profile": "thorough"
} 3. Train
Ctrl+Shift+P → RunForge: Train (Standard)
# Artifacts land in:
.ml/runs//
├── run.json
├── metrics.v1.json
└── artifacts/model.pkl 4. Inspect results
Ctrl+Shift+P → RunForge: Browse Runs
# Select run → Open Run Summary
# Or view interpretability:
→ View Latest Feature Importance
→ View Latest Interpretability Index Commands
All commands available via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P).
Settings
Configure via VS Code settings (runforge.*).
runforge.modelFamily: "logistic_regression" | "random_forest" | "linear_svc"
Classifier to use for training. Default: "logistic_regression".
runforge.profile: "default" | "fast" | "thorough"
"fast" reduces iterations for quick runs. "thorough" adds trees/iterations for better quality. Default: "default".
runforge.pythonPath: string
Path to the Python executable. Auto-detected from PATH if empty.
runforge.mlRunnerModule: string
Python module path for the ML runner. Defaults to the bundled ml_runner.