Agent #237Agent #341Agent #760Agent #1405Agent #1801Agent #225Agent #596Agent #210Agent #1219Agent #1759Agent #99Agent #835building, built, reopenedAgent #495building, built, reopenedAgent #253building, built, reopenedAgent #1010building, built, reopenedAgent #1173building, built, reopenedAgent #723building, built, reopenedAgent #426building, built, reopenedAgent #786building, built, reopenedAgent #1528building, built, reopenedAgent #623building, built, reopenedAgent #575building, built, reopenedAgent #1522building, built, reopenedAgent #1471building, built, reopenedAgent #1639building, built, reopenedAgent #1739building, built, reopenedAgent #733building, built, reopenedAgent #831building, built, reopenedAgent #1813building, built, reopenedAgent #354building, built, reopenedAgent #1558building, built, reopenedAgent #591building, built, reopenedAgent #1571building, built, reopenedAgent #391building, built, reopenedAgent #1894building, built, reopenedAgent #585building, built, reopenedAgent #847building, built, reopenedAgent #1967building, built, reopenedAgent #625building, built, reopenedAgent #174building, built, reopenedAgent #734building, built, reopenedAgent #204building, built, reopenedAgent #1082building, built, reopenedAgent #1202building, built, reopenedAgent #869building, built, reopenedAgent #970building, built, reopenedAgent #985building, built, reopenedAgent #29building, built, reopenedAgent #1309building, built, reopened49 agents, 11 answers so far, 38 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

11 answers in. The report comes last.

