diff --git a/training/eval_history.json b/training/eval_history.json index 90e33779..8f4f273a 100644 --- a/training/eval_history.json +++ b/training/eval_history.json @@ -1224,5 +1224,86 @@ "team_1": 35 }, "win_rate_a": 0.53 + }, + { + "timestamp": "2026-08-31T06:21:58+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260828-0214-gen5-s5-intercepts-retry4.json", + "seed": 1, + "episodes": 100, + "wins_a": 32, + "wins_b": 51, + "draws": 17, + "side_results": { + "a_team_0": { + "wins_a": 17, + "wins_b": 24, + "draws": 9 + }, + "a_team_1": { + "wins_a": 15, + "wins_b": 27, + "draws": 8 + } + }, + "physical_team_wins": { + "team_0": 44, + "team_1": 39 + }, + "win_rate_a": 0.32 + }, + { + "timestamp": "2026-08-31T06:23:16+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260806-1939-curric-s3-gauntlet.json", + "seed": 1, + "episodes": 100, + "wins_a": 79, + "wins_b": 17, + "draws": 4, + "side_results": { + "a_team_0": { + "wins_a": 36, + "wins_b": 11, + "draws": 3 + }, + "a_team_1": { + "wins_a": 43, + "wins_b": 6, + "draws": 1 + } + }, + "physical_team_wins": { + "team_0": 42, + "team_1": 54 + }, + "win_rate_a": 0.79 + }, + { + "timestamp": "2026-08-31T06:24:53+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json", + "seed": 1, + "episodes": 100, + "wins_a": 60, + "wins_b": 31, + "draws": 9, + "side_results": { + "a_team_0": { + "wins_a": 30, + "wins_b": 16, + "draws": 4 + }, + "a_team_1": { + "wins_a": 30, + "wins_b": 15, + "draws": 5 + } + }, + "physical_team_wins": { + "team_0": 45, + "team_1": 46 + }, + "win_rate_a": 0.6 } ] diff --git a/training/generation5_state.json b/training/generation5_state.json index 814b57cc..e9a24b07 100644 --- a/training/generation5_state.json +++ b/training/generation5_state.json @@ -1,6 +1,6 @@ { "stage_index": 2, - "attempt": 0, + "attempt": 1, "status": "in_progress", "log": [ { @@ -1194,6 +1194,146 @@ ], "reason": "Human override. Only miss across this and four earlier attempts was rollout/productive_air_touch_episode_fraction, against a 0.02 floor the stage's own comment flagged as PROVISIONAL and said to re-derive from attempt 1's tail -- that step was never done. Attempt 1 (20260824) already measured 0.00004, ~500x under the floor, and the next three attempts (0.00006, 0.00002, 0.00018) plus this one (0.00006) show no trend toward 0.02, just noise at the same order of magnitude. rollout/air_touch_fraction over this attempt's full run confirms the touches are real, just rare (22/1000 rollout-logging windows registered exactly one aerial touch in the ~100-episode buffer). Every other gate passed comfortably: goal_rate 0.7962 vs 0.72, upright_fraction 0.7778 vs 0.40, forward_motion_fraction 0.4935 vs 0.20, and the paired evaluation beat Stage 4 53-26-21 with balanced sides (29-11 as team 0, 24-15 as team 1). Floor lowered 0.02 -> 0.00002 (the minimum of the five measured attempts) in generation5.py so it now tests real regression instead of an unvalidated guess. Stage 6 resumes from this checkpoint." } + }, + { + "stage_index": 2, + "stage_number": 6, + "stage_name": "league", + "experiment": "20260829-1649-gen5-s6-league", + "attempt": 0, + "telemetry_tail": { + "rollout/air_touch_fraction": 0.00017999999597668648, + "rollout/airborne_fraction": 0.3739089041352272, + "rollout/ball_above_air_touch_fraction": 0.3883678091168404, + "rollout/ball_mean_altitude": 3.96513764667511, + "rollout/ball_peak_altitude": 5.15273362159729, + "rollout/ep_len_mean": 85.36497992706299, + "rollout/ep_rew_mean": 32.01152058982849, + "rollout/forward_motion_fraction": 0.43747518974542615, + "rollout/goal_rate": 0.8620399980545044, + "rollout/grounded_upright_fraction": 0.135359999936074, + "rollout/mean_altitude": 3.712577560424805, + "rollout/productive_air_touch_episode_fraction": 0.00013999999687075616, + "rollout/productive_air_touch_fraction": 0.00013999999687075616, + "rollout/upright_fraction": 0.7597616654634476, + "rollout/vertical_thrust_mean": 0.15780499794334174 + }, + "telemetry_failures": [ + "rollout/productive_air_touch_episode_fraction=0.0001 < 0.0150" + ], + "evaluation_goal_failures": [], + "side_balance_failures": [], + "eval": { + "timestamp": "2026-08-31T06:21:58+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260828-0214-gen5-s5-intercepts-retry4.json", + "seed": 1, + "episodes": 100, + "wins_a": 32, + "wins_b": 51, + "draws": 17, + "side_results": { + "a_team_0": { + "wins_a": 17, + "wins_b": 24, + "draws": 9 + }, + "a_team_1": { + "wins_a": 15, + "wins_b": 27, + "draws": 8 + } + }, + "physical_team_wins": { + "team_0": 44, + "team_1": 39 + }, + "win_rate_a": 0.32 + }, + "evals": [ + { + "timestamp": "2026-08-31T06:21:58+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260828-0214-gen5-s5-intercepts-retry4.json", + "seed": 1, + "episodes": 100, + "wins_a": 32, + "wins_b": 51, + "draws": 17, + "side_results": { + "a_team_0": { + "wins_a": 17, + "wins_b": 24, + "draws": 9 + }, + "a_team_1": { + "wins_a": 15, + "wins_b": 27, + "draws": 8 + } + }, + "physical_team_wins": { + "team_0": 44, + "team_1": 39 + }, + "win_rate_a": 0.32 + }, + { + "timestamp": "2026-08-31T06:23:16+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260806-1939-curric-s3-gauntlet.json", + "seed": 1, + "episodes": 100, + "wins_a": 79, + "wins_b": 17, + "draws": 4, + "side_results": { + "a_team_0": { + "wins_a": 36, + "wins_b": 11, + "draws": 3 + }, + "a_team_1": { + "wins_a": 43, + "wins_b": 6, + "draws": 1 + } + }, + "physical_team_wins": { + "team_0": 42, + "team_1": 54 + }, + "win_rate_a": 0.79 + }, + { + "timestamp": "2026-08-31T06:24:53+00:00", + "model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260829-1649-gen5-s6-league.json", + "model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json", + "seed": 1, + "episodes": 100, + "wins_a": 60, + "wins_b": 31, + "draws": 9, + "side_results": { + "a_team_0": { + "wins_a": 30, + "wins_b": 16, + "draws": 4 + }, + "a_team_1": { + "wins_a": 30, + "wins_b": 15, + "draws": 5 + } + }, + "physical_team_wins": { + "team_0": 45, + "team_1": 46 + }, + "win_rate_a": 0.6 + } + ], + "decision": "fail" } ] }