a procedure anyone can run at home, containing no stored figure at all
The cleanest demonstration of the whole idea, and the easiest for a stranger to try. The correct pressure is printed on the side of the tyre, so a good procedure does not carry a number — it carries an instruction to read one off the machine and an acceptance rule that resolves against it. If the Scoper writes a bound like 40 psi here it has invented a figure for a tyre it has never seen, and every rider following it over-inflates something.
The answer conformed to the contract and every assertion held.
Inventing a tolerance is the one thing the Scoper must never do. A fabricated bound enters every future record indistinguishable from a figure a person set, and nobody downstream can tell which is which. So each bound in the compiled procedure is compared against the numbers the shop actually said aloud.
figures the shop disclosed
bounds in the compiled procedure
Every bound traces to a figure the shop stated. Nothing was invented.
{
"key": "pre-ride-tyre-check",
"title": "Pre-Ride Tyre Pressure and Condition Check",
"strictness": 1,
"minimum_tier": "attested",
"disqualifiers": [
"Any visible crack in the tyre rubber",
"Any split in the tyre sidewall"
],
"releases": [
"Riding the bike safely in traffic and on gravel"
],
"steps": [
{
"title": "Inspect Tyre Condition",
"explanation": "A cracked tyre or split sidewall can fail catastrophically at speed, risking serious injury in traffic.",
"condition": null,
"max_add_fields": 2,
"required_at_strictness": 0,
"fields": [
{
"key": "tyre_integrity",
"kind": "choice",
"prompt": "Inspect both tyres. Are there any cracks in the rubber or splits in the sidewalls?",
"source": "human",
"required_at_strictness": 1,
"choices": [
"No cracks or splits found",
"Cracks or splits detected - TYRE IS TRASH"
],
"acceptance_rule": "matches",
"acceptance_min": null,
"acceptance_max": null,
"acceptance_unit": null,
"acceptance_target": "No cracks or splits found",
"acceptance_description": "The tyres must be completely free of cracks and splits to be safe for riding.",
"guidance": "Inspect the entire circumference of both tyres. Any split or crack means the tyre must be replaced before riding."
}
]
},
{
"title": "Inflate Tyres to Max Pressure",
"explanation": "Pumping tyres to the maximum pressure printed on the sidewall ensures optimal performance and prevents pinch flats on gravel.",
"condition": null,
"max_add_fields": 2,
"required_at_strictness": 0,
"fields": [
{
"key": "front_tyre_pressure_photo",
"kind": "photo",
"prompt": "Take a photo showing the pressure gauge needle aligned with the max pressure limit printed on the front tyre sidewall.",
"source": "camera",
"required_at_strictness": 1,
"acceptance_rule": "must_show",
"acceptance_min": null,
"acceptance_max": null,
"acceptance_unit": null,
"acceptance_target": null,
"acceptance_description": "The photo must clearly show both the gauge reading and the max pressure text on the tyre sidewall to confirm they match.",
"guidance": "Align the pump gauge next to the tyre sidewall markings so both are clearly legible in a single photo."
},
{
"key": "rear_tyre_pressure_photo",
"kind": "photo",
"prompt": "Take a photo showing the pressure gauge needle aligned with the max pressure limit printed on the rear tyre sidewall.",
"source": "camera",
"required_at_strictness": 1,
"acceptance_rule": "must_show",
"acceptance_min": null,
"acceptance_max": null,
"acceptance_unit": null,
"acceptance_target": null,
"acceptance_description": "The photo must clearly show both the gauge reading and the max pressure text on the tyre sidewall to confirm they match.",
"guidance": "Align the pump gauge next to the tyre sidewall markings so both are clearly legible in a single photo."
}
]
}
]
}The prompt behind the last turnthe whole conversation is re-laid in front of the model every turn
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": "one person looking after their own ride at home, no workshop",
"machines they work on": "a Segway Xyber e-bike, plus a couple of ordinary bicycles",
"how many technicians": 1,
"what is at stake if a job is done badly": "it gets ridden in city traffic and on gravel; a brake or a tyre letting go at speed puts the rider under a car"
}
## The conversation so far
scoper: What is the main maintenance job on your Segway Xyber or bicycles that you want to make sure is done perfectly every time to keep you safe in traffic?
shop: I make sure to check and pump up both tyres before every single ride. If a tyre lets go at speed on gravel or in city traffic, it'll put me right under a car.
scoper: What pressure do you pump your tyres to before a ride?
shop: I always check the sidewall of the tyre I'm working on and pump it right up to the max pressure printed on it. Every tyre is different, so I just read what's right in front of me.
scoper: What tool do you use to measure the tyre pressure, and how do you confirm it has reached the exact number printed on the sidewall?
shop: I use a pump with a gauge on it, or a separate pressure gauge if the pump hasn't got one. I confirm it by taking a photo of the gauge reading and the sidewall showing the number I was aiming for.
scoper: When you're checking the tyres, what kind of damage or wear—like bulges, deep cuts, or cords showing—means the tyre is a goner and you won't ride the bike at all?
shop: If the tyre is cracked or the sidewall is split, I won't even pump it up because it's trash and needs replacing. I don't have a list for bulges or cords, but any split means the bike stays on the ground.
scoper: Before you start inspecting and pumping the tyres, do you have to turn off the e-bike's power or secure it on a stand to keep it from moving?
shop: There's nothing in my routine about turning off the power or using a stand. I just get down and check the rubber where the bike is parked.
scoper: When you're pumping the tyre up to the max pressure shown on the sidewall, how close to that exact number does the gauge have to be for you to call it good?
shop: I don't have a strict tolerance number for that, I just go by feel and try to get the needle right on the line.
scoper: Do you always check and pump the front tyre first, or does the order not matter?
shop: I don't have a set order for which wheel to start with, I just go by feel and make sure both front and back get done before a ride.
scoper: Since you are the only one riding and working on the bike, are you the only person who decides if the tyres are safe, or is there any official sign-off or log you have to keep?
shop: It's just me signing off on the job, no official paperwork. I just snap a photo of the gauge reading and the sidewall to show what I was aiming for, and that's all the record I need.
## Your turn
{
"turns used": 16,
"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 you have not yet asked
Asked about so far: authority, evidence, failure, safety, scope, sequence, tolerance.
Never asked about: parts.
Turns left before this interview ends: 4.
Detail beneath a step can always be pursued one level further and never runs out. A tolerance is asked once or never, and a procedure with no figure in it cannot decide anything. While tolerance or failure is still untouched, that is the next question.
The shop has been unable to answer 4 of your questions. They are not being evasive; they do not hold these. Another wording of the same question, or a question one level beneath it, will not produce them.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.
| asserted | about | what happened | |
|---|---|---|---|
| ok | is_true | compiled | is True |
| ok | is_true | traceable | is True |
| ok | absent | invented_bounds | is [] |
| ok | len_gte | draft.steps | length 2, want >= 2 |
| ok | mentions_any | draft | found ['sidewall', 'printed', 'max pressure'] |
| ok | mentions_any | draft.disqualifiers | found ['crack', 'split', 'sidewall'] |