Files
CosmicClash/training/generation5_state.json
T
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

264 lines
8.4 KiB
JSON

{
"stage_index": 1,
"attempt": 0,
"status": "in_progress",
"log": [
{
"stage_index": 0,
"stage_number": 4,
"stage_name": "handling",
"experiment": "20260816-0858-gen5-s4-handling",
"attempt": 0,
"telemetry_tail": {
"rollout/air_touch_fraction": 3.999999910593033e-05,
"rollout/airborne_fraction": 0.2285692382156849,
"rollout/ep_len_mean": 138.9746000366211,
"rollout/ep_rew_mean": 8.531756190299987,
"rollout/forward_motion_fraction": 0.28261195290088653,
"rollout/goal_rate": 0.5371200009584427,
"rollout/grounded_upright_fraction": 0.47041099911928175,
"rollout/mean_altitude": 2.5816375048160554,
"rollout/productive_air_touch_fraction": 0.0,
"rollout/upright_fraction": 0.7536708096265793,
"rollout/vertical_thrust_mean": -0.046195002141292206
},
"telemetry_failures": [
"rollout/goal_rate=0.5371 < 0.8000"
],
"evaluation_goal_failures": [
"easy.json: goal_rate=0.710 < 0.800"
],
"side_balance_failures": [],
"eval": {
"timestamp": "2026-08-16T14:13:26+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-0858-gen5-s4-handling.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 46,
"wins_b": 25,
"draws": 29,
"side_results": {
"a_team_0": {
"wins_a": 20,
"wins_b": 18,
"draws": 12
},
"a_team_1": {
"wins_a": 26,
"wins_b": 7,
"draws": 17
}
},
"physical_team_wins": {
"team_0": 27,
"team_1": 44
},
"win_rate_a": 0.46
},
"evals": [
{
"timestamp": "2026-08-16T14:13:26+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-0858-gen5-s4-handling.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 46,
"wins_b": 25,
"draws": 29,
"side_results": {
"a_team_0": {
"wins_a": 20,
"wins_b": 18,
"draws": 12
},
"a_team_1": {
"wins_a": 26,
"wins_b": 7,
"draws": 17
}
},
"physical_team_wins": {
"team_0": 27,
"team_1": 44
},
"win_rate_a": 0.46
}
],
"decision": "fail"
},
{
"stage_index": 0,
"stage_number": 4,
"stage_name": "handling",
"experiment": "20260816-1513-gen5-s4-handling-retry1",
"attempt": 1,
"telemetry_tail": {
"rollout/air_touch_fraction": 7.999999821186065e-05,
"rollout/airborne_fraction": 0.21746457129716873,
"rollout/ep_len_mean": 119.63403997802735,
"rollout/ep_rew_mean": 10.153738673210144,
"rollout/forward_motion_fraction": 0.3045943345427513,
"rollout/goal_rate": 0.6827200036048889,
"rollout/grounded_upright_fraction": 0.3728669992983341,
"rollout/mean_altitude": 2.524057677268982,
"rollout/productive_air_touch_fraction": 3.999999910593033e-05,
"rollout/upright_fraction": 0.7505921430587769,
"rollout/vertical_thrust_mean": -0.030821001116302794
},
"telemetry_failures": [
"rollout/goal_rate=0.6827 < 0.8000"
],
"evaluation_goal_failures": [],
"side_balance_failures": [],
"eval": {
"timestamp": "2026-08-16T20:26:42+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-1513-gen5-s4-handling-retry1.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 58,
"wins_b": 24,
"draws": 18,
"side_results": {
"a_team_0": {
"wins_a": 25,
"wins_b": 14,
"draws": 11
},
"a_team_1": {
"wins_a": 33,
"wins_b": 10,
"draws": 7
}
},
"physical_team_wins": {
"team_0": 35,
"team_1": 47
},
"win_rate_a": 0.58
},
"evals": [
{
"timestamp": "2026-08-16T20:26:42+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-1513-gen5-s4-handling-retry1.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 58,
"wins_b": 24,
"draws": 18,
"side_results": {
"a_team_0": {
"wins_a": 25,
"wins_b": 14,
"draws": 11
},
"a_team_1": {
"wins_a": 33,
"wins_b": 10,
"draws": 7
}
},
"physical_team_wins": {
"team_0": 35,
"team_1": 47
},
"win_rate_a": 0.58
}
],
"decision": "fail"
},
{
"stage_index": 0,
"stage_number": 4,
"stage_name": "handling",
"experiment": "20260816-2126-gen5-s4-handling-retry2",
"attempt": 2,
"telemetry_tail": {
"rollout/air_touch_fraction": 9.999999776482581e-05,
"rollout/airborne_fraction": 0.22292538091540337,
"rollout/ep_len_mean": 104.10827992248535,
"rollout/ep_rew_mean": 9.0257121925354,
"rollout/forward_motion_fraction": 0.31477042868733407,
"rollout/goal_rate": 0.7731199976205826,
"rollout/grounded_upright_fraction": 0.3524109998345375,
"rollout/mean_altitude": 2.5850543739795686,
"rollout/productive_air_touch_fraction": 7.999999821186065e-05,
"rollout/upright_fraction": 0.7720990960597992,
"rollout/vertical_thrust_mean": 0.003765997685031034
},
"telemetry_failures": [
"rollout/goal_rate=0.7731 < 0.8000"
],
"evaluation_goal_failures": [],
"side_balance_failures": [],
"eval": {
"timestamp": "2026-08-17T02:36:22+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 65,
"wins_b": 22,
"draws": 13,
"side_results": {
"a_team_0": {
"wins_a": 30,
"wins_b": 14,
"draws": 6
},
"a_team_1": {
"wins_a": 35,
"wins_b": 8,
"draws": 7
}
},
"physical_team_wins": {
"team_0": 38,
"team_1": 49
},
"win_rate_a": 0.65
},
"evals": [
{
"timestamp": "2026-08-17T02:36:22+00:00",
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/promoted/easy.json",
"seed": 1,
"episodes": 100,
"wins_a": 65,
"wins_b": 22,
"draws": 13,
"side_results": {
"a_team_0": {
"wins_a": 30,
"wins_b": 14,
"draws": 6
},
"a_team_1": {
"wins_a": 35,
"wins_b": 8,
"draws": 7
}
},
"physical_team_wins": {
"team_0": 38,
"team_1": 49
},
"win_rate_a": 0.65
}
],
"decision": "pass",
"decision_override": {
"date": "2026-08-17",
"original_decision": "fail",
"original_failures": [
"rollout/goal_rate=0.7731 < 0.8000"
],
"reason": "Human override. Only miss was the training goal-rate floor, at 0.7731 vs 0.80; every evaluation gate passed (65-22-13 vs promoted/easy.json, 87% non-draw, 12.6% physical-side imbalance) and the goal rate improved monotonically across all three attempts (0.537 -> 0.683 -> 0.773). Also promoted to Game/bots/promoted/medium.json on the same evidence. Stage 5 resumes from this checkpoint."
}
}
]
}