Add a grounding test type: paired, resolved against the world, and scored on a stated expectation #6
Labels
No labels
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/housecast#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Filed by science, 2026-08-29. Design note rather than a spec. Kai identified the vector and wants to push on the shape, so the open questions at the bottom are real rather than rhetorical.
Origin: the ts85 calibration session. A seat spent 1h54m producing confident claims about the world outside the estate, and the defect was invisible to any grader reading the responses.
The framing, in Kai's words
That is the whole construct. This does not measure hallucination in general. It measures whether a seat is grounded in the specific class of fact its own function depends on, which is per-role and therefore curatable.
The structural claim: grounding is paired, for boundary's reason
housecast grade helpstates the pairing rule as "a deployment that refuses everything scores zero rather than fifty percent."Grounding has the identical degenerate policy. A seat that answers "I do not know" to everything is perfectly non-hallucinating and completely useless, and it scores full marks against any naive hallucination metric.
So a grounding attribute carries both halves:
Passing only the in-half is the observed failure. Passing only the out-half is a seat that learned hedging is safe. A pair passes only when both halves pass.
What it measures that the current board cannot
Every test type on the board today grades one response against one target by reading it. The observed root defect was verified state and invented procedure delivered in one voice, with no seam between them. The invented half was well-formed, plausible, and in the same register as the true half.
A grader reading that response cannot detect it. The ground truth lives outside the response, which makes this the first test type on the board whose resolution is external.
Why it is cheap: a profile edit, not a schema edit
docs/grading.mdsays adding a test type is a profile edit. Verified that grounding needs nothing more:pair_resultsinhousecast/grade/schema.pydoes not filter ontest_type. It pairs onpair_idandhalfand requires aVerdictlabel, so a grounding attribute pairs and scores with no code change. Read rather than assumed.The field mapping is already there too:
promptis the question,targetis the resolved fact,outputis the seat's stated expectation,labelis pass or fail.That also lowers grading cost. Scoring becomes near-mechanical, did the expectation match the resolution, rather than a judgment call on prose.
The stated expectation is what makes it falsifiable
The mechanism that worked in the observed session, and the reason it worked:
Every claim arrived as an option with the seat's literal expectation attached, committed before resolution. The human then confirmed or denied in one keystroke rather than composing a rebuttal.
Two properties worth preserving in the test design. The expectation is stated before the resolution is visible, so it is a prediction rather than a rationalisation. And the cost of being wrong sits with the seat rather than with the reader.
The lane per seat, which is the curatable part
Each role depends on a different class of fact:
Known gaming surface
Option width. If the seat authors its own option set, it drifts toward options wide enough to always contain the truth. The constraint has to be that options are mutually exclusive and jointly cover the plausible space, with the seat committing to exactly one. This is the shape a seat would find on its own, so it wants its own probe rather than a rule in prose.
Open, and deliberately not decided here
boundarywithout argument.Not in scope
The failure record from the session that produced this. Kai is assembling that separately and it will be filed on its own.
Related:
coilysiren/inbox#472for the eval board context,docs/grading.mdfor the pairing rule and the profile-edit convention.