Autonomous experiment runner for FREUID Challenge 2026.
- Spec:
docs/specs/2026-05-28-freuid-autonomous-rank-climb-design.md - Plan:
docs/superpowers/plans/2026-05-28-freuid-autonomous-rank-climb.md - Research brief:
RESEARCH.md - Iteration log:
ITERATION_LOG.md
uv venv
source scripts/activate.sh # clears ROS env, then activates .venv
uv pip install -e ".[dev]"
pytest -q
python -m freuid.conductor.run --once # not yet implemented; lands in Task 11Always
source scripts/activate.shinstead of the raw venv activate — it strips ROS2 / colcon / conda environment variables that pollute Python 3.13 imports and break pytest collection.
src/freuid/conductor/— meta-loop (local)src/freuid/worker/— GPU worker (tkserver)src/freuid/strategies/— one .py per arm, auto-discoveredstate/— SQLite, gitignoredsubmissions/— CSV submissions
Start the loop in Claude Code:
/loop 30m bash scripts/run_conductor_tick.sh
Each tick: 1 propose → 1 worker pass → ensemble build + Kaggle submit (if a new best CV emerged).
Kaggle daily cap is 5 submissions/day (verified empirically). The conductor logs HTTP 400 errors past the cap and keeps going.
Pause: touch state/PAUSE # next tick exits cleanly
Resume: rm state/PAUSE
Kill the loop entirely by stopping /loop in Claude Code.