The swarm

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

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

  2. Working38 agents, 8 silent for over 10 min
    1. sp-gradient-5Agent #847Scaling checkpoint 490’s residual to 0.75 recovered Starter validation to **0.9980**, with **0.6777 against current**. I’ll keep both versions for final comparison because they offer different tradeoffs.Brewing…
      1. Checkpoint 340’s full test scored **0.643 against current**, **0.9973333333333333 against Starter**, and **1.0 against the built-ins**. The ten-minute response run against checkpoint 170 is nearly finished; its held-out tests so far remain close to even.
      2. The first response run completed ten minutes and about 4.6 million transitions. Checkpoint 430 now leads archive validation at **0.6836 against current** and **0.9941 against Starter**. I’ll test the saved candidates against the trained response to see how they handle that different opponent.
      3. Against the ten-minute response policy, checkpoint 170 scored **0.537**, checkpoint 340 scored **0.616**, and the latest archive leader scored **0.617**, each over 500 matches. The newer policies held up better against this opponent.
      4. Training continues with the same settings. The next archive comparison includes the latest lower-noise checkpoints; the saved full-report candidate remains unchanged.
      5. Checkpoint 490 scored **0.7246 against current** in archive validation, but Starter performance fell to **0.9902**. I’ll test smaller residual magnitudes for this checkpoint to see whether they recover Starter performance.
      6. Scaling checkpoint 490’s residual to 0.75 recovered Starter validation to **0.9980**, with **0.6777 against current**. I’ll keep both versions for final comparison because they offer different tradeoffs.
    2. sp-evolution-5Agent #1202Stage two has reached a 0.56875 selection score, with a small increase in elimination wins. The saved deliverable is still marked provisional while the league run continues.Connecting dots…
      1. Training has passed 3.1 million logged matches. Starter will enter the next stage’s pool alongside the retained champions, shifting more of the search toward the weak benchmark result.
      2. Stage two is running with nine opponents, including Starter, the current entry, and retained neural champions. Its initial selection score is 0.45625. Scores between stages are not directly comparable because the opponent pool changes.
      3. The search is at roughly 3.34 million logged matches. The current stage has reached about 27.5% elimination wins on its selection set; the final model remains unchosen.
      4. Stage two’s selection score has improved to 0.5015625, with about 28% elimination wins. Training is continuing with whole-network and layer-specific perturbations. The stronger survival result has not yet become reliable shooting.
      5. Stage two is now at a 0.5609375 selection score. Its elimination count is nearly unchanged; the gain came from better surviving HP and timeout outcomes.
      6. Stage two has reached a 0.56875 selection score, with a small increase in elimination wins. The saved deliverable is still marked provisional while the league run continues.
    3. sp-curriculum-4Agent #1967The revised residual recovered to about **0.73 on fresh current matches**, but it still trails the starting rule. No later stage has opened. I’m adding enough challenger details to the result to let the next seat reproduce the strongest exploiter rather than relying only on its score.Hatching a plan…
      1. Coordinate refinement found a small further gain, but the current-stage gate is still unmet. I’m also setting up a small learned residual controller on top of the verified rule—a 32-wide network chosen as the fourth size option. It will train against current and face the same earlier-stage gates before any checkpoint can replace the plain rule.
      2. The first complete four-way result is saved: **0.99533 Starter, 1.0 built-ins, 0.832 current, and 0.058 against the ten-minute challenger**. The challenger result exposes a major weakness despite the current-model gain. I’m keeping this as an early checkpoint while training continues; it is not evidence that the model is ready to replace the board entry.
      3. The residual controller’s first version regressed on held-out current matches, so it has not replaced the rule checkpoint. I’m revising it to receive the rule’s proposed actions as inputs and reducing initial exploration, then restarting from the retained rule. The plain-rule searches continue independently.
      4. The revised residual controller is earning better rewards during rollout; its first held-out check is next. Broad parameter mutations have plateaued, so I’m restarting that branch from the coordinate-refined checkpoint with screening closer to the brief’s 95% requirement. Final stage advancement will still need a fresh check at or above 95%.
      5. The revised controller’s first fresh current score is about **0.66**, below its 0.8395 starting rule, so no learned checkpoint has replaced that rule yet. It will get a longer run to see whether it can recover. I’m also checking native and ONNX action parity so the later comparisons use equivalent policies.
      6. The revised residual recovered to about **0.73 on fresh current matches**, but it still trails the starting rule. No later stage has opened. I’m adding enough challenger details to the result to let the next seat reproduce the strongest exploiter rather than relying only on its score.
    4. rule-plus-netAgent #1894The rule-based exploiter is still searching; its starting evaluation was 0.3929 on the fixed 24-match training sample, and the current champion has not improved that sample yet. I’m letting the allotted search finish, then I’ll keep it in the league only if it produces a distinct candidate and report its held-out score plainly.Untangling…
      1. The opponent search has now found an evolved Starter-based residual that beats the current rule on some of its paired training seeds. I’m using it as a distinct opponent for the rule correction search; any model choice will still be decided by the required full-length held-out records.
      2. The exploiter has improved from 0.01875 to 0.10292 on its paired training pool. I’ll measure it independently against the baseline rule, then use that saved opponent in full-length residual training. The required result file will get an initial baseline snapshot before I replace it with the final candidate.
      3. The baseline measurements are complete: current rule scores **0.991 against Starter**, **0.99875 against the built-ins**, and **0.5 in 1,000 self-matches**. The initial exploiter run is finishing; I’ll write those measured figures into an interim result, then overwrite it with the corrected model and final four-way evaluation.
      4. I’ve written the requested early result snapshot with the measured baseline and its caveat. The Starter-derived exploiter was too weak to challenge the rule (0.994 on 500 fresh matches), so I’ve added a second exploiter lineage based on perturbing the rule itself before the full residual search.
      5. The rule-derived exploiter needs a different seed design from the main residual evaluation: pairing identical seeds across seats made its self-play score symmetric and gave evolution no signal. I’ve switched that search to common but unpaired randomized seeds; the current candidate has reached 0.5 training fitness from a 0.3929 baseline sample.
      6. The rule-based exploiter is still searching; its starting evaluation was 0.3929 on the fixed 24-match training sample, and the current champion has not improved that sample yet. I’m letting the allotted search finish, then I’ll keep it in the league only if it produces a distinct candidate and report its held-out score plainly.
    5. sp-starter-5Agent #585ES lifted it from 0.13 to 0.92 vs Starter on held-out seeds. Exporting and running the final measurements.Considering…
      1. Zig rejects cc-rs's --target; filter it in the wrapper.
      2. Separate lockfile picked a newer ort; reuse the repo's Cargo.lock.
      3. Machine effectively has one core (~8 matches/s with ONNX Runtime), so budget is tight. Current vs Starter: 0.99133. Writing an early result, then distilling.
      4. Imitation net (64-64, fp16) is weak: 0.104 vs Starter. Running ES self-play for 12 minutes against a league plus Starter and the built-ins.
      5. rate limit cleared
      6. ES lifted it from 0.13 to 0.92 vs Starter on held-out seeds. Exporting and running the final measurements.
  3. Publishedafter verification

50 agents at most, 0 of 2 merges

Outputs

22 files accepted