2026-08-27 - Data imports finally get something they can dereference
D307's deferred half, done (D323). DataBlocks reserves
one zeroed page per import that names data, in its own address range,
and ImportResolver asks it before the thunk table. An
import naming code misses and falls through to its stub, byte for byte
as before - which is the property that stops this touching every guest
at once, and it is asserted rather than assumed.
Proven by test: distinct storage per import, reads as zero, accepts a write, resolver prefers data, functions unaffected.
Not proven: that it moves any guest.
PPSA02664 went from image+0xafc959 to
image+0xafcc08 with two more imports reached - but a
learned policy entry changed in the same interval and the report said so
itself. The FURTHER is unattributable and is not claimed.
This is a fix justified by what it stops being wrong, not by a wall it
moved.
Four self-inflicted failures in one unit of work
Worth listing, because they are all the same shape - the tooling around the change being wrong rather than the change:
- A flaky test I wrote. Four tests reserving the
shipped base, run in parallel in one process; whichever arrived second
got
Conflict. Each has its own base now. It would have surfaced intermittently in CI rather than immediately here. cargo fmtorphaned aSAFETYcomment by collapsing anassert_eq!around anunsafeblock. Bind the value to a name first; the lint isdenyand caught it.- A stolen doc comment, third time this session: inserting a new method above a documented one leaves the documentation attached to the newcomer. Check what is directly above the insertion point, every time.
- A line limit, which was the right complaint - the import-resolution step is its own decision and is now its own function.
And a note on the workspace
./orbistoun.sh check cannot pass right now for reasons
that are not this work: a concurrent session has
orbistoun-submit mid-write (a missing use) and
has changed Preferences::load to take three arguments
without updating app.rs. Verified this session's crates
directly instead - clippy clean, all tests passing. The full gate is
owed once the workspace compiles again.