Files
Josh Creek 0b6679e84b chore(training): promote stage-4 retry2 to medium and open stage 5
20260816-2126-gen5-s4-handling-retry2 exhausted its three attempts and
missed only the 0.80 training goal-rate floor, at 0.7731. Every
evaluation gate passed: 65-22-13 versus promoted/easy.json, 87% non-draw
against an 80% floor, 12.6% physical-side imbalance against a 20%
ceiling, and both handling telemetry floors clear. The round improved the
goal rate monotonically across attempts (0.537 -> 0.683 -> 0.773) and the
checkpoint plays well by hand, so close Stage 4 by human override.

Promote it to Game/bots/promoted/medium.json. Medium and Hard both point
at the new policy: Hard stays a label-only duplicate until a stronger one
earns hard.json, which keeps the tiers monotonic rather than leaving Hard
weaker than Medium.

generation5_state.json flips that log entry to "pass" with a
decision_override block preserving the original verdict and reasoning,
and advances to Stage 5 attempt 1. This is what passing_entry() needs to
resolve Stage 5's resume checkpoint and evaluation reference, and what
league_pool() will need at Stage 6; --skip-to-next-stage would advance
the stage without marking anything as passing and die immediately.

generation5.sh now pulls before launching. Each stage ends in
commit_progress()'s push, which fails and kills the run hours in if the
box is behind origin.
2026-08-17 07:49:21 +01:00

37 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Run/resume the post-Stage-3 generation-5 curriculum in a detached tmux
# session. Safe to disconnect; rerunning attaches to the live session.
set -euo pipefail
cd "$(dirname "$0")"
SESSION="cosmic-generation5"
TB_PORT=6006
command -v tmux >/dev/null 2>&1 || { echo "tmux is required: sudo apt install tmux" >&2; exit 1; }
if tmux has-session -t "$SESSION" 2>/dev/null; then
echo "Session '$SESSION' already running — attaching (detach with Ctrl-B then D)."
exec tmux attach -t "$SESSION"
fi
# Stage start and resume point both come from committed state, and each stage
# ends in commit_progress()'s `git push` — which fails, killing the run after
# hours of training, if the box is behind origin. Pull before starting, same as
# next_run.sh. Aborts here (set -e) on a dirty tree or a conflict, which is the
# point: fix it before spending the compute, not after.
git pull --rebase
tmux new-session -d -s "$SESSION" -n curriculum \
".venv/bin/python generation5.py $*; echo; echo '=== generation5.py exited — press Enter to close ==='; read"
if ! (exec 3<>"/dev/tcp/127.0.0.1/$TB_PORT") 2>/dev/null; then
tmux new-window -d -t "$SESSION" -n dashboard \
".venv/bin/tensorboard --logdir logs --host 0.0.0.0 --port $TB_PORT"
fi
IP=$(hostname -I 2>/dev/null | awk '{print $1}')
echo "Generation 5 started in tmux session '$SESSION'."
echo " watch it: tmux attach -t $SESSION"
echo " dashboard: http://${IP:-<this-box>}:$TB_PORT"
echo " progress: cat generation5_state.json"