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

50 answers in. The report comes last.

The swarm

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

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

  2. Working1 agent
    1. merge 01Agent #711The byte check confirms that six items returned the current model unchanged. All reported model sizes match the embedded bytes, but size-and-ops lists operators that differ from its unchanged model. I’ll preserve its reported list and flag the discrepancy, along with the missing source-validation details.Thinking…
      1. cloning the base repository
      2. running codex on gpt-6.1-sol
      3. I’ll read all 25 results, build the comparison table with source references, and flag missing records and the four source-validation concerns. Then I’ll check the output’s coverage and byte limit.
      4. All 25 files are present. Several candidates beat the current entry but lose ground against Starter or fresh exploiters, so those head-to-head gains need qualification. I also found one blocked build with inherited scores, an inconsistent operator list, and several exploiter tests that used weaker substitutes; I’ll make those limits explicit.
      5. The byte check confirms that six items returned the current model unchanged. All reported model sizes match the embedded bytes, but size-and-ops lists operators that differ from its unchanged model. I’ll preserve its reported list and flag the discrepancy, along with the missing source-validation details.
  3. Publishedafter verification

50 agents at most, 1 of 2 merges

Items

50 itemsClose →

allrunningwaitingacceptedfailed

  1. harness-speedAgent #237accepted, 5 of 5 sources checked out, sources.json
  2. harness-lossesAgent #341accepted, 4 of 5 sources checked out, sources.json
  3. sparring-headAgent #760accepted, 3 of 3 sources checked out, sources.json
  4. sparring-smallAgent #1405accepted, 5 of 5 sources checked out, sources.json
  5. size-and-opsAgent #1801accepted, 1 of 2 sources checked out, sources.json
  6. rule-lossesAgent #355accepted, attempt 2, 5 of 6 sources checked out, sources.json
  7. rule-hardenAgent #225accepted, 1 of 1 sources checked out, sources.json
  8. rule-gunneryAgent #204accepted, 3 of 3 sources checked out, sources.json
  9. rule-energyAgent #623accepted, 2 of 2 sources checked out, sources.json
  10. rule-defenceAgent #591accepted, 6 of 6 sources checked out, sources.json
  11. rule-openingAgent #596accepted, 1 of 1 sources checked out, sources.json
  12. rule-mutualAgent #495accepted, 4 of 4 sources checked out, sources.json
  13. rule-constantsAgent #1471accepted, 5 of 5 sources checked out, sources.json
  14. rule-plus-netAgent #1894accepted, 3 of 3 sources checked out, sources.json
  15. rule-unreadableAgent #970accepted, 1 of 1 sources checked out, sources.json
  16. sp-starter-1Agent #625accepted, 2 of 2 sources checked out, sources.json
  17. sp-starter-2Agent #1558accepted, 3 of 4 sources checked out, sources.json
  18. sp-starter-3Agent #1739accepted, 4 of 4 sources checked out, sources.json
  19. sp-starter-4Agent #1544accepted, 2 of 2 sources checked out, sources.json
  20. sp-starter-5Agent #585accepted, 0 of 0 sources checked out, sources.json
  21. sp-distill-1Agent #786accepted, 3 of 3 sources checked out, sources.json
  22. sp-distill-2Agent #1571accepted, 2 of 2 sources checked out, sources.json
  23. sp-distill-3Agent #354accepted, 4 of 4 sources checked out, sources.json
  24. sp-distill-5Agent #869accepted, 0 of 0 sources checked out, sources.json
  25. sp-league-1Agent #613accepted, attempt 2, 1 of 1 sources checked out, sources.json
  26. sp-league-2Agent #831accepted, 3 of 3 sources checked out, sources.json
  27. sp-league-3Agent #985accepted, 7 of 8 sources checked out, sources.json
  28. sp-league-4Agent #575accepted, 2 of 2 sources checked out, sources.json
  29. sp-league-5Agent #1639accepted, 1 of 1 sources checked out, sources.json
  30. sp-curriculum-1Agent #426accepted, 2 of 2 sources checked out, sources.json
  31. sp-curriculum-2Agent #1010accepted, 2 of 2 sources checked out, sources.json
  32. sp-curriculum-3Agent #210accepted, 0 of 0 sources checked out, sources.json
  33. sp-curriculum-4Agent #1967accepted, 6 of 7 sources checked out, sources.json
  34. sp-curriculum-5Agent #29accepted, 0 of 0 sources checked out, sources.json
  35. sp-evolution-1Agent #1082accepted, 3 of 3 sources checked out, sources.json
  36. sp-evolution-2Agent #1528accepted, 3 of 3 sources checked out, sources.json
  37. sp-evolution-3Agent #1219accepted, 2 of 2 sources checked out, sources.json
  38. sp-evolution-4Agent #174accepted, 4 of 4 sources checked out, sources.json
  39. sp-evolution-5Agent #1202accepted, 3 of 5 sources checked out, sources.json
  40. sp-gradient-1Agent #1173accepted, 1 of 1 sources checked out, sources.json
  41. sp-gradient-2Agent #734accepted, 8 of 8 sources checked out, sources.json
  42. sp-gradient-3Agent #1759accepted, 2 of 2 sources checked out, sources.json
  43. sp-gradient-4Agent #391accepted, 0 of 0 sources checked out, sources.json
  44. sp-gradient-5Agent #847accepted, 3 of 3 sources checked out, sources.json
  45. sp-response-1Agent #253accepted, 2 of 2 sources checked out, sources.json
  46. sp-response-2Agent #723accepted, 8 of 8 sources checked out, sources.json
  47. sp-response-3Agent #1813accepted, 8 of 9 sources checked out, sources.json
  48. sp-response-4Agent #99accepted, 2 of 2 sources checked out, sources.json
  49. sp-response-5Agent #1522accepted, 3 of 3 sources checked out, sources.json

Outputs

101 files accepted

File integrity and allowed paths were checked. Content accuracy and quality were not evaluated.