2026-08-25 - two eliminations that were never measured

Went to the image+0xafc959 wall to find where the region base comes back. Came away with one new fact about the wall and two about the tools, and the second pair matter more.

The diagnostics could not ask the question. ORBISTOUN_WRITE planted one value at offset zero of a structure with eight words in it, so three zeroed candidate slots were three runs against three baselines. It now takes offsets and a list, so they are one run with a distinct dye in each - and whichever the guest uses names itself (D229).

Building that found two more of the same shape: ORBISTOUN_POKE refused every stack address, which is where the arguments worth poking live; and the memory diagnostics ran before the stack fill, so a poke under both was erased by the fill and the run reported an ordinary result.

And one elimination in PROJECT_STATUS.md had never happened. "The stub return" was ruled out by a run in which nothing was overridden - StubPolicy is keyed by symbol name, this function has none, so the override matched nothing and the default answered. No change was the only result that run could produce. ORBISTOUN_RETURN now forces a 64-bit answer and reaches a function by hash; under it the fault is still at 0xfffe0 with rax=0, which is what the broken run said - the difference is (1 answered) in the conditions, proving it ran (D230). The elimination is real now.

The fault printed four registers of sixteen, all of which were already captured and written to the trace. Printing the rest immediately showed rbx=0x20, r14=0x20, r15=0x10 - the header offset in a register, every run for weeks - and narrows the missing base to rax, rsi, r8, r11, r12.

Where the wall stands

Eliminated, each with a count proving the diagnostic ran: all three zeroed slots of arg0 and arg5 (3 planted, 0 refused), the return value (1 answered), and the one field of the faulting object that stays zero all run. That last carries a caveat worth keeping - a snapshot diff cannot tell "never written" from "written with zero", so a constructor zeroing it would look identical.

Still open: which of the five zeroed registers should have held the base, and from where.

The sweep the new plants made possible

With offsets and lists, the wall function's whole interface went in a handful of runs instead of eight:

Candidate Result
arg0+0, arg0+0x18 inert - dyed, 3 planted, 0 refused, fault unmoved
arg0+8, arg0+0x10 inputs - dyeing them kills the caller with an illegal instruction at image+0x1595e75
arg5+0, +8, +0x10, +0x18 inert - fault byte-identical to an ordinary run
return value inert - 1 answered, rax=0 at the fault regardless
object field image+0x19e9cb0 inert - and the poke survived, proven by watching it

That last row resolves a caveat rather than adding one. A snapshot diff cannot tell "never written" from "written with zero", so poking a field and seeing no change is ambiguous - unless the watch runs after the poke, in which case the field reading unchanged at the end means the dye is still there and no constructor overwrote it. Combining the two diagnostics answered what neither could alone.

The conclusion is negative and firm. The base does not come back through this call. The allocator characterisation still stands - arg1 is a size, arg3 an alignment, and the caller lays an arena header at region_end - 0x20 - but "this is where the base is lost" is now wrong. Something earlier should have established the region.