D357 - The loop can close a question when the discriminator is arithmetic

decided · 2026-08-28 · asked how to close the limit D356 left open

D356 made a turn ask the top open question and stop there: it ran every map shape and reported what each did to the fault, which answers a question about crashing rather than the one that was asked. Closing that needed three things, and none of them was a model.

An experiment says what to run and must also say what to read

Answers::axes produced axes. Nothing said what the run was for, so the only vocabulary available was every diagnostic's - the fault moved, the guest reached further. Whether a guest accepts a memory map is not visible in reach at all: it walks every shape correctly and restarts.

What separates the two live readings of the second field is which offset it queries next, and that is arithmetic on numbers already recorded. Reading carries it, and Undecided carries a reason, because a run that could not have decided must not be recorded as one that failed to.

The shape that would settle it did not exist

Fragmented was believed to be this experiment. It is not - it has four regions and every one begins exactly where the last ended, which is what the knowledge entry warned about in as many words: "needs a map with a gap in it, not a map with more regions".

Under a contiguous map, feeding back end and feeding back start + size are the same number. Three shapes existed, all contiguous, so the question was unanswerable by construction and had been since D218. MapShape::Gapped is the first shape that can separate them.

A run must record the map it presented

The offsets a guest queries mean nothing without the boundaries it was given, and those were computed inside the emulator and discarded. Recomputing them from the configured shape would be a second copy of the thing being measured - and wrong whenever a shape falls back because its regions do not fit. Conditions::memory_map records what was actually built.

The answer

does the guest accept a gapped physical memory map?
  *** it walks by End - the question is answered

The guest feeds back the end of the region it was shown. A question open since D218, settled by the loop, with nobody reading a trace.

The three contiguous shapes report undecided: the map is contiguous, so feeding back an end and a next start are the same number - which is the honest answer for a run that could not have decided, and the reason the fourth shape had to be built.

The bug in between, and what it looked like

The first wired version reported "the guest queried fewer than two offsets" for a title making twenty million of exactly those calls. calls in a trace is a summary - one row per import with a count and no arguments - and the ordered record carrying them is tail.

A reader pointed at the wrong array produced a sentence that was false about the guest and perfectly plausible about the experiment. It was caught only because the number was absurd on its face.

Where the limit still is

This closes questions whose discriminator is arithmetic on recorded data - an offset, an address, a count. It cannot close one that asks whether behaviour is correct: that needs the conformance probe, which grades against a spec, or a person. The two classes are worth keeping apart, because the first is now automatable and the second is not.