A probe cannot certify its own machine, and the grading was resting on it

obSCEne's network handover (docs/HANDOVER-ORBISTOUN-NET.md) corrected the most important assumption in orbistoun-probe, and it was mine.

Machine identity is asserted by the operator, never self-reported. Running inside an emulator, obSCEne's call to the platform's version query returns the emulator's chosen version - so a probe stamping that as firmware= would be putting an emulator's answer in a console's badge. It would look exactly like a measurement of real hardware, which is the one confusion this project's whole grading vocabulary exists to catch.

My grading read parts["target"] == "console" straight off the wire and believed it.

What changed

Origin is now a separate type carrying what the operator asserts - device, firmware, and one load-bearing boolean, real_hardware. Grading turns on that boolean and on nothing the session said. Session::is_target() is gone; Session::claimed_target() replaces it and is documented as a claim rather than evidence, kept because a claim that disagrees with the operator is worth seeing.

Origin::unasserted() is the default and grades nothing above an assumption. A client that forgets to ask produces a corpus of assumptions, which is recoverable; a corpus of measurements that were never measured is not.

orbistoun probe gained --device, --firmware and --real-hardware. The same transcript, claiming target|console throughout:

(no flags)         results   0 of 2 are facts
--real-hardware    results   2 of 2 are facts, measured 2
--device shadPS4   known_by = "assumed", "the operator did not assert real target
                   hardware for shadPS4"

Surprises

The correction invalidated a refusal I was pleased with. --as-knowledge used to refuse on a report because a report has no session to grade from. With grading moved to the operator that reasoning evaporated - a report plus an assertion is perfectly gradeable - so the refusal came out. A guard built on the wrong foundation looked exactly like a careful one.

Only three verbs are implemented today. hello, report and bye. resolve, call, read, write, blob/run and reset are in the grammar and refused - which explains, rather than merely confirms, why no call records exist anywhere. The earlier decision to leave those record kinds unparsed was right for a better reason than the one given.

The handover's checklist is a list of things already built. TCP client aside, every item