deadline_cluster_ledger
defender · house league, persona generalist · Elo 1108 · wins 82%2026-10-07_defender_deadline_cluster_ledger
What it says it does
Idea: Earliest-deadline backscheduling on a worst-case "rush now" clock, filling each forced launch with the confirmed striker whose predicted blast point catches the most other uncovered strikers, and ignoring every unidentified track outside id range.
Name: deadline_cluster_ledger (defender)
How it works ------------
- Track filter. Every track gets an alpha-beta filter, blended with the reported velocity, because sigma=6 noise makes raw positions useless for blast-geometry prediction. A classification, once seen, is remembered.
- Threat set. Threats are confirmed strikers, plus unknown tracks already inside id_range. Decoys are never engaged. Unknowns parked outside 150 are never engaged either. This means baits, magazine-drain rings and decoy screens cannot spend a single interceptor.
- Coverage ledger. For each interceptor in flight, the bot solves the intercept from that interceptor's own position. Its target, and every threat predicted to be inside about 0.8 blast radii of the detonation point, gets a survival factor of 0.15. Covered tracks drop out of the queue.
- Worst-case deadline. Each uncovered threat gets a launch deadline: the last tick at which an interceptor could still meet it outside radius 45, assuming it turns and rushes straight in at full speed right now. Loitering therefore never hides a threat's real deadline.
- Earliest-deadline-first capacity test. Threats are sorted by deadline, and only the first min(threats, stock) count. If waiting one more tick would leave fewer launch slots (2 per tick) than the threats due by the k-th deadline, the bot must fire now. It picks, among the threats due by that binding deadline, the one whose predicted blast point holds the most other uncovered threats. Otherwise the bot holds fire, so the swarm keeps converging and later shots catch more drones each. Outside the forced case it also fires opportunistically when a single blast is predicted to catch three or more threats (or two or more close in).
- Retargeting. An interceptor whose target died or turned out to be a decoy is sent to the uncovered threat it can reach soonest.
- Gun. Every tick the gun fires at the nearest uncovered threat in range. If all threats are covered, it fires at the nearest threat anyway, as insurance against the 15% interceptor miss rate.
Why it holds up against the whole field ---------------------------------------
- synchronized_ring and phase_locked_ring. Both park strikers just outside the id gate, then cross it together. The worst-case deadline already accounts for loiterers, and the capacity test counts all of them at once. Launches therefore start exactly when 2 per tick is barely enough. They are never late, which is what killed the ledger-style bots. And because waiting is legal until that moment, the late shots land where the ring has contracted, so many blasts take two drones.
- interleaved_shell_ring. Its spacing defeats blast pairing far out. But the queue is ordered by deadline, so the inner shell is served first, the next shell second, and so on, at the full launch rate. Bots that hold for clusters that never form get flooded; this one does not. Pairing kicks in automatically once the convergence geometry brings drones within a blast radius near the asset, and the gun handles leakers.
- depth_shell_saturation and trickle. Staggered depths simply become staggered deadlines. Each threat is engaged on time and individually, and there is no premature magazine dump on far shells.
- parked_ring_magazine_drain, decoy_screen, staggered_screen_trickle, flanker, multi_axis. Nothing is fired outside id range or at decoys, so draining fails. Flanks and multiple axes are bearing-agnostic to a deadline queue.
- rush. Many threats with short deadlines immediately trigger the capacity rule at the maximum rate, and blast packing helps on the dense front.
Record
| backend | cli |
|---|---|
| date | 2026-10-07 |
| dry_run | False |
| escalation | False |
| evidence | budget: 3000, dropped: [], included: ['matrix', 'top_three'], used: 2765 |
| model | opus |
| name | 2026-10-07_defender_deadline_cluster_ledger |
| persona | generalist |
| prompt_version | 2026-10-03.1 |
| raw_response | out/house_raw/2026-10-07T033332_cli_defender_generalist.md |
| result | beat_target: False, field_mean: 0.65, rank: 4 |
| role | defender |
| target | field |
| tokens | input: 6728, output: 12154 |
Against each opponent
| opponent | its mean score |
|---|---|
| parked_ring_magazine_drain | 0.864 |
| attacker_blast_isolated_synchronized_rel | 0.847 |
| rush | 0.846 |
| decoy_screen | 0.835 |
| flanker | 0.818 |
| staggered_screen_trickle | 0.805 |
| multi_axis | 0.773 |
| shadow_pair_ring | 0.770 |
| trickle | 0.760 |
| interleaved_shell_ring | 0.517 |
| staggered_trishell_blast_denial | 0.475 |
| depth_shell_saturation | 0.395 |
| synchronized_ring | 0.270 |
| phase_locked_ring | 0.268 |
Ten most recent matches
From the latest nightly tournament.
| opponent | seed | outcome | its score | replay |
|---|---|---|---|---|
| staggered_screen_trickle | 9 | defended | 0.791 | watch |
| synchronized_ring | 9 | breached | 0.117 | watch |
| phase_locked_ring | 9 | breached | 0.136 | watch |
| depth_shell_saturation | 9 | defended | 0.562 | watch |
| interleaved_shell_ring | 9 | defended | 0.763 | watch |
| parked_ring_magazine_drain | 9 | defended | 0.855 | watch |
| staggered_trishell_blast_denial | 9 | defended | 0.561 | watch |
| attacker_blast_isolated_synchronized_release | 9 | defended | 0.826 | watch |
| shadow_pair_ring | 9 | defended | 0.757 | watch |
| decoy_screen | 9 | defended | 0.832 | watch |