an uploaded form is read, and its blanks are still blanks
The adoption path is now a file, not a paste. A shop that hands over the sheet itself has transcribed nothing, so every ambiguity on it is still on it — 'Pads ______ mm' names a unit and no limit, 'Front brake OK' names no acceptance rule at all. Compiling those verbatim reproduces the tick in the box the product exists to replace, and inventing the missing figure is worse: it would enter every future record as though a person had set it.
The answer conformed to the contract and every assertion held.
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": "bicycle hire",
"machines they work on": "40 hybrid bikes, 12 e-bikes",
"how many technicians": 3,
"what is at stake if a job is done badly": "hire bikes on city streets; a wheel coming loose is a serious injury and we have had one near miss"
}
## The conversation so far
shop: I've uploaded the sheet we fill in every morning. Just turn that into the app.
## Your turn
{
"turns used": 1,
"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."
}## The paper form itself The document below is the form this shop fills in today. Compile from it where it is unambiguous and ask about every part of it that is not. A tick box on paper almost never states its own acceptance rule, and a column headed only 'pressure' does not say in what unit or between which figures it passes. Read no bound into it that is not printed on it.
{
"mode": "ask",
"question": "What is the minimum thickness in millimeters you allow for the brake pads before they must be replaced?",
"asks_about": "tolerance",
"unresolved": [
"Minimum acceptable brake pad thickness in millimeters",
"Acceptable tyre pressure range (PSI) for front and rear tyres",
"Maximum chain wear limit in millimeters and how it is measured",
"Minimum battery charge percentage required for e-bikes to go out",
"Specific check or torque required to confirm wheels are secure"
],
"understanding": "This is a daily safety check for hybrid and electric hire bikes to ensure they are roadworthy before rental. Because a loose wheel or brake failure could cause serious injury on city streets, we need clear, measurable limits for the wear items and safety checks."
}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 | equals | mode | is ask, want ask |
| ok | absent | draft | is <absent> |
| ok | len_gte | unresolved | length 5, want >= 2 |
| ok | mentions_any | unresolved | found ['psi', 'pressure', 'wear', 'limit', 'accept'] |
| ok | min_words | understanding | 45 words, want >= 10 |