After editing train.py, your agent commits the change via git. The commit message describes what it changed and why.
Then it runs training:
uv run train.py > run.log 2>&1
Training runs for exactly seconds, enforced by TIME_BUDGET in prepare.py. All output goes to run.log, where the agent will extract metrics after training finishes. If a run exceeds minutes total (including model compilation and data loading), it gets killed and treated as a crash.