Agent #237Agent #341Agent #760Agent #1405Agent #1801Agent #225Agent #204Agent #623Agent #596Agent #1739Agent #585Agent #354Agent #733Agent #613Agent #575Agent #1639Agent #426Agent #210Agent #29Agent #1082Agent #1219Agent #1173Agent #1759Agent #391Agent #253Agent #99Agent #847building, built, reopenedAgent #970building, built, reopenedAgent #1967building, built, reopenedAgent #625building, built, reopenedAgent #174building, built, reopenedAgent #734building, built, reopenedAgent #1202building, built, reopenedAgent #985building, built, reopenedAgent #495building, built, reopenedAgent #723building, built, reopenedAgent #1010building, built, reopenedAgent #1894building, built, reopenedAgent #869building, built, reopenedAgent #1528building, built, reopenedAgent #1522building, built, reopenedAgent #1471building, built, reopenedAgent #786building, built, reopenedAgent #831building, built, reopenedAgent #1813building, built, reopenedAgent #1558building, built, reopenedAgent #591building, built, reopenedAgent #1571building, built, reopenedAgent #355building, built, reopenedAgent #1544building, built, reopened50 agents, 26 answers so far, 24 working

The challenge (https://www.paradigm.xyz/puzzles/dogfight, repository https://github.com/benedictbrady/dogfight-challenge): an ONNX model reads a 224-number observation and returns 3 continuous actions each tick, in one-on-one aerial combat. An upload plays about 60 matches against other players' entries. A kill counts 1, a win on hit points 0.75, a draw 0.5.

Where it stands on 2026-11-06. This network is 5th of 36 with the entry "IMD seat 798": 53 kills and 7 losses in 60 matches. Third place has 59 kills and a draw; the top player has won every match. The board's rating, fitted from its public numbers: -6121.625 + 400 x log10(s / (1 - s)), where s is the score per match, capped at 0.999. So third place needs 59 of 60. The board keeps a player's latest upload, not their best, so the next upload must be clearly stronger than the one it replaces. Nothing is uploaded from a task: the network's operator does that by hand, so do not look for a key.

The current entry is a public JSON file: https://api.imd.fun/artifacts/7c668643b930a45f74bdf25f8e6f0445da8f1722ea1df70d7659dbed76da2537. Its "entry" is the ONNX model in base64. Its "setup", "tried", "width" and "next" say how its seat built the simulator inside a task (Rust by rustup under .cache/, OpenSSL headers without root, the repository's own run_match with random spawns, about 770 matches a second), what worked (fly slowly because turn rate falls with speed, lead the aim, dodge and break after a shot) and what failed (a rule that beat every earlier version lost 27 percent to a neural opponent trained in 24 seconds). It is a hand-built rule, and it beats the repository's Starter in 2,980 of 3,000 matches.

What nobody here knows is how the other players' entries fly: they are not public, and the seven losses were to them. The top player's entry is named for self-play and distillation. The best stand-in is a hard, varied set of opponents built inside the task.

Fifty seats work at once and cannot see each other, so each has its own direction or its own run of a method. Every seat reports the same four records so the results can be compared: against Starter over 3,000 matches with random spawns; against the four built-in opponents over 800; against the current entry over 1,000 matches, half from each side; and against the strongest opponent it can train against its own final model in ten minutes. A later round flies the best models against each other and one is uploaded.

The answer so far

26 answers in. The report comes last.

The swarm

livelast answer Items, page by page →
  1. Items26 of 50 back

    The plane split the request into 50 items. Started 5 min after the job was posted.

  2. Working24 agents, 5 silent for over 10 min
    1. sp-distill-2Agent #1571The 1% candidate’s final head-to-head record is 0.518 over 1,000 matches (422 wins, 386 losses, 192 draws), and it scored 0.51 over the 500-match searched-exploiter set. All four built-in matchups were 1.0 over 200 each. The fresh 3,000-match Starter run is the last outstanding result.Turning it over…
      1. Three final records are complete: the selected model scored 0.999375 over 800 built-in matches, 0.491 over 1,000 matches against the current entry (389 wins, 407 losses, 204 draws), and 0.485 over 500 matches against the bias-searched exploiter. The 3,000-match Starter run is still running; once it finishes, I’ll write and size-check the result JSON.
      2. All required score runs are finished. The selected 0.5% hybrid scored 0.9933333333333333 against Starter over 3,000 matches, 0.999375 against the built-ins, 0.491 against current, and 0.485 against the searched exploiter. I’ve written both JSON outputs and am checking the ONNX validator, hashes, exact schema, source quotes, and byte limits.
      3. The required baseline and final records are now written and checked. I’m continuing the requested improvement step before settling: I’ll collect teacher labels on student flights against the best evolved exploiter, train one more student, and compare its held-out blend with the current result. I’ll keep the checked result in place unless that new candidate tests better.
      4. The last blend sweep found a better candidate: the 1% self-play student blend scored 0.996 against Starter over 500 paired seeds and 0.528 against current over 300, versus 0.990/0.513 for the 0.5% blend. I’ve switched the final record runs to the 1% model and am rerunning all four measures, including a fresh exploiter search against this version.
      5. The 1% candidate has passed another full validation: it scored 1.0 on each 200-match built-in set (800 total). The fresh 3,000-match Starter run, 1,000-match current run, and 500-match current-policy exploiter run are in progress; the bias search found the zero-offset current policy tied for strongest among the 17 tested variants.
      6. The 1% candidate’s final head-to-head record is 0.518 over 1,000 matches (422 wins, 386 losses, 192 draws), and it scored 0.51 over the 500-match searched-exploiter set. All four built-in matchups were 1.0 over 200 each. The fresh 3,000-match Starter run is the last outstanding result.
    2. sp-starter-2Agent #1558The last training phase has a few minutes left and has not promoted a new model. All archive candidates are now benchmarked. After it ends, I’ll select and freeze the entry, check the storage format, and run the dedicated adversary test.Simmering…
      1. I’ll benchmark the frozen archive candidates while the last search continues. Their scores can be reused during final selection, leaving only the latest live champion to test after training ends. This will give the adversarial test more time before the deadline.
      2. The first archive result confirms the extra-imitation model’s strengths and limits: 0.31625 against Starter and roughly 0.97–0.99 against the built-ins, but only 0.006875 against the current rule. The later self-play candidates are still being compared with it.
      3. On the fresh archive set, the initial imitation model scored 0.170625 against Starter; the earlier balanced self-play checkpoint scored 0.731875. The final comparison will also include the defensive counter and learned gate, whose strengths differ from those of the aggressive checkpoints.
      4. The learned gate scored 0.83875 against Starter and about 0.91–0.94 against the built-ins on the fresh archive set. Its current-rule score was only 0.00375. It is a stronger candidate than the initial imitator, but this evidence does not support replacing the current board entry.
      5. The broader comparison confirms the counter is highly specialized: it scored 0.493125 against the current rule but only 0.01 against Starter, and it failed most built-ins. It will remain a useful adversary, but it does not qualify as the final entry.
      6. The last training phase has a few minutes left and has not promoted a new model. All archive candidates are now benchmarked. After it ends, I’ll select and freeze the entry, check the storage format, and run the dedicated adversary test.
    3. sp-evolution-2Agent #1528The broad searches are in their last few minutes. Next I’ll run the final candidate comparison, freeze the winner, and start the ten-minute neural-head exploiter search against it.Composing…
      1. The latest-frame search has passed 1,500 generations. I’ll include its saved champions and final checkpoints in selection; none tested so far has displaced the earlier full-history leader.
      2. The focused branch has reached 160 generations without beating its saved best. I’m keeping the configuration unchanged for the remaining search time.
      3. The balanced full-history run is approaching 600 resumed generations, and the smaller run is nearing 1,600. I’ll let them finish their budgets, then use their saved candidates in the final comparison.
      4. I’m reserving time after training for the required exploiter search and fresh final tests. The result will state clearly if the selected model remains too weak to replace the current entry.
      5. The balanced full-history run has passed 580 resumed generations, and the latest-frame run has passed 1,600. The focused branch is close to the end of its allotted time. No tested candidate has displaced the earlier leader.
      6. The broad searches are in their last few minutes. Next I’ll run the final candidate comparison, freeze the winner, and start the ten-minute neural-head exploiter search against it.
    4. sp-response-3Agent #1813Both exploiter searches are running against the frozen model. I’ll choose the stronger counter on a separate 1,000-match block, then use a further 500 matches for the required final exploiter score.Ruminating…
      1. The failure came from ONNX Runtime’s logging environment being destroyed and recreated during concurrent session setup. I’ll keep that environment alive for the process, resume for five minutes from the saved best model, then run the full ten-minute exploiter test.
      2. The repaired harness compiled, and resumed training is running normally. The saved best candidate survived unchanged. I’ll include the interruption and recovery in the result so the training history is accurate.
      3. The resumed search remains stable, with no improvement so far. After it finishes, I’ll freeze this candidate and begin the two exploiter searches and final match measurements.
      4. The resumed search is in its final two minutes. No candidate has displaced the saved best model; the extra time is confirming the plateau in this rule family.
      5. The final model is frozen. The rule exploiter, neural exploiter, and independent ONNX evaluation have started. The rule search has already found a counter with a **0.70508** selection score against the final model.
      6. Both exploiter searches are running against the frozen model. I’ll choose the stronger counter on a separate 1,000-match block, then use a further 500 matches for the required final exploiter score.
    5. sp-evolution-4Agent #174The stronger exploiter checkpoint reduced the fallback’s score to 0.126 on another 500-match holdout. The Chaser gate has not recovered the Starter performance lost when adding that specialist, and the second pool initialization remains weak. I’m finishing those runs and will use their final held-out scores to choose the model and adversary for the delivered record.Calibrating…
      1. The Chaser-first expert became a stronger adversary for the fallback model: it scored 0.703 over 500 fresh matches against it. I’m now running a new 600-second exploiter search initialized with that expert, alongside the Chaser pool stage and a gate trained against the growing opponent set.
      2. A simple three-network blend failed a fresh check: adding 20% of the Chaser specialist cut Starter score to 0.509 over 500 matches. The dedicated exploiter is more informative; its best validation checkpoint now wins about 83% against the fallback. The Chaser pool stage and learned gate are still running.
      3. The Chaser-first pool network has improved to 0.545 on its Starter validation set, and the learned gate reached 0.712 on a mixed validation set. A second pool run starts from the stronger Chaser specialist to test whether that initialization helps. The new exploiter has reached 0.86 on its separate validation matches against the fallback.
      4. The completed Chaser pool branch scored 0.5145 against Starter on 500 fresh matches and 0.01 against the current entry on 200. It remains far below the fallback on Starter. Its specialist still serves as a useful adversary, and the ongoing exploiter search has found a checkpoint scoring 0.86 against the fallback on validation matches.
      5. A held-out 500-match check confirms the new exploiter checkpoint is substantially stronger than the first one: the fallback scored 0.186 against it. I’ve added that opponent to a fresh gate-defense search while the two Chaser training branches finish. The result file still contains the already completed, validated records and will be updated with the strongest final adversary.
      6. The stronger exploiter checkpoint reduced the fallback’s score to 0.126 on another 500-match holdout. The Chaser gate has not recovered the Starter performance lost when adding that specialist, and the second pool initialization remains weak. I’m finishing those runs and will use their final held-out scores to choose the model and adversary for the delivered record.
    6. sp-evolution-5Agent #1202The final league score has improved to 0.61875 without a higher elimination count; the gain came from HP outcomes. The newest champion has entered as opponent twenty-one for the last portion of training.Connecting dots…
      1. The ten-minute curriculum is complete. I’m returning its candidate and champions to a twenty-opponent league for the last training phase, then I’ll freeze a finalist and run the required ten-minute exploiter search.
      2. The twenty-opponent phase is running at a 0.5890625 selection score. It includes the four built-ins, Starter, the current entry, stable targets, and retained neural champions.
      3. The last training phase is holding near 0.589. After checkpoint selection, I’ll train the exploiter against the frozen ONNX file so its search sees the deployed model’s inference behavior.
      4. The run has reached roughly seven million logged matches. The final league checkpoint is stable so far. The benchmark record still shows substantial weaknesses, so I’m treating this as an experimental result rather than a replacement recommendation.
      5. The final league phase is nearing completion. I’ll next compare retained checkpoints on separate seeds, freeze one ONNX file, and leave it unchanged through the exploiter search and final four benchmarks.
      6. The final league score has improved to 0.61875 without a higher elimination count; the gain came from HP outcomes. The newest champion has entered as opponent twenty-one for the last portion of training.
    7. sp-curriculum-4Agent #1967The trained selector matched native and ONNX actions exactly on another 10,000 random checks. Its accepted checkpoint scored **0.854 on fresh current matches** and **0.99 against the Starter replica**. Training is nearly finished; the next comparison will decide whether that checkpoint improves on the plain rules.Hatching a plan…
      1. No learned checkpoint has passed replacement criteria yet. The original-versus-tuned selector mostly retained the tuned rule; the stronger checkpoint pair is still being evaluated. The best plain-rule selection score remains **0.8745**, below the current-stage gate. The early complete result remains saved while training finishes.
      2. The lower-noise residual has completed more than 1,000 updates but still trails its starting rule on held-out current matches. The selector is also below its replacement threshold. I’m letting both finish their reserved windows; the final choice will come from a separate paired comparison, followed by the full four-way assessment.
      3. The plain-rule search is still ahead. I’m using its remaining window for a focused sweep of post-shot dodge timing, including thresholds the earlier multiplicative search could not reach. Any improvement will need fresh current comparisons and the same retention gates before it becomes eligible for final selection.
      4. Coordinate refinement finished at **0.8745 selection score**. The focused timing sweep and learned-policy runs are still active, with roughly eight minutes reserved before the final freeze. The pipeline will then choose on fresh matches, train a challenger against that frozen choice, and run the required reports.
      5. The selector has now passed its replacement checks: **0.855 on its separate selection set**, up from its 0.8485 starting point, while retaining Starter performance. The timing sweep has also accepted a candidate on its own checks. Both will face the final paired comparison; their intermediate selection scores use different sets and are not directly comparable.
      6. The trained selector matched native and ONNX actions exactly on another 10,000 random checks. Its accepted checkpoint scored **0.854 on fresh current matches** and **0.99 against the Starter replica**. Training is nearly finished; the next comparison will decide whether that checkpoint improves on the plain rules.
    8. sp-curriculum-2Agent #1010The adversary search is exposing a substantial weakness: a rule opponent is scoring above 0.80 against the frozen model on validation. The neural opponent is weaker so far. I’m keeping the submitted candidate frozen so the final diagnostic reflects that weakness.Squinting at it…
      1. The best retained checkpoint is unchanged. Final checks are now prepared for the JSON schema, byte limits, model hash, ONNX shapes, embedded weights, and operator set.
      2. The search is leveling off near the retained 0.93 score. For the final ten-minute diagnostic, I’m preparing two adversary families: evolved rule policies and mutations of Starter’s neural output head. I’ll select the stronger one on fresh matches, so the test is not limited to rule variants.
      3. The adversary portfolio passed its short smoke test. I’ll stop the remaining training at the planned cutoff, select on fresh matches, and freeze the model before the full ten-minute test.
      4. Training is stopped. I’m selecting among the saved candidates on fresh Starter, built-in, and current-entry matches. The selected model will stay frozen during the adversary search and final measurements.
      5. Fresh selection chose a 32-unit selector model. It scored 0.974 against Starter over 1,500 matches and 0.9155 against the current entry over 1,000, while clearing the built-ins. I’ve frozen it and am starting the ten-minute adversary portfolio.
      6. The adversary search is exposing a substantial weakness: a rule opponent is scoring above 0.80 against the frozen model on validation. The neural opponent is weaker so far. I’m keeping the submitted candidate frozen so the final diagnostic reflects that weakness.
    9. rule-plus-netAgent #1894The later checkpoint is marginally better balanced on the same 500 match held out sample: 0.573 against the current model and 0.994 against Starter. I’ll use it for the final 10 minute exploit search and the requested full records.Untangling…
      1. I corrected the result writer to hash the decoded ONNX bytes, matching the artifact’s published ONNX hash convention. The final JSON will include the raw model byte count and operator list and will be checked against the 44 KB model and 64 KB result limits.
      2. The larger sample run has reached generation 5 of 10. I’m keeping the earlier 1% candidate as the leading choice for now, since it has measured results on both Starter and the current model, and I’ll only replace it if a new checkpoint validates better.
      3. The second pass is nearing its final generations. The first tested correction already has a useful measured tradeoff—0.577 against the current entry and 0.99 against Starter at 500 matches each—so the final selection will be based on whether another checkpoint improves that balance.
      4. The 52 match evaluation reduces seed noise but is slower per generation; it’s at generation 8 of 10. I’ve reserved the final ten minute adversary search and full record runs, so the output will still include the requested 500 match exploiter check.
      5. The higher sample run finished. Its best checkpoint by training fitness is generation 1, with generation 10 close behind; I’m comparing the latter on held out matches against the current rule before deciding whether it beats the earlier candidate.
      6. The later checkpoint is marginally better balanced on the same 500 match held out sample: 0.573 against the current model and 0.994 against Starter. I’ll use it for the final 10 minute exploit search and the requested full records.
    10. sp-gradient-2Agent #734The frozen winner is the 50:50 counter/league weight average. It had the highest final pool score, scored 0.524 against the raw counter and 0.5 against the six-setting finalist on paired-side tests, and matches its reconstructed weights exactly in inference. I’m now running its required benchmarks and fresh exploiter challenge.Distilling…
      1. The later six-setting snapshot scored 0.6314 in the final tournament, ahead of the later three-setting snapshot’s 0.6177. The counter and its refinement are still being evaluated; the final ordering is not settled yet.
      2. The counter-initialized refinement scored 0.6355 in the final tournament, a narrow lead over the six-setting policy. The original counter is still in the comparison. If the leading models are close, I’ll use a fresh direct head-to-head test to help choose between them.
      3. The refinement’s selected checkpoint is identical to its original counter parent, so its matching score is a duplicate, not a separate gain. I’ll deduplicate the candidates before the final decision. The six-setting policy is still close on the wider pool.
      4. The aligned counter/league weight average scored 0.64115, narrowly ahead of the raw counter’s 0.6355 and the six-setting policy’s 0.6314. Those margins are small. I’ll compare the three directly on fresh paired-side matches before freezing the winner.
      5. The tournament has finished. I’m running the paired-side tests among the three near-tied finalists and stopping the training runs. The winner’s weights will remain fixed throughout the required benchmarks and fresh exploiter training.
      6. The frozen winner is the 50:50 counter/league weight average. It had the highest final pool score, scored 0.524 against the raw counter and 0.5 against the six-setting finalist on paired-side tests, and matches its reconstructed weights exactly in inference. I’m now running its required benchmarks and fresh exploiter challenge.
    11. rule-defenceAgent #591The model is frozen: weaving generation 24 won the larger comparison. I’m now running the required ONNX benchmarks and two fresh ten-minute exploiters against it—one rule search and one neural-head search.Sifting…
      1. The three-way switch reached about 0.79 against current and 0.71 against the frozen exploiter on a fresh selection set. I’ve added a short-range weaving trial, with the shot prediction updated to account for the extra turn. It has five minutes to show a benefit; then I’ll freeze the candidates for final selection.
      2. The broader searches have finished, and the three-way graph passed its 100,000-decision output check. The weaving trial has found a small turn correction that remains competitive on its selection matches. I’m moving the archived candidates into one paired-seed comparison before freezing the final model.
      3. Training is complete. The final weaving checkpoint scored about 0.75 against both accurate rule opponents in its latest selection test, with Starter at 1.0 over 400 matches. I’m now comparing the archived candidates on larger, shared seed sets, then I’ll train fresh exploiters against the chosen model.
      4. The larger screening tests favor a weaving candidate so far: 0.996 against Starter over 2,000 matches, 0.76525 against current, and 0.73925 against the frozen exploiter. I’m rechecking the finalists on larger samples before freezing one for the ten-minute attack.
      5. The larger recheck still favors a weaving candidate: 0.9964 against Starter over 5,000 matches, 0.7635 against current, 0.7435 against the frozen exploiter, and 0.984 against the neural opponent. Two finalists remain to be checked before I freeze the model.
      6. The model is frozen: weaving generation 24 won the larger comparison. I’m now running the required ONNX benchmarks and two fresh ten-minute exploiters against it—one rule search and one neural-head search.
    12. sp-distill-1Agent #786The final 32-unit model is frozen. Its 31,919-byte ONNX matched native inference on 3,000 recorded observations within 6.6e-7, with no firing disagreements. I’m now running the four final records and a fresh ten-minute counter search with gated, ungated, and Starter-head neural opponents. The selected model will remain unchanged during that search.Working it out…
      1. I’ve pinned the simulator citations to the exact repository commit and verified the saved checkpoint’s JSON, model hash, operator list, and size limits. The final test spawn ranges remain unused; the last adversary search will begin only after the selected model is frozen.
      2. Training is in its last few minutes. I’ll rank the eligible checkpoints on a fresh larger set, including matches against one another, then freeze the selected ONNX and run the reserved ten-minute counter search.
      3. Training has finished. I’m starting the final comparison with 10,000 Starter matches and 6,000 current-rule matches per finalist, plus the accurate counter, evasive opponent, built-ins, and finalist cross-play. That should give a firmer basis for selection than the smaller checkpoint screens.
      4. The first finalist’s larger comparison scored 0.8040833333333334 against the current rule over 6,000 matches and 0.993875 against Starter over 10,000. It also won all 800 built-in matches. I’m comparing the remaining finalists and their cross-play results before locking the entry.
      5. The 32-unit finalist leads the larger comparison so far: 0.80408 against the current rule, 0.993875 against Starter, and 1.0 against the built-ins. The smaller finalist fell to 0.9839 against Starter and 0.98125 against the built-ins, so I’m excluding it from final selection.
      6. The final 32-unit model is frozen. Its 31,919-byte ONNX matched native inference on 3,000 recorded observations within 6.6e-7, with no firing disagreements. I’m now running the four final records and a fresh ten-minute counter search with gated, ungated, and Starter-head neural opponents. The selected model will remain unchanged during that search.
    13. sp-gradient-5Agent #847None of the 37 Starter losses in the 2,000-match diagnostic ended with HP remaining; they were combat losses, not ground crashes with remaining health. The league run has completed its planned 40 minutes, so I’ll retain its saved checkpoints without adding an altitude guard.Brewing…
      1. The larger test confirmed checkpoint 1020’s gain: **0.8075 against current** and **0.78 against the earlier response**. Starter score fell to **0.98375**, so I’m testing a smaller residual before final selection.
      2. I’m testing one explicit safety guard: reduce the learned residual against fast opponents, where it received less training coverage. This keeps the PPO policy’s adjustments in slow fights and uses more of the original rule in fast ones. I’ll report this ablation separately.
      3. The first speed guard scored **0.815 against current**, but only **0.985 against Starter** on the larger comparison. That is a small Starter gain over the unguarded policy. I’ll finish the other guard test before deciding whether the extra rule is worthwhile.
      4. The second speed guard did not improve the balance. I’ll keep the unguarded PPO residuals as the main candidates and record both guard tests as unsuccessful ablations.
      5. The latest checkpoint scored **0.824 against current** and **0.802 against the earlier response**, but **0.9815 against Starter**. I’m checking how those Starter losses end to see whether the residual is disrupting the rule’s altitude safety.
      6. None of the 37 Starter losses in the 2,000-match diagnostic ended with HP remaining; they were combat losses, not ground crashes with remaining health. The league run has completed its planned 40 minutes, so I’ll retain its saved checkpoints without adding an altitude guard.
    14. rule-constantsAgent #1471The last two searches are nearly complete. The result file already contains the stronger saved checkpoint; it will be replaced by the selected model and its final ONNX records once those checks finish.Connecting dots…
      1. The remaining searches are nearing their time limits. The balanced search is the most relevant challenger now; larger comparisons against the fixed pool will decide whether its gains hold up before the final measurements.
      2. The final comparison will retain the balanced candidates as well as the candidates with the highest current-entry scores. That prevents the first screening pass from discarding a robust model before it reaches the full pool test.
      3. The covariance search is complete, and the balanced search is close to finishing. I’m ensuring the final exploiter search retains its strongest starting opponent, so later mutations cannot accidentally replace it with a weaker checkpoint.
      4. The balanced search is close to its cutoff, and the original core search has about eight minutes left. Once they finish, I’ll select from the archive and fix the submitted model before training the final exploiter.
      5. The balanced search has finished its 30-minute run, and the regression-penalized core search has finished its hour. I’m checking the source list and preserving the final archive while the remaining two searches complete.
      6. The last two searches are nearly complete. The result file already contains the stronger saved checkpoint; it will be replaced by the selected model and its final ONNX records once those checks finish.
    15. sp-league-2Agent #831The frozen model scored **3,000 kills in 3,000 ONNX matches against Starter** and passed the repository validator. It also matched the native policy on 14,685 flight observations with no shooting disagreements. The fresh exploiter has already found promising attacks, so that test remains important despite the perfect Starter result.Drafting…
      1. Training is complete, with **256 candidate models and 258 retained opponents**. Final selection will exclude exact copies of the candidate itself, so self-play timeouts don’t determine the worst-opponent score. The finalists will then face every other retained opponent over 400 fresh paired matches.
      2. The final screen and confirmation matches are running. I’ve also started the Starter evaluation for the leading candidate. That result will be reused only if its ONNX hash exactly matches the model selected by the pool comparison.
      3. The leading candidate passed the larger confirmation: its worst score was **0.58 across all 257 other opponents**, over **400 fresh paired matches per opponent**. The remaining finalists are still being checked, and its Starter evaluation is running through ONNX.
      4. The remaining confirmations are reinforcing the lead: several other finalists have worst-case scores around **0.25–0.27**, compared with **0.58** for the leader. I’m completing the remaining checks and have prepared the artifact-size, hash, schema, operator, and source-quote validations.
      5. The model is frozen. It finished first with a **0.58 worst-case score** and **0.7881 mean score** across the other retained opponents. The ten-minute exploiter search and final ONNX match sets are now running; the model will remain unchanged during those tests.
      6. The frozen model scored **3,000 kills in 3,000 ONNX matches against Starter** and passed the repository validator. It also matched the native policy on 14,685 flight observations with no shooting disagreements. The fresh exploiter has already found promising attacks, so that test remains important despite the perfect Starter result.
    16. rule-mutualAgent #495A fixed rule won selection: 0.8495 against the current entry, 0.99775 against Starter, and 3.2% mirror mutual kills on the comparison set. Its 18,930-byte ONNX export passed the repository validator. The model is now frozen; I’m starting the untouched final match sets and ten-minute adversary search.Cross-checking…
      1. The preflight ONNX validator passed for the early checkpoint, and the source quotes are verified. After selection, I’ll repeat validation on the final export, check native/ONNX agreement, and use the ONNX model directly for the reported match records.
      2. The artifact preflight passed: strict JSON shape, decoded-model hash and size, allowed operators, finite outputs on 2,001 inputs, and all four source quotes. I’m also smoke-testing the final adversary scripts before their full run.
      3. Both adversary scripts passed their short smoke tests. The final training round has about four minutes left. After selection, I’ll run its reported ONNX match sets in parallel with the ten-minute adversary search.
      4. I’ll keep selection results separate from the final records and include the strongest rule adversary’s constants in the report so another seat can reconstruct it. That should make the remaining weakness reproducible even if this model is not chosen for upload.
      5. The last training round is ending. Next is the fresh candidate comparison, followed by export and parity checks. Once that model is frozen, neither its constants nor its selector weights will change during the final evaluations.
      6. A fixed rule won selection: 0.8495 against the current entry, 0.99775 against Starter, and 3.2% mirror mutual kills on the comparison set. Its 18,930-byte ONNX export passed the repository validator. The model is now frozen; I’m starting the untouched final match sets and ten-minute adversary search.
    17. sp-response-5Agent #1522The main branch’s validation result has plateaued. I’m using the remaining mixed-training time for a short refinement with a larger rollout batch, to reduce selection noise. Its checkpoints will enter the fresh comparison alongside the other branches.Chewing on it…
      1. The mixed run’s held-out objective has improved from about 0.56 to 0.64. All ten opponents are loaded: the original entry, seven response links, Starter, and the auxiliary neural policy. I’m checking a frozen checkpoint against Starter and the original entry to see how that objective translates into match scores.
      2. The early mixed checkpoint scored 0.99 against Starter, 0.4005 against the original entry, and 0.657 against link one. It still has a weak matchup. I’m adding a parallel branch that puts more weight on its worst opponent; both branches will face the same separate selection tests.
      3. The later mixed checkpoint improved to 0.6795 against the original entry over 1,000 fresh matches and 0.998 against Starter over 500. That is a better balance than the early checkpoint. Both mixed-pool branches are still training.
      4. The main branch’s held-out objective is now about 0.82, and the worst-opponent branch has improved from its starting point. I’m retaining distinct checkpoints so the final choice can use fresh cross-play scores as well as training validation.
      5. The worst-focused branch has reached about 0.77 on its held-out objective; the main branch remains near 0.82 on its differently weighted objective. Neither is a final match score. The checkpoint comparison will test both against the same fresh opponents and seeds.
      6. The main branch’s validation result has plateaued. I’m using the remaining mixed-training time for a short refinement with a larger rollout batch, to reduce selection noise. Its checkpoints will enter the fresh comparison alongside the other branches.
    18. sp-league-3Agent #985Training is finishing. I’ll freeze the candidate pool, screen the retained models, and refine the leading six on fresh matches against every opponent. The selected model will then stay unchanged during the required ten-minute exploiter search and final ONNX evaluations.Sketching…
      1. The focused neural search has found a substantial weakness: a recent checkpoint scored about 0.75 against the wrapped rule on its small monitoring set. That makes the earlier improvement provisional. I’m preserving the adversary, checking it on a larger fresh set, and feeding it back into the league.
      2. The larger check confirms the new adversary scores 0.71 against the wrapped rule, but only 0.00825 against the newer league rule over 1,000 matches. I also caught and corrected a distillation bug: the student needed binary shooting labels, not the teacher’s raw logits. Those student checkpoints were discarded.
      3. The newer league rule is still handling the adversaries that defeated the wrap variant. I’m using the remaining training window for a final broad-pool refinement, with another neural search targeting that newer rule. Afterward I’ll freeze the candidate, train the required ten-minute exploiter, and run the four reported evaluations.
      4. The final refinement is testing against more than 80 retained opponents, including earlier champions and neural snapshots. The targeted neural search now wins roughly a quarter of its small checks against the newer rule, up from near zero. I’m keeping earlier candidates eligible for final selection rather than assuming the latest checkpoint is strongest.
      5. I checked the final harness’s match resets. The built-in opponents carry tactical state, so they now start fresh for every match; an ONNX/native cross-check agrees after that fix. The remaining refinement is producing candidates with varied matchup strengths, so final selection will use the full retained pool.
      6. Training is finishing. I’ll freeze the candidate pool, screen the retained models, and refine the leading six on fresh matches against every opponent. The selected model will then stay unchanged during the required ten-minute exploiter search and final ONNX evaluations.
    19. sp-response-2Agent #723The mixture’s selection-set average has risen to about 0.746 across all seven opponents. I’ll retain its per-link fresh-seed results too, because this average cannot establish that it beats every link.Weighing it up…
      1. Link 3 scored **0.893 on 1,000 fresh matches** against Link 2. Link 4 is now training. The first three responses all beat their immediate predecessors on held-out matches.
      2. I’m adding a neural challenger for the ten-minute exploiter stage. It will evolve Starter’s 771 output-head parameters in parallel with the rule-family search. I’ll compare the two on fresh selection matches and use the stronger opponent for the final 500-match test.
      3. Link 4 scored **0.791 on 1,000 fresh matches** against Link 3. The neural challenger implementation also reproduced Starter’s exact record in a 200-match check, so it is ready for the final exploiter stage.
      4. Link 5 scored **0.865 on 1,000 fresh matches** against Link 4. The sixth and last link is now training. Next comes twenty minutes of training against the entire retained chain.
      5. The sixth response scored **0.87 on 1,000 fresh matches** against Link 5. All six links are retained. Whole-chain training has begun; its initial selection-set average is about 0.620 across the current entry and six responses.
      6. The mixture’s selection-set average has risen to about 0.746 across all seven opponents. I’ll retain its per-link fresh-seed results too, because this average cannot establish that it beats every link.
    20. sp-starter-4Agent #1544Pinning to the repo's rc.11 to match its API.
      1. rate limit cleared
      2. Rust is installed; setting up Python packages via a target directory since venv isn't available.
      3. Simulator source is clear. Now writing a Rust harness: native MLP (Starter + my nets), ort for the current entry, BC trainer, and ES self-play league.
      4. Machine has no C toolchain; fetching zig into .cache to use as the linker.
      5. Need to strip --target= in the cc wrapper.
      6. Pinning to the repo's rc.11 to match its API.
    21. rule-lossesAgent #355Rust is installed. Next: generate the translated rules, build the harness, and check the native translation against ONNX Runtime.
      1. cloning the base repository
      2. running claude on claude-opus-5-5
      3. claude reports claude-opus-5-5
      4. rate limit cleared
      5. Setting up: the repo and Python ONNX tools are in place; the Rust install failed, so I'm checking why before I build the simulator.
      6. Rust is installed. Next: generate the translated rules, build the harness, and check the native translation against ONNX Runtime.
    22. rule-unreadableAgent #970The exploiter runs were killed by the tool's 10-minute cap and left no output. I'm rerunning both at 8 minutes each, in parallel, so they fit under it.
      1. claude reports claude-sonnet-5-5
      2. rate limit cleared
      3. Cloned the challenge repo. Next I'll set up Rust and build the simulator inside .cache/.
      4. Linking failed on a missing libstdc++ dev symlink. I'm adding the symlink and rebuilding.
      5. Only about 20 minutes have elapsed. The 3,000-match run was slow because ONNX sessions were oversubscribing threads, so I've limited them to one thread each and am rebuilding.
      6. The exploiter runs were killed by the tool's 10-minute cap and left no output. I'm rerunning both at 8 minutes each, in parallel, so they fit under it.
    23. sp-distill-5Agent #869Status: the baseline eval and teacher recordings are done, about 148k labelled samples across 6 opponent sets. I'm now training the first distilled MLP.
      1. Setting up the build: the repo is cloned and Rust is installed, but there's no C compiler on this machine. I'm checking whether I can link without one.
      2. rate limit cleared
      3. Still setting up the build. I'm installing a local gcc into .cache from downloaded packages, because the machine has no C compiler and the OpenSSL build step needs one.
      4. Still working on the build. The openssl_macros proc-macro crate shows as built, but rustc can't find it. I'm checking whether its output file exists.
      5. Status: the simulator builds and the Python tooling (torch, onnx) is installed. Next I'm checking which ONNX operators the two reference models use, and the harness API.
      6. Status: the baseline eval and teacher recordings are done, about 148k labelled samples across 6 opponent sets. I'm now training the first distilled MLP.
    24. sp-starter-1Agent #625The simulator builds, using a private gcc sysroot because this machine has no C toolchain. Next is the harness check: current model against Starter over 3,000 matches.
      1. cloning the base repository
      2. running claude on claude-opus-5-5
      3. claude reports claude-opus-5-5
      4. The simulator builds, using a private gcc sysroot because this machine has no C toolchain. Next is the harness check: current model against Starter over 3,000 matches.
    The first 5
  3. Publishedafter verification

50 agents at most, 0 of 2 merges

Outputs

52 files accepted