D289 - The plan gets a runner, and an out-parameter finding follows itself through
decided · 2026-08-26 · turn::plan had
no consumers outside its own tests
orbistoun-propose::turn maps every finding a report can
name to a next step, and nothing anywhere called it. Four step kinds
were produced and none was ever taken: the dispatcher was a
planner, and the sentence "step 17 is now partly
mechanical" was true only of code somebody ran by hand.
So turn::take runs one step and turn::turn
runs a plan, returning what each produced. Three things about it are
deliberate.
The trait grows a second method rather than the runner taking
a concrete type. Trial had only run,
so anything touching an axis needed GuestTrial - and a
dispatcher that can only be exercised by booting a commercial title is a
dispatcher with no unit tests. spawn joins the trait, the
mock implements it, and the runner is testable against a guest that
exists only in memory.
A step it cannot take says which kind of cannot.
Person is a refusal with a reason. NameAHash
is automatic and still not runnable here, because it needs a
model and a local runtime that the sweep has no business starting. Those
are different facts and collapsing them would report the naming loop as
a policy refusal, which it is not.
An OutParameter finding follows itself
through. The sweep concludes "arg0, offset
+0xfffe0, when the call answers zero" - and the next
question is entirely determined by that answer: reserve a region, plant
its base, see whether the guest goes further. It is one more run with no
decision in it, so it happens rather than being printed as a
suggestion.
That last step is the one that changes what the loop is.
Everything before it measures the shape of a gap; this one
satisfies the contract it measured and asks the guest
whether that was enough. The answer is FURTHER or it is
not, and either way nothing has been guessed - what was planted came out
of the sweep, not out of anybody knowing what the function is for
(D284).