feat(training): add wall and rebound curriculum states

This commit is contained in:
Josh Creek
2026-09-01 17:37:52 +01:00
parent 7170400f49
commit e376675fa6
6 changed files with 68 additions and 11 deletions
+6 -5
View File
@@ -665,10 +665,9 @@ can be based on evidence instead of a single watched match.
| 6 — `league` | Live policy against a frozen opponent sampled per episode from Stage 3, Stage 4, and Stage 5 | 100M (~10h) | Prevent a narrow self-play equilibrium and consolidate ground handling, aerial interception, attack, and defence against distinct styles. | No clear head-to-head regression against any pool member plus conservative handling/aerial telemetry floors. Promote the passing result to `medium.json` after these recorded evaluations support it. |
Stage 7 teamplay remains deliberately unconfigured. The fixed roster
observation and `team_size` plumbing can run 2v2, but there is no paired 2v2
evaluation or team-credit reward yet; spending 120M steps without those gates
would make a pass meaningless. The prerequisites are now implemented but
remain opt-in: `ShipAIController.team_touch_credit_weight` shares a bounded
observation and `team_size` plumbing can run 2v2. The team-credit reward and
paired 2v2 evaluation prerequisites are implemented but remain opt-in:
`ShipAIController.team_touch_credit_weight` shares a bounded
fraction of a touch payout across same-team agents (default `0.0` preserves
all existing curricula), and `evaluate.py --team-size=2` runs the same policy
as a two-ship team with the existing paired side swap. Stage 7 stays
@@ -860,7 +859,9 @@ real tail, the same way this one now has been.
Stage 6's `league` opponent mode samples a historical exported policy at each
episode reset. Each later stage preserves the preceding shaping and adds one
new difficulty. The generation-5 orchestrator evaluates every candidate
new difficulty. Stage 6 now also reserves 10% each for wall-play and
pre-rebound states; these starts are generated by `TrainingMode` and are not
present in Stages 45. The generation-5 orchestrator evaluates every candidate
against every reference on three independent paired seeds (`1, 19, 43`) before
advancing; pass `--evaluation-seeds` only when deliberately running a
different, recorded experiment. This avoids promoting a policy from a single