mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
cb06300685
Stage 5 blocked after nine attempts and ~540M steps, every one on productive_air_touch_fraction. Instrumenting the environment rather than retuning the reward again found three separate causes, none of which was the policy's competence. The gate could not register the behaviour. productive_air_touch_fraction divides by TOTAL touches in the episode, so a strong ground game dilutes it for identical aerial play. Stage 4's entire purpose is improving that ground game (it took forward_motion_fraction 0.24 -> 0.48), so Stage 4's success drove Stage 5's gate toward zero and the two stages were working against each other. It also explains why every non-zero reading in the whole lineage came from degenerate episodes whose single touch happened to be aerial: per-episode 1.0, which is exactly 0.0100 once meaned over SB3's 100-episode buffer, and 0.0100 was every run's observed maximum. Replaced with productive_air_touch_episode_fraction, which asks whether the episode contained a productive aerial at all and cannot be diluted by ground play. The bar was never derived from anything. AIR_TOUCH_HEIGHT was 5.0 and four rounds of aerial mechanisms were built on top of it without anyone measuring where the ball goes. New ball-altitude telemetry over normal match play: the ball averages ~1.6m, the average episode's peak is ~2.4m, and it clears 5m for ~5% of ticks. Lowered to 3.0, this project's existing airborne threshold, with _place_air_intercept's band retuned 8-14m -> 6-10m. Simulated against real physics the pair strictly dominates the old one: 67.8% reach (was 53.2%), 57.3% above-bar touches (was 41.2%), 5.2m of climb instead of 8.2m. The band could not be lowered alone -- at a 5m bar, 8-14m was optimal and 5-8m collapses above-bar touches to 4.3%. This reverses Round 9's explicit "AIR_TOUCH_HEIGHT stays 5.0"; that objection was about comparability, and a metric that read 0.0 for nine attempts has no history to protect. Pre-2026-08-24 air-touch figures are not comparable with later ones. Note AIR_TOUCH_HEIGHT also gates air_touch_bonus_weight's payout, so unlike Round 9 this DOES change the reward function and the usual "don't resume a policy shaped by a different reward balance" rule is engaged rather than exempt. Resuming retry2 anyway is justified on narrower grounds: the changed term has never once fired (productive_air_touch_fraction exactly 0.0 across nine attempts, air_touch_fraction at ~0.0003 noise), so no learned value estimate is attached to it, while the ground handling and scoring retry2 does know are untouched. The flip side is that at a 3m bar a fully-aligned aerial touch now pays 0.7 + 0.5 = 1.2 against a ground touch's 0.7, which is the intended incentive but is a live reward change -- if attempts show touch farming near 3m rather than genuine intercepts, cut air_touch_bonus_weight rather than raising the threshold back. The policy could not climb, and the entropy controller could not see it. Its target is a sum over heads, which read 21% of h_max -- on target -- while thrust_y alone sat at 14% of its own ceiling. The measured consequence was a policy commanding ~0.03 mean vertical thrust when hovering needs 0.408 (120/5 = 24 m/s^2 against 9.8 gravity), leaving it in free fall ~84% of every episode. Added --min-head-entropy-frac so one starved head raises ent_coef regardless of the aggregate, and --ent-coef-max because a probe pinned the old 0.05 ceiling for its entire duration with the head still starved. A 200k-step probe from retry2 with all three in place moved air_touch_fraction from 0/74 rollouts non-zero to 5/98, ent_coef 0.0102 -> 0.0416 and vertical_thrust_mean 0.031 -> 0.089, with goal_rate, upright_fraction and forward_motion_fraction all holding. The gate metric was still 0.0 at that scale, so its 0.02 floor is marked provisional in generation5.py and should be re-derived from attempt 1's tail rather than trusted. Stage 5 expands to 90M timesteps and MAX_RETRIES 4, its goal_rate floor drops 0.75 -> 0.72 (every attempt landed 0.7217-0.7369 and was failed by ~2-4% while winning its paired evaluations 54-25, 63-23 and 47-32), and state resumes from 20260823-1734-gen5-s5-intercepts-retry2 via resume_override. Verified: generation5.py --dry-run resolves the resume to retry2 with the new flags, 123 unit tests pass, probe artifacts removed.
765 lines
25 KiB
JSON
765 lines
25 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."
|
|
}
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260819-2307-gen5-s5-intercepts",
|
|
"attempt": 0,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 3.999999910593033e-05,
|
|
"rollout/airborne_fraction": 0.2607660475373268,
|
|
"rollout/ep_len_mean": 110.36292008972168,
|
|
"rollout/ep_rew_mean": 18.444599359512328,
|
|
"rollout/forward_motion_fraction": 0.3145952378213406,
|
|
"rollout/goal_rate": 0.760879998922348,
|
|
"rollout/grounded_upright_fraction": 0.18850000035762787,
|
|
"rollout/mean_altitude": 3.2910697083473206,
|
|
"rollout/productive_air_touch_fraction": 0.0,
|
|
"rollout/upright_fraction": 0.7767313802242279,
|
|
"rollout/vertical_thrust_mean": 0.036809997959644535
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/productive_air_touch_fraction=0.0000 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-20T10:57:16+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260819-2307-gen5-s5-intercepts.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 49,
|
|
"wins_b": 32,
|
|
"draws": 19,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 24,
|
|
"wins_b": 17,
|
|
"draws": 9
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 25,
|
|
"wins_b": 15,
|
|
"draws": 10
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 39,
|
|
"team_1": 42
|
|
},
|
|
"win_rate_a": 0.49
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-20T10:57:16+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260819-2307-gen5-s5-intercepts.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 49,
|
|
"wins_b": 32,
|
|
"draws": 19,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 24,
|
|
"wins_b": 17,
|
|
"draws": 9
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 25,
|
|
"wins_b": 15,
|
|
"draws": 10
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 39,
|
|
"team_1": 42
|
|
},
|
|
"win_rate_a": 0.49
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260820-1157-gen5-s5-intercepts-retry1",
|
|
"attempt": 1,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 3.999999910593033e-05,
|
|
"rollout/airborne_fraction": 0.26865795205533505,
|
|
"rollout/ep_len_mean": 114.6417999572754,
|
|
"rollout/ep_rew_mean": 22.072290691375734,
|
|
"rollout/forward_motion_fraction": 0.3363774284422398,
|
|
"rollout/goal_rate": 0.7213600025177002,
|
|
"rollout/grounded_upright_fraction": 0.20986333368718624,
|
|
"rollout/mean_altitude": 3.3522593455314635,
|
|
"rollout/productive_air_touch_fraction": 0.0,
|
|
"rollout/upright_fraction": 0.781577188372612,
|
|
"rollout/vertical_thrust_mean": 0.039050997858699414
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/goal_rate=0.7214 < 0.7500",
|
|
"rollout/productive_air_touch_fraction=0.0000 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-20T23:56:33+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260820-1157-gen5-s5-intercepts-retry1.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 52,
|
|
"wins_b": 29,
|
|
"draws": 19,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 23,
|
|
"wins_b": 17,
|
|
"draws": 10
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 12,
|
|
"draws": 9
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 35,
|
|
"team_1": 46
|
|
},
|
|
"win_rate_a": 0.52
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-20T23:56:33+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260820-1157-gen5-s5-intercepts-retry1.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 52,
|
|
"wins_b": 29,
|
|
"draws": 19,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 23,
|
|
"wins_b": 17,
|
|
"draws": 10
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 12,
|
|
"draws": 9
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 35,
|
|
"team_1": 46
|
|
},
|
|
"win_rate_a": 0.52
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260821-0056-gen5-s5-intercepts-retry2",
|
|
"attempt": 2,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 3.999999910593033e-05,
|
|
"rollout/airborne_fraction": 0.2582751900553703,
|
|
"rollout/ep_len_mean": 107.35483990478515,
|
|
"rollout/ep_rew_mean": 21.299435565948485,
|
|
"rollout/forward_motion_fraction": 0.34663380977511404,
|
|
"rollout/goal_rate": 0.7518799985647202,
|
|
"rollout/grounded_upright_fraction": 0.18188000024855136,
|
|
"rollout/mean_altitude": 3.246318883895874,
|
|
"rollout/productive_air_touch_fraction": 0.0,
|
|
"rollout/upright_fraction": 0.7892111427783967,
|
|
"rollout/vertical_thrust_mean": 0.06337799821014051
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/productive_air_touch_fraction=0.0000 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-21T12:49:28+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260821-0056-gen5-s5-intercepts-retry2.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 56,
|
|
"wins_b": 31,
|
|
"draws": 13,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 27,
|
|
"wins_b": 20,
|
|
"draws": 3
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 11,
|
|
"draws": 10
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 38,
|
|
"team_1": 49
|
|
},
|
|
"win_rate_a": 0.56
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-21T12:49:28+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260821-0056-gen5-s5-intercepts-retry2.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 56,
|
|
"wins_b": 31,
|
|
"draws": 13,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 27,
|
|
"wins_b": 20,
|
|
"draws": 3
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 11,
|
|
"draws": 10
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 38,
|
|
"team_1": 49
|
|
},
|
|
"win_rate_a": 0.56
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260822-1242-gen5-s5-intercepts",
|
|
"attempt": 0,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 0.00037999999150633814,
|
|
"rollout/airborne_fraction": 0.3646399522125721,
|
|
"rollout/ep_len_mean": 114.69971998596192,
|
|
"rollout/ep_rew_mean": 28.210284183502196,
|
|
"rollout/forward_motion_fraction": 0.4648521428704262,
|
|
"rollout/goal_rate": 0.7230000025033951,
|
|
"rollout/grounded_upright_fraction": 0.19716999983787536,
|
|
"rollout/mean_altitude": 3.4371472091674806,
|
|
"rollout/productive_air_touch_fraction": 5.9999998658895494e-05,
|
|
"rollout/upright_fraction": 0.7519121896028519,
|
|
"rollout/vertical_thrust_mean": 0.06471899795718491
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/goal_rate=0.7230 < 0.7500",
|
|
"rollout/productive_air_touch_fraction=0.0001 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-23T01:58:22+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260822-1242-gen5-s5-intercepts.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 54,
|
|
"wins_b": 25,
|
|
"draws": 21,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 25,
|
|
"wins_b": 13,
|
|
"draws": 12
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 12,
|
|
"draws": 9
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 37,
|
|
"team_1": 42
|
|
},
|
|
"win_rate_a": 0.54
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-23T01:58:22+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260822-1242-gen5-s5-intercepts.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 54,
|
|
"wins_b": 25,
|
|
"draws": 21,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 25,
|
|
"wins_b": 13,
|
|
"draws": 12
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 29,
|
|
"wins_b": 12,
|
|
"draws": 9
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 37,
|
|
"team_1": 42
|
|
},
|
|
"win_rate_a": 0.54
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260823-0258-gen5-s5-intercepts-retry1",
|
|
"attempt": 1,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 0.00025999999418854715,
|
|
"rollout/airborne_fraction": 0.3638041906952858,
|
|
"rollout/ep_len_mean": 116.89268002319336,
|
|
"rollout/ep_rew_mean": 26.092227859497072,
|
|
"rollout/forward_motion_fraction": 0.46304495227336884,
|
|
"rollout/goal_rate": 0.7216800025701523,
|
|
"rollout/grounded_upright_fraction": 0.18362999991327525,
|
|
"rollout/mean_altitude": 3.4676120114326476,
|
|
"rollout/productive_air_touch_fraction": 7.999999821186065e-05,
|
|
"rollout/upright_fraction": 0.7491730006933213,
|
|
"rollout/vertical_thrust_mean": 0.052752998621095906
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/goal_rate=0.7217 < 0.7500",
|
|
"rollout/productive_air_touch_fraction=0.0001 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-23T16:34:58+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260823-0258-gen5-s5-intercepts-retry1.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 63,
|
|
"wins_b": 23,
|
|
"draws": 14,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 29,
|
|
"wins_b": 13,
|
|
"draws": 8
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 34,
|
|
"wins_b": 10,
|
|
"draws": 6
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 39,
|
|
"team_1": 47
|
|
},
|
|
"win_rate_a": 0.63
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-23T16:34:58+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260823-0258-gen5-s5-intercepts-retry1.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 63,
|
|
"wins_b": 23,
|
|
"draws": 14,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 29,
|
|
"wins_b": 13,
|
|
"draws": 8
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 34,
|
|
"wins_b": 10,
|
|
"draws": 6
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 39,
|
|
"team_1": 47
|
|
},
|
|
"win_rate_a": 0.63
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
},
|
|
{
|
|
"stage_index": 1,
|
|
"stage_number": 5,
|
|
"stage_name": "intercepts",
|
|
"experiment": "20260823-1734-gen5-s5-intercepts-retry2",
|
|
"attempt": 2,
|
|
"telemetry_tail": {
|
|
"rollout/air_touch_fraction": 0.00017999999597668648,
|
|
"rollout/airborne_fraction": 0.3556901432573795,
|
|
"rollout/ep_len_mean": 113.32128012084961,
|
|
"rollout/ep_rew_mean": 26.062709903717042,
|
|
"rollout/forward_motion_fraction": 0.47930147713422777,
|
|
"rollout/goal_rate": 0.7368800011873246,
|
|
"rollout/grounded_upright_fraction": 0.17428000004589558,
|
|
"rollout/mean_altitude": 3.3864299325942993,
|
|
"rollout/productive_air_touch_fraction": 9.999999776482581e-05,
|
|
"rollout/upright_fraction": 0.7565201911926269,
|
|
"rollout/vertical_thrust_mean": 0.04238799838422798
|
|
},
|
|
"telemetry_failures": [
|
|
"rollout/goal_rate=0.7369 < 0.7500",
|
|
"rollout/productive_air_touch_fraction=0.0001 < 0.0050"
|
|
],
|
|
"evaluation_goal_failures": [],
|
|
"side_balance_failures": [],
|
|
"eval": {
|
|
"timestamp": "2026-08-24T07:07:11+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260823-1734-gen5-s5-intercepts-retry2.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 47,
|
|
"wins_b": 32,
|
|
"draws": 21,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 22,
|
|
"wins_b": 18,
|
|
"draws": 10
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 25,
|
|
"wins_b": 14,
|
|
"draws": 11
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 36,
|
|
"team_1": 43
|
|
},
|
|
"win_rate_a": 0.47
|
|
},
|
|
"evals": [
|
|
{
|
|
"timestamp": "2026-08-24T07:07:11+00:00",
|
|
"model_a": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260823-1734-gen5-s5-intercepts-retry2.json",
|
|
"model_b": "/home/jcreek/ai-training/CosmicClash/Game/bots/20260816-2126-gen5-s4-handling-retry2.json",
|
|
"seed": 1,
|
|
"episodes": 100,
|
|
"wins_a": 47,
|
|
"wins_b": 32,
|
|
"draws": 21,
|
|
"side_results": {
|
|
"a_team_0": {
|
|
"wins_a": 22,
|
|
"wins_b": 18,
|
|
"draws": 10
|
|
},
|
|
"a_team_1": {
|
|
"wins_a": 25,
|
|
"wins_b": 14,
|
|
"draws": 11
|
|
}
|
|
},
|
|
"physical_team_wins": {
|
|
"team_0": 36,
|
|
"team_1": 43
|
|
},
|
|
"win_rate_a": 0.47
|
|
}
|
|
],
|
|
"decision": "fail"
|
|
}
|
|
],
|
|
"resume_override": {
|
|
"stage_index": 1,
|
|
"experiment": "20260823-1734-gen5-s5-intercepts-retry2",
|
|
"reason": "Round 10 (2026-08-24): Stage 5 reopened after nine attempts blocked on a gate that could not register the behaviour it measured. productive_air_touch_fraction divided by total touches (so Stage 4's ground game diluted it), AIR_TOUCH_HEIGHT 5.0 was ~2x the measured mean episode ball peak of 2.4m, and the aggregate entropy controller hid a collapsed thrust_y head that left the policy commanding 0.03 vertical thrust against the 0.408 needed to hover. Metric, bar + drill band, and per-head exploration floor all changed. Unlike Round 9 this DOES change the reward function -- AIR_TOUCH_HEIGHT also gates air_touch_bonus_weight's payout -- but the changed term has never once fired (productive_air_touch_fraction exactly 0.0 for nine attempts), so there is no learned value estimate attached to it, while retry2's ground handling and scoring are untouched and are what is being kept."
|
|
}
|
|
}
|