D013 - A target answered, and three guesses became measurements while two rules turned out wrong

decided - 2026-08-26 - the first run against real target, at a target on the local network, read-only throughout

The tests are opt-in, and their default state is ignored rather than passed

crates/pros-core/tests/against_a_target.rs, marked #[ignore] with a reason, run by ./prosperous.sh target with PROS_TARGET set. Two properties matter:

Nothing in them writes to the target. A suite that can alter the machine it measures has ambiguous failures, and this one runs against somebody's actual target.

What was confirmed

What was wrong

Two defects, both in the boot list, both invisible to any stand-in.

  1. !3000 lines are instructions to the manager, not payloads. A real list interleaves them between entries. Reading them as payloads turned a boot order of six into one of twelve with every real position doubled.

  2. Names carry versions. The list says elfldr_v0, kstuff-lite_v1, ps5upload-4. An equality test called every one of them absent from a list they were plainly in - which in the boot column means telling somebody their loader will not come back after a reboot when it will.

    The first fix was too loose and produced a third defect immediately: accepting any separator made kstuff match kstuff-lite_v1, reporting one payload as another. A version has to look like a version - a digit, or a v and a digit - and the repository describing both kstuff and kstuff-lite is what made that visible.

And one guess was simply wrong: packages are in /data/pkg, not /user/data. Corrected.

What the target showed that the design predicted

shsrv is running and not in the boot list. That is the case the boot column exists for, and the first real target asked produced it without being arranged to: the shell is there until somebody turns the target off, and nothing but that column says so.

Saves are deeper than a default can reach

/user/home/<user>/savedata_prospero. The starting point stays /user/home, because which user is a question this project cannot answer on somebody's behalf, and the browser exists to walk the two steps.