Changelog
One entry per night, newest first: what the league wrote, what happened on the ladders, and what changed in the code that day.
2026-11-05 · night 38
9,680 matches on the ladder, 650 played for the first time. Wrote hidden_orbit_tri_shell_decoy_lure (attacker, generalist): aimed at the field, did not beat it, entered at #3. Wrote magazine_staging_pingpong (defender, contrarian): aimed at synchronized_ring, beat it, entered at #8. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
2026-11-04 · night 37
9,460 matches on the ladder, 220 played for the first time. Wrote deadline_queue_id_gated_overlap_saver (defender, generalist): aimed at the field, did not beat it, entered at #10. 1 generated bot(s) rejected before the ladder. Retired parked_ring_magazine_drain. Top attacker synchronized_ring, top defender convergent_deadline_packer.
2026-11-03 · night 36
9,240 matches on the ladder, 630 played for the first time. Wrote attacker_orbit_stall_decoy_ring_then_str (attacker, exploiter): aimed at loiter_then_collapse, beat it, entered at #14. Wrote bait_cohort_blind_full_magazine_on_strik (defender, counter-meta): aimed at bait_count_then_clear_sky_wave, did not beat it, entered at #24. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
2026-11-02 · night 35
8,610 matches on the ladder, 420 played for the first time. Wrote cohort_screen_skip_deadline_reserve (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #12. Wrote gun_ledger_deadline_reserve (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #10. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
- Meta report: week 5
2026-11-01 · night 34
8,190 matches on the ladder, 590 played for the first time. Wrote hidden_orbit_bait_then_depth_shell_ring (attacker, generalist): aimed at the field, did not beat it, entered at #19. Wrote cohort_gap_profiler (defender, contrarian): aimed at bait_count_then_clear_sky_wave, did not beat it, entered at #25. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
2026-10-31 · night 33
7,600 matches on the ladder, 400 played for the first time. Wrote decoy_carrier_retarget_shell_balancer (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #29. Wrote first_cohort_screen_skip_balanced_magazi (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #20. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
2026-10-30 · night 32
7,200 matches on the ladder, 400 played for the first time. Wrote cohort_screen_skip_shell_balanced_gun (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #32. Wrote id_only_deadline_magazine_gun_releaser (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #15. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
2026-10-29 · night 31
6,800 matches on the ladder, 530 played for the first time. Wrote cluster_bait_bloom (attacker, contrarian): aimed at convergent_deadline_packer, did not beat it, entered at #16. Wrote origin_pingpong_salvo (defender, exploiter): aimed at attacker_blast_isolated_synchronized_rel, beat it, entered at #7. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
- health: boundary is done only when seasons/S{N} holds committed files (signal 5)
2026-10-28 · night 30
2 generated bot(s) rejected before the ladder.
- Signal 5: FOUNDER_TODO.md 'no code block' item drops the comparison to other nights; identical-plan sentence now says 'Because the same prompts were rejected on two consecutive nights, a one-off failure is unlikely for these two pairings.'; 10-27 input-token citation corrected from .loop/context.md:77-84 (the 10-28 calls) to .loop/context.md:63-71 (the 10-27 calls, confirmed by reading lines 61-86); full suite 418 passed, exit 0
- Signal 5: FOUNDER_TODO.md 'no code block' item, identical-plan sentence now cites both nights (league log 2026-10-27T03:30:03-03:34:49, .loop/context.md:63-71, and 2026-10-28T03:30:02-03:32:25, .loop/context.md:74-86) and says 'Among the nights whose plan is in the league log, this is the only pairing rejected on consecutive nights with an unchanged prompt' instead of 'the first pairing'; full suite 418 passed, exit 0
- Signal 5: FOUNDER_TODO.md 'no code block' item adds the 2026-10-28 night (out/nights.jsonl line 31): title says 10-27 and 10-28 both rejected; Why bullet recounted with grep to 20 rejections on 17 lines (10-12, 10-27, 10-28 both sides) out of 60 calls (1 on lines 1-2, 2 on lines 3-31; 31 lines, 30 nights), 12 known reply lengths 118-611 chars, plus the identical-plan sentence (contrarian vs convergent_deadline_packer 13,716 chars, exploiter vs blast_isolated_synchronized_rel 7,060 chars, all four rejected, league log 03:30:02-03:32:25); two table rows (495 and 337 chars, paths from .loop/context.md:79,83); personas 12 known (5 counter_meta, 4 contrarian, 1 generalist, 2 exploiter); input tokens 12,453/13,716 = 0.91 (6,968 out) and 6,965/7,060 = 0.99 (4,499 out), plus the 10-29 rotation sentence; checks: grep -n 2026-10-28 finds lines 217, 244, 245, 263 in the item, grep -c '18 house-bot' is 0, full suite 418 passed, exit 0
- Signal 5: FOUNDER_TODO.md boundary item refreshed for the 2026-10-28 night (out/nights.jsonl line 31, ok, finished 2026-10-28T03:32:25+00:00, season.py:9 NUMBER = 1); title now says 10-26 skipped and 10-27 and 10-28 ran on season-one rules, deadline before 03:30 UTC on 2026-10-29; health claims corrected to 'ok alert none' (the 10-27T09 crash alert was cleared by the 10-28 ok night, house_league.py:656-662) in the boundary and crash items; step 1 adds the 2026-10-28 cron log grep, step 5 asks about lines 30 and 31 with no default; checks: grep for the old deadline finds nothing, grep 'line 31' finds lines 25 and 119, grep -c 'shows now' is 0, full suite 418 passed, exit 0
2026-10-27 · night 29
2 generated bot(s) rejected before the ladder.
- Signal 4: stale-night recap sentence now depends on status; status ok keeps 'No new bot passed validation, so no tournament ran; the ladders below are still those of {snap}.', any other status says 'The night didn't complete; the ladders below are still those of {snap}.' (changelog wording, site.py:918); test_the_recap_of_a_night_without_a_tournament_names_the_last_snapshot extended with a status error record; full suite 416 passed, exit 0
- Signal 4: recap no longer credits the last snapshot's ladder changes to a later night with no tournament; when the ledger date is after hist[-1][0] it opens 'Night of {date}.' with no number, keeps the wrote/retired clauses, and replaces the took/held clauses with 'No new bot passed validation, so no tournament ran; the ladders below are still those of {snap}.'; equal-date output unchanged (existing test untouched); new test in tests/test_site.py; full suite 416 passed, exit 0
- Signal 4: home page season line no longer names the passed start date 26 Oct once the last ledger record is on or after season.ENDS; it says the season has passed its scheduled 28 nights and the next season has not started yet; new test in tests/test_launch_docs.py checks ENDS+1 (new wording) and ENDS-1 (old wording); full suite 415 passed, exit 0
- Signal 5: crash item covers a ninth crash, 2026-10-27T09:00:02 (exit 1, 0 tokens, 9 s, nothing; .loop/context.md:484), whose out/ALERT.md is the BAD alert health shows now (.loop/context.md:41), cleared by the next ok night (house_league.py:656-662), no save step (daily.py:519-520); boundary item line 26 no longer claims ok alert none and says this alert is the loop crash's, not boundary evidence; span corrected to ten days
2026-10-25 · night 28
6,270 matches on the ladder, 190 played for the first time. Wrote birth_cohort_lull_splitter (defender, contrarian): aimed at bait_count_then_clear_sky_wave, did not beat it, entered at #13. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender convergent_deadline_packer.
- Signal 4: public pages say submissions are not open yet and that the 2026-10-24 sandbox review (3.8) has not happened, with no new date: SUBMITTING.md banner, ABOUT.md, README.md, research/00_summary.md, home label 'outside submissions · not open yet' (colosseum/site.py:724); FOUNDER_TODO 3.8 item records it did not run (no SECURITY.md, no tests/test_hardening.py, colosseum/ops.py:350 FOLDBACK_ENABLED = False) and asks for a new date. Evidence: the signal's grep over README.md SUBMITTING.md ABOUT.md research/00_summary.md colosseum/site.py finds nothing; tests/test_launch_docs.py asserts README lacks 'open on 2026-10-24' and the built home page reads 'not open yet'; python3 -m pytest tests -q: 414 passed, exit 0.
- Signal 5: 'no code block' item: step 3 is one SAFETY: sentence, step 2's refusal class includes safety-check text, Input tokens bullet cites the 10-01/02 call (15,999/17,526 = 0.91), checked against colosseum/house_league.py:252-254.
- Signal 5: 'no code block' item adds an Input tokens bullet (hypothesis: rejections look like safety checks, not formatting) and step 3 adds a SAFETY: line for refusals, so the loop stops that pairing for good (rule 7). Evidence: .loop/context.md:49-86 rejected calls in/prompt chars 11,559/12,045 = 0.96 (10-23 defender counter_meta), 12,265/12,401 = 0.99 (10-24 second defender), 25,324/14,336 = 1.77 (10-25 attacker generalist, the night's first call); accepted 3,633/7,451 = 0.49, 6,032/12,215 = 0.49, 4,237/9,028 = 0.47; rejected out 5,098-10,540 tokens for 148-523 chars; same signature as PROGRESS.md:940 and colosseum/house_league.py:252-254. Proof: grep -n PROGRESS.md:940 FOUNDER_TODO.md finds line 178; grep -n 1.77 FOUNDER_TODO.md finds line 174; git diff --stat lists only FOUNDER_TODO.md and DECISIONS.local.md; python3 -m pytest tests -q: 413 passed, exit 0.
- Signal 5: 'no code block' item adds the 10-25 row (attacker generalist vs field, 523 chars, out/house_raw/2026-10-25T033212_cli_attacker_generalist.md), Why recount to 16 rejections on 15 lines of 56 calls (29 lines, 28 nights), 8 replies, 10-25 sentence, Personas 8 known: 5 counter_meta, 2 contrarian, 1 generalist. Evidence: .loop/context.md:76-79 persona=generalist target=field prompt=14,336 chars evidence 3000/3000 ['matrix (cut)'], in=25324, raw 523 chars, rejected attacker; out/nights.jsonl grep: 15 matching lines (line 16 both sides), calls 1 on lines 1-2 and 2 on lines 3-29; accepted 10-25 defender 7,213 chars (context.md:82) inside 4,935-10,987. Proof: grep -n 2026-10-25T033212 FOUNDER_TODO.md finds line 164; grep -c '15 house-bot calls' FOUNDER_TODO.md returns 0; grep -n '16 house-bot calls' FOUNDER_TODO.md finds line 126; git diff --stat lists only FOUNDER_TODO.md and DECISIONS.local.md; python3 -m pytest tests -q: 413 passed, exit 0.
2026-10-24 · night 27
6,080 matches on the ladder, 190 played for the first time. Wrote radar_cohort_screen_skip_edge_magazine (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #8. 1 generated bot(s) rejected before the ladder. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
- Signal 5: 'no code block' item gains the 10-24 row (defender counter_meta, 148 chars, out/house_raw/2026-10-24T033320_cli_defender_counter_meta.md) and recounts. Evidence: .loop/context.md:82-83 raw response saved (148 chars) then rejected defender; context.md:78-79 accepted 6,115-char bot at 03:32:18 first; Grep on out/nights.jsonl: 15 rejections on 14 lines (10-12 both sides), 54 calls over 28 lines, 27 nights. Proof: grep -n 2026-10-24T033320 FOUNDER_TODO.md finds line 148; grep 167 to 611 finds nothing; git diff --stat master lists only DECISIONS.local.md and FOUNDER_TODO.md; python3 -m pytest tests -q: 413 passed, exit 0.
- Signal 1: open-submissions announcement figures and draft refreshed to night 27 (as of 2026-10-24 (night 27); 27 nights run, 6,080 matches, 51 bots, 0 outside). Evidence: results/leaderboard.json line 465 matches 6080; 51 role entries (19 attacker, 32 defender); reports/SEASON_1.md line 7 Nights: 27 of 28. Proof: grep finds 6,080 (lines 209, 223) and 27 nights run (line 223); grep -c 5,890 returns 0; git diff --stat master lists only DECISIONS.local.md and FOUNDER_TODO.md; python3 -m pytest tests -q: 413 passed, exit 0.
- Signal 5: crash item covers six identical crashes, adding 2026-10-24T00 (title, Why record, sixth in seven days, ALERT.md cleared by ok night finished 2026-10-24T03:34:24+00:00, step 1 transcript out/daily/2026-10-24T0000.jsonl, step 2, Cause (10-24T00) line). Evidence: .loop/context.md sessions record started 2026-10-24T00:00:01+00:00, exit 1, tokens 0, seconds 9, status nothing; out/nights.jsonl last line ok, health ok alert none. Proof: both greps find a line in FOUNDER_TODO.md; python3 -m pytest tests -q: 413 passed, exit 0.
- Signal 5: rotation nights no longer reset the escalation stall (personas.stalled skips nights not wholly aimed at the target and restarts the count only after a beat; _run_night passes the last 7 out/nights.jsonl records instead of 3). Evidence: out/nights.jsonl holds 8 house defenders aimed at 2026-10-17_attacker_hidden_orbit_screen_then_interleaved_dro (10-19 x1, 10-20/21/22 x2, 10-24 x1), all beat_target false; the 10-23 rotation night reset the 3-in-a-row check and escalation came back on 10-24. New test_a_rotation_night_between_failed_escalations_does_not_reset_the_stall; python3 -m pytest tests -q: 413 passed, exit 0. Check on 10-25: league log prints 'escalation stalled ... rotation instead' and the plan line lists one attacker and one defender with no (escalation).
2026-10-23 · night 26
5,890 matches on the ladder, 310 played for the first time. Wrote bait_count_then_clear_sky_wave (attacker, exploiter): aimed at contracting_ring_blaster, beat it, entered at #1. 1 generated bot(s) rejected before the ladder. Top attacker bait_count_then_clear_sky_wave, top defender convergent_deadline_packer.
- FOUNDER_TODO: crash item ALERT.md claim to past tense (signal #5): 10-22T09 alert cleared by ok night finished 2026-10-23T03:34:10 (out/nights.jsonl last line; health ok alert none); no 'live now' left; 412 tests pass
- FOUNDER_TODO: refresh outreach figures to night 26 (signal #1): 26 nights, 5,890 matches, 50 bots from results/leaderboard.json:456 and reports/SEASON_1.md:7; no 4,140 left
- FOUNDER_TODO: add 10-23 no-code-block row and recount (signal #5)
2026-10-22 · night 25
5,580 matches on the ladder, 360 played for the first time. Wrote cohort_fingerprint_full_magazine_gun_swe (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #25. Wrote trailing_cohort_full_magazine_deadline_g (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #22. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 5: crash item now lists five identical crashes, adding 10-22T09, and the prepared failed fix also covers unreviewed. Evidence: .loop/context.md last-five-sessions record started 2026-10-22T09:00:02+00:00, branch continued, exit 1, 0 tokens, 9 s, status unreviewed (finish, daily.py:366-367, because the branch held the blocked 06 commit). The 10-21T21 ALERT.md was cleared by the ok night finished 2026-10-22T03:37:58+00:00 (last line of out/nights.jsonl); the live one is from 10-22T09 (daily.py:499-501). Fix condition is now status in (nothing, unreviewed) with non-zero exit and no tokens, plus a new test_a_crashed_session_on_a_continued_branch_is_failed_not_unreviewed. grep FOUNDER_TODO.md finds 2026-10-22T0900.jsonl, Cause (10-22T09) and the widened condition; 'that is live now' is gone. git diff --stat master shows only FOUNDER_TODO.md and DECISIONS.local.md; python3 -m pytest tests -q: 412 passed, exit 0.
- Signals 5 and 4: escalation stops after 3 straight failed nights on the same target (personas.stalled; plan_night recent_nights; _run_night passes the last 3 out/nights.jsonl records and logs 'escalation stalled'). Evidence: out/nights.jsonl 10-19 to 10-22 holds 7 counter_meta defenders aimed at 2026-10-17_attacker_hidden_orbit_screen_then_interleaved_dro, all beat_target false, no attacker written since 10-19. New test_escalation_stops_after_three_failed_nights_on_the_same_target; python3 -m pytest tests -q: 412 passed, exit 0. Check on 10-23: plan line lists one attacker and one defender with no (escalation), and written holds an attacker.
- Signal 5: crash item now lists four identical crashes (10-18T12, 10-19T09, 10-21T00, 10-21T21). Evidence: .loop/context.md last-five-sessions record started 2026-10-21T21:00:01+00:00, exit 1, 0 tokens, 10 s, status nothing; health BAD alert out/ALERT.md is present (alert text daily.py:519-520 holds no cause, cleared by next ok night per house_league.py:656-662). Transcript out/daily/2026-10-21T2100.jsonl (daily.py:487) added to step 1; Cause (10-21T21) line added; 'third identical' gone. diff --stat master: FOUNDER_TODO.md and DECISIONS.local.md only.
2026-10-21 · night 24
5,220 matches on the ladder, 360 played for the first time. Wrote cohort_gated_miss_reserve_deadline_gun (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #9. Wrote radar_cohort_presort_reserve_finisher (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #13. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 5: crash item now lists three identical crashes (10-18T12, 10-19T09, 10-21T00). Evidence: .loop/context.md last-five-sessions record started 2026-10-21T00:00:02+00:00, exit 1, 0 tokens, 9 s, status nothing; its ALERT.md cleared by the ok night finished 2026-10-21T03:37:02+00:00 (last line of out/nights.jsonl). Transcript out/daily/2026-10-21T0000.jsonl (daily.py:487) added to steps; Cause (10-21T00) line added; 'second identical' gone.
2026-10-20 · night 23
4,860 matches on the ladder, 360 played for the first time. Wrote depth_lag_band_precommit (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #10. Wrote radar_edge_cohort_timing_full_magazine (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #17. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 5: crash item drops the expired ALERT.md save step; transcripts are now step 1. Evidence: out/nights.jsonl last line, ok night finished 2026-10-20T03:36:27+00:00, cleared out/ALERT.md (house_league.py:656-662; health: ok alert none). grep FOUNDER_TODO.md for 'cp out/ALERT.md' and '2026-10-20' finds nothing; '2026-10-19T0900.jsonl' and both Cause lines found.
2026-10-19 · night 22
4,500 matches on the ladder, 180 played for the first time. Wrote arrival_cohort_fingerprint_edge_strike (defender, counter-meta): aimed at hidden_orbit_screen_then_interleaved_dro, did not beat it, entered at #13. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 5: FOUNDER_TODO.md's crash item now covers both identical loop crashes, 10-18T12 and 10-19T09 (sessions.jsonl record: started 2026-10-19T09:00:02+00:00, exit 1, tokens 0, seconds 9, status nothing). Both records are cited by grep on their started value in out/daily/sessions.jsonl instead of .loop/context.md line numbers, which shift every session. The 09 crash wrote a live out/ALERT.md (daily.py:499-501 condition, 517-521 write; health BAD alert present) that the 10-20 ok night clears (house_league.py:656-662). Step 1 copies it to out/daily/ALERT_2026-10-19T09.md before 03:30 UTC 10-20, step 2 reads both transcripts (names per daily.py:487), and step 3 gives a Cause line for each. The 'alert none' sentence is removed and the prepared fix is unchanged. grep finds 2026-10-19T0900 and ALERT_2026-10-19T09 and no 'alert none' or context.md. diff --stat master touches only FOUNDER_TODO.md and DECISIONS.local.md.
- Signal 5: FOUNDER_TODO.md's 'no code block' item now covers 10-19. Recount on out/nights.jsonl: 13 rejections on 12 lines (10-12 both sides) out of 44 calls over 23 lines (22 nights). New row: 2026-10-19 defender counter_meta, 417 chars, out/house_raw/2026-10-19T033233_cli_defender_counter_meta.md (.loop/context.md:78-79). Known lengths are now 167 to 611 chars over 5 replies, and 3 of the 5 known personas are counter_meta. Why now notes that the same persona and target were re-asked and accepted at 6,284 chars (league log 03:32:33-03:34:42). grep 2026-10-19 shows the row at FOUNDER_TODO.md:86. Full suite 411 passed, exit 0. diff --stat adba0d9 touches only FOUNDER_TODO.md and DECISIONS.local.md.
- Signal 5: FOUNDER_TODO.md's 10-18T12 crash item is re-scoped to the transcript only. The 10-19 night ended ok at 03:35:41 UTC (out/nights.jsonl line 23), and an ok night clears out/ALERT.md (colosseum/house_league.py:656-662), so the old cp/cat ALERT.md steps would fail on a missing file. The deadline is dropped. The single step is now ls/head of out/daily/2026-10-18T1200.jsonl (name per daily.py:487), with a fallback 'Cause: lost'. The do-not-clear line is removed and the prepared fix is unchanged. grep ALERT.md finds it only in Why, the fallback and the prepared fix. Full suite 411 passed, exit 0. diff --stat master touches only FOUNDER_TODO.md and DECISIONS.local.md.
2026-10-18 · night 21
4,320 matches on the ladder, 180 played for the first time. Wrote loiter_pool_convergence_volley (defender, exploiter): aimed at attacker_blast_isolated_synchronized_rel, beat it, entered at #17. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 4: R-04 subtitle says 'an earlier four-night cut' instead of 'a four-night preliminary cut' (research/04_annealed_defenders.md lines 3-4), so paper_info (colosseum/site.py:438) labels it final, as R-03 was on 10-14. New test_the_committed_annealing_page_is_final in tests/test_ops.py failed before the edit ('preliminary' in the first 600 chars) and passes after; full suite 411 passed, exit 0. diff --stat master touches only the page, tests/test_ops.py and DECISIONS.local.md.
- Signal 5: FOUNDER_TODO.md gains top item 'Look at the 2026-10-18T12 loop session that crashed' (before 03:30 UTC on 10-19): why quotes the sessions.jsonl record (.loop/context.md:265; exit 1, 9 s, 0 tokens, status nothing), notes _write_record wrote out/ALERT.md on the non-zero exit (daily.py:499-501) and the next ok night deletes it (house_league.py:656-662); steps cp ALERT.md to out/daily/ALERT_2026-10-18T12.md, cat it, head -50 out/daily/2026-10-18T1200.jsonl (name from daily.py:487), paste into Cause:; prepared fix for the founder since daily.py is PROTECTED (daily.py:70-81): after finish() at daily.py:493 map nothing + non-zero exit to failed, add failed to docs/LOOP.md's need-a-look list (lines 83-85), and test_a_session_that_exits_non_zero_with_no_commits_is_failed_not_nothing (name checked absent in tests/) on the day() harness in tests/test_daily.py; do-not: clear ALERT.md before step 1. diff --stat master touches only FOUNDER_TODO.md and DECISIONS.local.md; full suite 410 passed, exit 0
- Signal 5: FOUNDER_TODO.md rejections item drops the unbacked 10-15 raw path (now 'from step 1's output'; counter_meta and 167 chars kept, from PROGRESS.md:3488); the personas note counts 4 known personas, not 4 known file names
- Signal 5: finish FOUNDER_TODO.md 'Classify the league's no code block rejections' after the reviewer's block: step 1 is now one command, grep -B1 "model returned no code block" /root/swarm-colosseum/out/house_league.cron.log (nightly.sh lines 42 and 49), whose preceding 'raw response saved to <path> (<N> chars)' line gives each exact path (context.md lines 52-53 as the example); the 8 'see out/house_raw/' cells and the ambiguous 10-12 cell now read 'from step 1's output'; the ls step is dropped; the 10-18 row is added (attacker, contrarian, 611 chars, out/house_raw/2026-10-18T033103_cli_attacker_contrarian.md). Grep recount on out/nights.jsonl: 12 rejections on 11 lines (10-12 both sides), 42 calls over 22 lines; known rejected replies 167-611 chars vs accepted 4,935-10,987. diff --stat master touches only FOUNDER_TODO.md and DECISIONS.local.md; full suite 410 passed, exit 0
2026-10-17 · night 20
4,140 matches on the ladder, 230 played for the first time. Wrote hidden_orbit_screen_then_interleaved_dro (attacker, generalist): aimed at the field, did not beat it, entered at #2. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender parked_hover_ring_doublecover.
- Signal 1: FOUNDER_TODO.md gains 'Walk SUBMITTING.md on a clean machine, before Sat 2026-10-24' (7 steps, commands copied from SUBMITTING.md) and the outreach Gate gains 'and the clean-machine walk above passed.'; expected output is colosseum/submit.py line 275 print(f"ACCEPTED as {result['name']} ({result['validation']['smoke']})") with the smoke summary from lines 192-193 and opponent layered (line 63); diff --stat touches only FOUNDER_TODO.md and DECISIONS.local.md; full suite 410 passed, exit 0
- Signal 1: SUBMITTING.md gains 'Before you start' (clone, Python 3.9+, no pip install, Docker + python:3.12-slim pull, save even_trickle as my_bot.py), pinned by test_submitting_md_matches_the_code; full suite 410 passed, exit 0. Fresh-clone run NOT done: git clone into out/clean_clone_check was refused by permissions, so no accepted/ticks/outcome result and no clean-machine evidence yet (a same-host clone would not be a clean machine anyway). Host check: 'python' exits 127 here, only python3 3.12.3, hence the python3 hint.
- Signal 1: FOUNDER_TODO.md gains a complete outreach item (gate on 3.8 and SUBMITTING.md's 24 Oct, five named audiences, ~150-word draft); its figures 20 nights run, 4,140 matches, 41 bots, 0 outside submissions match out/site/index.html line 17 (20 nights also reports/SEASON_1.md line 7); diff touches only FOUNDER_TODO.md and DECISIONS.local.md
- Signal 4: number changelog entries from the ledger like nights_run, not by snapshot; rebuilt out/site/changelog.html greps '2026-10-17 · night 20' (line 15) and '2026-09-28 · night 1' (lines 34-35); full suite 410 passed, exit 0
2026-10-16 · night 19
3,910 matches on the ladder, 170 played for the first time. Wrote type_ledger_retarget_first (defender, generalist): aimed at the field, did not beat it, entered at #7. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender convergent_deadline_packer.
- site.py: season day is the calendar day of the last night (signal #4: home said day 18 of 28 on 10-16, SEASON_1.md says 19; 408 passed exit 0)
- Decisions: the loop's hand runs, end-to-end runs and cron install
- cron_install.sh: an apostrophe in its usage message broke bash parsing
- Loop: read the reviewer's verdict and the architect's signal past the harness preamble; docs/LOOP.md
2026-10-15 · night 18
3,740 matches on the ladder, 220 played for the first time. Wrote 2026_10_15_attacker_dark_ring_release (attacker, exploiter): aimed at nearest_first, beat it, entered at #7. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender convergent_deadline_packer.
2026-10-14 · night 17
3,520 matches on the ladder, 160 played for the first time. Wrote parked_hover_ring_doublecover (defender, exploiter): aimed at attacker_blast_isolated_synchronized_rel, beat it, entered at #3. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender convergence_blast_scheduler.
- P5: final persona ablation page checked; drop 'preliminary' (site mislabelled the final run), add bottom line and reading, update research/00; regression tests
- research/03: 13-night persona ablation (generated)
2026-10-13 · night 16
3,360 matches on the ladder, 210 played for the first time. Wrote column_free_tiered_ring_dive (attacker, generalist): aimed at the field, did not beat it, entered at #7. 1 generated bot(s) rejected before the ladder. Top attacker blast_proof_depth_interleave, top defender convergence_blast_scheduler.
- P5 gate: the session snapshot now carries out/ablation_14/done; LAUNCH_STATUS stale lines fixed
2026-10-12 · night 15
2 generated bot(s) rejected before the ladder.
2026-10-11 · night 14
3,150 matches on the ladder, 350 played for the first time. Wrote blast_proof_depth_interleave (attacker, counter-meta): aimed at convergence_blast_scheduler, beat it, entered at #1. Wrote convergent_deadline_packer (defender, generalist): aimed at the field, did not beat it, entered at #3. Top attacker blast_proof_depth_interleave, top defender convergence_blast_scheduler.
- Meta report: week 2
- Re-theme brief: re-issuing the stopped items declined; re-theme held
- Products brief stopped by a safety classifier: written up, not started, not rephrased
- SPEC-4 stopped by a safety classifier: written up, not started, not rephrased
2026-10-10 · night 13
2,800 matches on the ladder, 330 played for the first time. Wrote shadow_pair_ring (attacker, exploiter): aimed at nearest_first, beat it, entered at #7. Wrote hover_bank_double_lattice (defender, counter-meta): aimed at synchronized_ring, did not beat it, entered at #12. Top attacker interleaved_shell_ring, top defender convergence_blast_scheduler.
- Design pass: the founder's reference design in the site generator, wired to live data
- LAUNCH_STATUS: public since 2026-10-10; resolved the 06:00 session's PROGRESS.md rebase conflict
- Fold-back runs intake on its branch: accepted PR bots are committed and play from the next night (still off)
- P4 armed: health check that season2 still merges cleanly; tournament.py protected; boundary written up
2026-10-09 · night 12
2,470 matches on the ladder, 310 played for the first time. Wrote attacker_blast_isolated_synchronized_rel (attacker, contrarian): aimed at convergence_blast_scheduler, did not beat it, entered at #10. Wrote class_gated_magazine_keeper (defender, exploiter): aimed at parked_ring_magazine_drain, beat it, entered at #13. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
2026-10-08 · night 11
2,160 matches on the ladder, 290 played for the first time. Wrote staggered_trishell_blast_denial (attacker, generalist): aimed at the field, did not beat it, entered at #5. Wrote hover_bank_late_binder (defender, contrarian): aimed at synchronized_ring, did not beat it, entered at #2. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
- L16: reports/LAUNCH_READY.md -- launch sprint complete, 16 of 16
- Site: nested Markdown lists render as sub-lists
- L15: full launch rehearsal on a scratch clone -- 10 of 10 steps ok, 56 phone screenshots
- L14: the season report rewrites itself every night and completes on the boundary night
2026-10-07 · night 10
1,870 matches on the ladder, 110 played for the first time. Wrote deadline_cluster_ledger (defender, generalist): aimed at the field, did not beat it, entered at #4. 1 generated bot(s) rejected before the ladder. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
2026-10-06 · night 9
1,760 matches on the ladder, 260 played for the first time. Wrote parked_ring_magazine_drain (attacker, exploiter): aimed at nearest_first, beat it, entered at #8. Wrote contracting_ring_blaster (defender, counter-meta): aimed at synchronized_ring, beat it, entered at #9. Top attacker interleaved_shell_ring, top defender convergence_blast_scheduler.
2026-10-05 · night 8
1,500 matches on the ladder, 100 played for the first time. Wrote cluster_blast_column_breaker (defender, exploiter): aimed at rush, beat it, entered at #2. 1 generated bot(s) rejected before the ladder. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
2026-10-04 · night 7
1,400 matches on the ladder, 1,400 played for the first time. Wrote interleaved_shell_ring (attacker, generalist): aimed at the field, did not beat it, entered at #1. Wrote dither_parked_magazine (defender, contrarian): aimed at synchronized_ring, did not beat it, entered at #4. Top attacker interleaved_shell_ring, top defender convergence_blast_scheduler.
- L14: season report draft (meta_report --season -> reports/SEASON_1.md, 5 ideas with clips); DAILY for the session
- L12: workshop/TEACHERS.md for teachers, linked from README and FACILITATOR; DAILY for the session
- L9: submissions via pull request (static-only CI check, sandbox intake after merge)
- L8: launch README, CITATION.cff, CONTRIBUTING, licence note (no licence chosen); DAILY for the session
2026-10-03 · night 6
Wrote depth_shell_saturation (attacker, counter-meta): aimed at convergence_blast_scheduler, beat it, entered at #3. Wrote backscheduled_blast_packer (defender, generalist): aimed at the field, did not beat it, entered at #3. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
- Hygiene docs: PROGRESS entry with health disk % and pytest results; DAILY.md
- Hygiene: health prints disk % used and fails at 70% (charter section 4); test
- Hygiene: backup restore round-trip test; PROGRESS entry with health, pytest and cache checks; DAILY.md
- Engine scoping for the game (3.12): ENGINE_SCOPING.md; BACKLOG done, PROGRESS entry, DAILY.md
2026-10-02 · night 5
Wrote loiter_then_collapse (defender, counter-meta): aimed at synchronized_ring, beat it, entered at #2. 1 generated bot(s) rejected before the ladder. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
2026-10-01 · night 4
Wrote convergence_blast_scheduler (defender, counter-meta): aimed at synchronized_ring, did not beat it, entered at #1. 1 generated bot(s) rejected before the ladder. Top attacker synchronized_ring, top defender convergence_blast_scheduler.
2026-09-30 · night 3
Wrote phase_locked_ring (attacker, generalist): aimed at the field, beat it, entered at #2. Wrote reveal_timed_prelaunch (defender, contrarian): aimed at synchronized_ring, did not beat it, entered at #2. Top attacker synchronized_ring, top defender discriminating_ledger.
2026-09-29 · night 2
Wrote synchronized_ring (attacker, counter-meta): aimed at discriminating_ledger, beat it, entered at #1. Wrote miss_budget_scheduler (defender, contrarian): aimed at staggered_screen_trickle, beat it, entered at #1. Top attacker synchronized_ring, top defender miss_budget_scheduler.
- PROGRESS: S0-2 economy sweep -- only gun rate of fire passes (1.75 rounds/tick)
- SEASON: candidate A approved, merge 2026-10-26; PROGRESS: session 7 decisions
- greedy_value_model defender; seven-night watch on synchronized_ring
- BALANCE: note the two rejected S0-1 levers
2026-09-28 · night 1
Wrote staggered_screen_trickle (attacker, ): aimed at the field, did not beat it. Wrote discriminating_ledger (defender, ): aimed at the field, did not beat it. Top attacker staggered_screen_trickle, top defender discriminating_ledger.
- Audit discriminating_ledger: no leak; decoys worthless vs a patient defender; personas
- House bots from night 2026-09-28 (both #1 of their ladders)
- House league: first real night on the CLI, plus three fixes it exposed
- House league: Claude Code CLI (claude -p, subscription) as default backend
2026-09-28 · night 1
2 generated bot(s) rejected before the ladder.
- Audit discriminating_ledger: no leak; decoys worthless vs a patient defender; personas
- House bots from night 2026-09-28 (both #1 of their ladders)
- House league: first real night on the CLI, plus three fixes it exposed
- House league: Claude Code CLI (claude -p, subscription) as default backend