D246 - An existence fact is graded like every other fact, and only the target may name
decided · 2026-08-25 · the answer to "how far does a fact travel", asked before the campaign
Transcript::symbols() returned existence facts
ungraded, on stated reasoning:
Existence is a property of the platform's interface rather than of the silicon, and a name that resolves on a stand-in is still spelled correctly.
The first clause is true. The second does not follow, and D242 is what makes the gap matter.
Where does a stand-in's symbol table come from?
Mined name lists - the same lists D242 refuses to import. So asking
shadPS4 or fpPS4 whether sceKernelSomething resolves is
asking a mined list, and a present coming back is that list
speaking. Ungraded, it would have been recorded as a probe
measurement: the strongest provenance this project has, awarded
to the one source the naming rule exists to exclude.
That is not a hypothetical channel. resolve is a by-name
query, the probe runs on four loaders of which three are emulators, and
the reader had just been taught to consume it (D245). The laundering
path was complete and would have been used first on the targets that are
easiest to reach.
The answer to how far a fact travels
The grading input was already in the transcript and needed no new
field. Origin::is_target asks whether the silicon was
the thing being emulated - deliberately not "was it
real hardware", because a Steam Deck is real and is not it. The
behaviour grading already demotes Hardware to
Assumed under it. Existence now takes the same path:
| where it ran | existence fact | may source a name |
|---|---|---|
| the console | Measured |
yes |
| a Deck, a stand-in, an emulator | Assumed |
no |
| unasserted | Assumed |
no |
So the answer to the open question from D245 - should
resolve carry availability? - is that it is
not load-bearing and this project should not block on
it. Availability says how a symbol is reached; admissibility
turns on what the run was, which the transcript already knows per
session. Carrying it would be a useful detail. Waiting for it would be
waiting for something that was never the deciding input.
What a stand-in is still worth
Not nothing, and the demotion is not a dismissal. A stand-in run exercises the reader, proves the verb works, and compares implementations - which is the whole point of running obSCEne under orbistoun. It simply cannot mint a name.
SymbolFact::may_source_a_name() answers it in one place
rather than at each call site, because the alternative is two
implementations of one rule, and this project has now spent a day on
what that costs (D239).