D356 - The dispatcher read what crashed and never what we had written down as unknown

decided · 2026-08-27 · asked why a person was needed for something already specified

A turn ends by reporting implementing a function is a person writing code. On sceKernelDirectMemoryQuery - 67.5% of every call the corpus makes - that was false. The project had already written down what it did not know, ranked it, and named the experiment:

500031 calls in 4 module(s)   libkernel::sceKernelDirectMemoryQuery
  ? The map shape the guest will accept is unknown: it completes the walk,
    finds nothing it wants, and starts again.
  ? Fields 0 and 2 are never fed back... That needs a read watchpoint on the buffer.

277 questions, machine-readable, ranked by call volume. Nothing read them. grep for the questions API in the dispatcher returned nothing: it is driven entirely by run reports - what crashed, this time.

And the apparatus was already built. MapShape has had three variants since D218 with no consumer anywhere in the tree - the experiment was designed, the enum written, and nothing ever selected between them. The instrument existed, the question existed, and no code joined the two.

What was missing, in full

piece state
the question recorded and ranked since D218
the shapes MapShape, three variants, no consumer
a way for a run to select one absent
a diagnostic axis for it absent
anything reading questions absent

ORBISTOUN_MAP_SHAPE now selects one, Axis::MapShape sweeps them, and a turn asks the highest-ranked question that names its own experiment.

Why a label and not prose

A question is written for a person, so classifying one by its words is guesswork wearing a rule's clothes - and a rule that silently fails to match is indistinguishable from a question nobody can act on. A knowledge entry names the experiment in a field, answerable_by, and anything unlabelled is reported rather than filtered away: "we have no rule for this" and "there is nothing to ask" must not look the same.

A label this build does not recognise is printed as an error, not dropped. A knowledge file naming an experiment that does not exist is a claim nobody can act on, and silence is how it stays that way.

The fourth instance of one bug, found by running it

The first run reported all three shapes stopped the fault. They had not: PPSA04263 spins to the time limit and never faults at all.

(_, None) => Change::NoLongerFaulted,

A wildcard on the baseline. A run that never faulted cannot stop faulting, and three interventions came back as though each had fixed something. Fixed to (None, None) => Nothing, and it now reports honestly: the map shape makes no difference to that title - a real measurement, and the first answer to that question in the project's history.

That is the fourth time today a field only meaningful when a fault happened was read on a run where none did: the progress verdict (D309), the sweep's oracle (D351), Derailed (D351), and this. The shape is always the same - Option<u64> where None means it did not happen, consulted as though it meant it happened, at zero.

What it does not do

It runs the experiment and prints what each run did. Concluding that a shape is the shape needs the guest to accept it and get further, which is a judgement this leaves alone. The loop asks the question; it does not decide it has been answered.