The analysis that writes a Space Document is generative: it can name an object the photo it cites does not show (a cupboard read as a fridge, an object from the narration placed over a frame of the hall). So after it, every item, issue and key location is checked again, by a second model that cannot write text: a closed question about the record, asked on the frames the record cites, answered with a probability. The same frame always gets the same answer.
In the document
"verification": { "status": "verified", "probability": 0.97, "frame_id": "frame-12" }status | Meaning | What an agent should do |
|---|---|---|
verified | One of the frames it cites clearly shows it (probability 0.7 or more) | Rely on it; its first evidence frame is the one that shows it best |
unconfirmed | Its frames were checked and none clearly shows it | Say it is uncertain; never state it as fact |
not_visual | Nothing a photo could confirm: it cites no frame (it comes from the narration), or it is a fault or an absence | Say where it comes from when it matters |
probabilityis the best over its frames (nullfornot_visual);frame_idis the frame that showed it best, moved first in the record’sevidence, so the photo shown first is the right one.- Up to four of the frames a record cites are asked; a frame it does not cite is never asked, and never added to it.
verificationisnullwhere it was not computed: the base level of a space, documents made before the check existed, or a check that could not run. The check never makes a scan fail.- It is numbers only, so keys without
spaces:sensitivesee it too; a record withheld from them stays withheld. - The demo space (
spc_demo, read with test keys) carries it too, computed on its published frames: at check-in 34 records verified and 4 unconfirmed, at check-out 41 verified, 1 unconfirmed and 2 not visual. A test key shows exactly what a live document looks like.
What is asked
| Record | Question |
|---|---|
| Item | ”The image shows a generic name (described as “name”), even if only partly or in the background.” |
| Issue | ”The image shows title (category), even if only partly.” Faults and absences (malfunction, missing) are not_visual, never asked. |
| Key location | The definition of its kind used by the frame check (“The image clearly shows an electrical panel, fuse box…”). |
How accurate it is
Measured on 2026-10-13 on the real check-out of the demo space (38 items, 4 issues, 36 frames):
- items: 38 of 38 verified on one of the frames they cite, and 0 false confirmations out of 227 room-specific items (toilet, bed, fridge, sofa…) asked on frames of other rooms. Asking “clearly shows name” instead verified 33 of 38 (2 of 227 false); asking the generic name alone verified 38 of 38 but confirmed 16 of 227 falsely;
- asking only the first frame a record cites missed 13 of 38: some of those were real citation mistakes of the analysis (a toilet cited on a frame that does not show it), which taking the best of its frames corrects;
- issues: 3 of 4 verified at 0.95–0.96; the fourth, written as a possibility (“Possible shower-frame darkening”), got 0.59 and stays
unconfirmed, the honest answer; - key locations: the definitions of the frame check, precision 1.00 at 0.7 except safety equipment (0.89); “connections” (behind an appliance) is not measured yet (measures of 2026-10-06 and 2026-10-13).
Where it shows
- API:
verificationonitems,issuesandkey_locationsof every Space Document; a scan showsstage: verifying(“Verifying the evidence” in the SDK, CLI and MCP) for the few seconds it takes. - Markdown and Skill: a “Photo check” line on every record and a summary (“31 of 36 records verified on photo…”); the Skill tells the agent how to read it.
- Search and ask: each record’s text says its photo check, and
asksays when an answer rests on an unconfirmed record. - SDK:
summarizeVerification(document)counts verified, unconfirmed, not visual and unchecked records. - CLI:
spacecontext spaceandspacecontext scanprint “Evidence: 31 of 36 records verified on their photo · 3 unconfirmed · 2 not visual (from the narration, or a fault)”, and mark unconfirmed issues and key locations (“(unconfirmed on its photo)”). - MCP:
get_spacegives each record’sverificationand anevidence_checkcount (verified,unconfirmed,not_visual, andnot_checkedwhen some records were not checked); the server tells the assistant to prefer verified records and hedge unconfirmed ones, andask_space’s answer is asked to hedge on them.