← all model tests
Scoperpass

catalogue figure may be looked up

A published manufacturer figure is the one case where a bound does not have to come from the shop. per_spec exists so the Scoper stops asking questions the machine's own manual answers. THE MACHINE HERE IS DELIBERATELY NOT THE XYBER, and that is the whole point of the pairing: `interview-home-brake-pads-blocked-on-a-figure-nobody-has` is the same shop, the same question and the same agent reaching the opposite conclusion, because Segway has published no caliper bolt torque for the Xyber and Honda has published one for the CB500X. One shop, two machines, one figure that exists and one that does not. A corpus where the catalogue answers for the Xyber would be asserting a Segway figure nobody has ever published, which is precisely the failure this product is built to refuse.

The answer conformed to the contract and every assertion held.

modelgemini-3.5-flash
temperature0
scenarioscenarios/scoper/catalogue-figure-may-be-looked-up.json
cassette23e405ce30862278…
latency0.0s
tokens4,187
What the model was given
System instructionassembled from the contract schema, not hand-written
You are interviewing a shop about a job they already do, until the procedure is unambiguous enough that two different technicians working alone would produce the same record. Ask about ONE thing per turn, in their language, never in the vocabulary of forms. Compile only when nothing material is still unstated: every step has a reason someone would accept, every field has an acceptance rule that can actually be applied to what comes back, and a bound that came from the shop rather than from you. Inventing a tolerance is the one thing you must never do — a figure nobody stated must not appear in what you compile. A shop that does not know one will not know it when asked again: take the first 'I don't know' as final, keep it in unresolved if it matters, and move on. Your turns are few. Spend them on the figures that decide whether the job passed, never on detail beneath them.

Return JSON with these fields:
- mode (one of ask | compile, required): ask while anything material is unstated. compile once the procedure would run unambiguously.
- question (string, null when it does not apply): Required when mode is ask. One question about one thing, phrased for a mechanic, not a form designer. Never a list, never a preamble, never a restatement of what they just told you, and never one they have already said they cannot answer.
- asks_about (one of scope | sequence | tolerance | evidence | failure | authority | parts | safety, null when it does not apply): Which class of unknown this question closes. Required when mode is ask.
- unresolved (array, required): Everything you still do not know that would change the compiled procedure. Complete every turn, not only what you just asked about. Empty is the only condition under which you may compile.
- understanding (string, required): What you now believe the job is, in two sentences. Written every turn so the shop can correct you early rather than at the end.
- draft (object, null when it does not apply): Required when mode is compile. The procedure as it would run tomorrow.
## The shop
{
  "trade": "motorcycle rental and workshop",
  "machines they work on": "12 Segway Xyber, 3 Segway Xafari, 1 Honda CB500X",
  "how many technicians": 2,
  "what is at stake if a job is done badly": "the bikes are rented to tourists who ride them on gravel passes; a brake failure is a fatality and an insurance claim"
}

## Figures you may look up rather than ask for
{
  "Honda CB500X 2021 front caliper mounting bolt": "30 Nm \u00b1 3, Honda service manual 2021",
  "Honda CB500X 2021 front pad minimum thickness": "1.0 mm, Honda service manual 2021"
}

## The conversation so far
shop: Front brake service on the CB500X.
scoper: What torque do the caliper bolts go to?
shop: Whatever Honda says, we go by the book on that one.

## Your turn
{
  "turns used": 3,
  "note": "If the last thing they said was vague, do not accept it and move on. Vague now is a procedure that two technicians run differently forever."
}
What came backStructured output, not prose that was parsed afterwards: the contract schema is posted as the response schema, so the model returns this shape or fails.
{
  "mode": "ask",
  "question": "Since these bikes go out to tourists on gravel passes, do you run the brake pads all the way down to Honda's 1.0 mm limit, or do you swap them out sooner?",
  "asks_about": "tolerance",
  "unresolved": [
    "Brake pad wear limit used by the shop",
    "How caliper bolt torque is verified and recorded",
    "Whether brake fluid is checked and what its limits are",
    "Whether rotor thickness is measured and its limit"
  ],
  "understanding": "We are establishing the safety-critical steps for the Honda CB500X front brake service to ensure rental safety. We know the caliper bolts must be torqued to Honda's spec of 30 Nm.",
  "draft": null
}
What this scenario asserted

Assertions pin the part of an answer that decides something, never the whole object — exact-matching a rationale would fail the first time it was reworded, and a suite that cries wolf is abandoned inside a day. Where the reasoning is checked at all, it is to catch an agent that reached the right verdict for no reason.

assertedaboutwhat happened
okmentions_nonequestionnone present
okmin_wordsunderstanding31 words, want >= 8