The dispatcher becomes its own crate, and the loop becomes a command

orbistoun-propose was two things sharing a name: one proposes words and needs a model runtime, the other turns the loop and needs boots. Measured before splitting - each cluster referenced only its own modules, and the four dispatcher files referenced orbistoun_llm zero times.

orbistoun-turn now holds turn, experiment, axis, trial. cargo tree -p orbistoun-turn shows six direct dependencies and no path to candle, reqwest or tokenizers - which is the boundary doing the work rather than a feature flag nobody re-checks, the same argument orbistoun-gpu makes for having no path to ash (D293).

Error split with it: the dispatcher used exactly one of the five variants.

And the point of the exercise:

$ orbistoun-cli turn titles/PPSA02664-app0/eboot.bin --record
8 finding(s), 4 step(s), 3 of them mechanical
  swept: OutParameter { slot: 0, offset: 1048544, answer: Some(0) }
  *** gave it a region at 0x50000000: reached 25 against 23, faulting at 0x0
  stopped: implementing a function is a person writing code

  orbistoun-cli learn sceKernelReserveVirtualRange --library libkernel --known guest-observed     --edge "arg0 is an out-parameter: the guest reads a value back from it and indexes ..."     --assumes "what this function is for is not measured; the name is a label on a hash ..."

Printed, not written. What a sweep measures is admissible; changing a tracked file stays a deliberate act with a diff.

Three of my own mistakes, all the same shape

Three edits that looked applied and were not, in one unit of work. The lesson is the assert: every one of them was a replace whose result nothing checked.