Core War · Finding
2026-10-09 · 6 min read

The premature pump death

AI notice: This text is created with the support of AI systems; it is reviewed editorially and taken responsibility for before publication.

A bomber's step size — the spacing at which it drops its bombs into memory — is the best-researched constant in Core War. There are tools that compute it and rules of thumb that have held for thirty years: good lattice, fast coverage, no early self-hit. Even so, one of our experimental bombers showed a loss rate against our own Arvon scattering between 45 and 64 percent — at step sizes that were equivalent by every rule of thumb.

This page tells how we found the reason, and why the finding, despite clean confirmation, has not become a build rule.

What was already known

One exclusion test was known: if the bomber hits itself within the first 2500 cycles, it loses to Arvon 75 to 82 percent of the time. The test is opponent-free — you run the bomber against an inert dummy and watch when the first bomb lands in its own cells.

Among the step sizes without an early self-hit, however, a spread of 45 to 64 percent remained. Beforehand, unregistered and only for sorting, we tried everything the textbooks name: lattice residues, coverage times, the analytically first self-hit, proximity to Arvon's own constants. None of it correlated more strongly than 0.3 with the mechanics.

A minimal pair

Two neighbouring step sizes, 2667 and 2669, produce the same three-front lattice and differ in nothing else. Loss against Arvon on three seeds: 48.5 / 53.5 / 52.5 percent versus 60.8 / 61.0 / 63.0 percent. The difference was real and reproducible — but the hypothesis "Arvon gets infected earlier" did not explain it: within the classes the difference changed sign.

One trail remained: the bomber's own process count after 20,000 cycles, median 1834 versus 4300. Arvon's stone bombs with DAT and cannot produce that. So, measured opponent-free against the dummy: bomber 2669 has 72 / 739 / 3068 / 7723 processes after 2500 / 5000 / 10,000 / 20,000 cycles — it hits itself between 2500 and 5000 cycles, and the process count multiplies tenfold. Bomber 2667: 72 / 101 / 142 / 2483, self-hit only between 10,000 and 20,000 cycles.

First hypothesis: "late self-hit" — rejected

The obvious rule was: a late self-hit is good. Written down before the test, then a scan of all 1349 step sizes coprime with the core size. Result: 914 of them, 68 percent, have a "late" self-hit — that is the norm, not a distinguishing feature. Five random new step sizes per class, three seeds: 53.0 versus 54.6 percent loss, difference −1.6 points. Rejected. The finding from the minimal pair did not carry as a rule.

Second hypothesis: the premature pump death — passed

In the scan a third signature stood out, admittedly only after the first failure: for some step sizes the bomber's own process count against the dummy is below 90 both after 5000 and after 10,000 cycles — instead of the normal pump curve of about 101 and 142. Which means: the split instruction that keeps feeding the bomber new processes — its pump — is no longer being executed.

The trace shows what happens: the last pump execution is at about 3828 cycles; after that the bomb loop falls through, and the part of the module that is supposed to clean up only at the very end starts prematurely. The bomber stops bombing from about 4000 cycles. 104 of 1349 step sizes, 7.7 percent, show this signature.

Criteria fixed beforehand, then five random new step sizes per class against Arvon, three seeds:

Class Loss against Arvon
Pump dies prematurely 60.5 / 63.3 / 63.1 / 61.1 / 67.6 — mean 63.1 %
Pump runs normally 57.6 / 49.2 / 42.2 / 45.8 / 48.9 — mean 48.7 %

Difference +14.4 percentage points pooled, per seed +14.2 / +16.5 / +12.4; the groups do not overlap. All four pre-set criteria met. Passed.

The trap: does this hold for Redcode or only for this bomber?

A mechanism measured on one core against one opponent is not yet a statement about the game. Hence the second check, on both axes.

Different opponent, same bomber. Against Nine Seven Six by M. R. Bremer, a scanner from the archive serving as stand-in for a hill resident: 55.1 versus 49.6 percent, difference +5.5 points, per seed +6.2 / +4.3 / +6.0. Same direction, but only a third as large as against Arvon and within about two standard errors. The threshold (+8 pooled, +5 per seed) is missed; the rejection criterion is not triggered. Verdict: carries, not completely.

Different core, same opponent. The only core in our catalogue with the same architecture — pump, bomb, step, counter — is the extraction from Carbonite by David Moore. Pump curve identical (101 / 142), signature cleanly classifiable. Result against Arvon: 91.6 percent loss with premature pump death, 91.1 percent with the pump running. A ceiling effect fixed beforehand (mean above 75 percent loss) makes this not evaluable: even the dead bomber loses no more than the live one, because this core achieves nothing against Arvon anyway (solo 92.8 to 96.5 percent loss).

For comparison, the original core solo: 46.2 percent loss with 53 percent ties. It hardly ever "wins" against Arvon — it survives.

What remains

For this bomber against Arvon there are now two opponent-free exclusion tests for step sizes: early self-hit (loss 75 to 82 percent) and premature pump death (60 to 68 percent); the pure pump curve lands at 42 to 58 percent. Both are malfunctions of the bomber's own mechanics, not a property of the opponent — and that is exactly why lattice and coverage measures predicted nothing. They measure where the bombs land, not whether the bomber is still alive to throw them.

It has not become a build rule all the same. The second check was not passed on either axis, and recomputing the win/tie/loss figures showed why the thread could never have produced a candidate anyway: the bomber wins against Arvon in no class (0.5 to 1.7 percent wins). All differences in this series are shifts between tie and loss. The step-size regime is a survival measure, not an attack measure. At three points per win and one per tie, that is secondary.

Takeaway: a ceiling clause fixed beforehand turns a 91-percent result into "not evaluable" instead of "no effect". And a control cell before registration would have saved 18,000 fights.

Measurement convention

  • All series pre-registered (hypothesis, classes, thresholds and rejection criteria written down before measuring).
  • 3 seeds × 400 fixed start positions per pairing; loss as a percentage of rounds.
  • Signatures measured opponent-free: own bomber against an inert dummy, own process count after 2500 / 5000 / 10,000 / 20,000 cycles.
  • Opponent for the second check chosen mechanically from test field v16 (first scanner slot with a control loss between 40 and 70 percent).
  • Sources: entries N1387 and N1388 (8 October 2026), building on N1254.

Attribution

The experimental bomber is a lab build and stands on no hill. Carbonite is by David Moore; the scanner opponent of the cross-check, Nine Seven Six, by M. R. Bremer (Koenigstuhl archive); no source code of either is reproduced here. Arvon is our own warrior (Stefan Kammann & Forge-AI), class paper/stone with quickscanner.


← Core War overview