A refusal is a result
Ai-Inspect's measurement engines follow one rule: a value that cannot be proven on the scan is not reported. A hole without enough scan surface, a datum plane whose fit is contaminated, a nominal that contradicts the geometry found, a distance whose reading is not stable in this coordinate system — each becomes an N/A row with a concrete reason. On a real part a program run therefore ends with a list of such rows, and the question is what happens next.
The Measurement Copilot is the screen that answers it. It is built from the run report: one row per balloon with status and the engine's reason, the datums it depends on, the candidates it could be measured on, and what blocks it. Nothing on the screen is a guess; everything comes from the objects the run produced.
Five phases, one primary action each
The Copilot is a linear stepper: summary → datums → gaps → FAIL review → finish. The phase is derived from the state, not from a wizard counter — fix a datum and the gaps phase changes with it. Each phase has one primary button: confirm the datum, pick the element, re-measure, confirm the FAIL, finish. Items can be skipped with a reason, and a skipped datum no longer blocks the finish; it is recorded as skipped.
Finishing produces the report and saves the extended program: everything the operator did through the Copilot — picks, confirmations, re-measurements — was recorded as program steps, so the next part starts with a program that already knows these answers.
- Summary: measured / refused / open, grouped by root cause
- Datums: a closed set of candidate faces per letter; the operator picks one
- Gaps: open balloons as tasks, candidates highlighted on the model
- FAIL review: confirm or re-measure every out-of-tolerance row
- Finish: report, extended program, counts
What the Copilot never does
It never measures. Every retry goes through the same MacroPlayer and the same engines as the original run, with the same gates; a retry that fails again fails with the engine's reason. It never confirms a candidate for the operator: a "confirm the candidate" step from the Drawing Inspector — a balloon linked to the model by value only — waits for a human click, and the AI tool that drives the Copilot has no path around that wait. It never proposes outside the closed set, and a datum that the engine rejects on the scan is not written anywhere.
When the AI assistant is involved it works through the same tool set with the same autonomy classes: reading and explaining is free, guarded actions pause the agent until the operator acts, and destructive ones require approval. The explanation under each phase is deterministic text first; a single model question per phase may refine it, and the deterministic text stays when the model is unavailable.
Material-condition bonus the same way
The same principle applies inside a single row. A position tolerance at MMC gets its bonus from the measured size and the hole / shaft side of the feature; that side is read from the CAD, and a callout that contradicts the CAD does not get a guessed side — the bonus is refused by name and the zone is judged as RFS. The judged tolerance (zone + bonus) is computed in one place and every consumer reads it: the table, the PDF, CSV, Excel, PAS, duplicates and replay show 0.080 (+0.050 Ⓜ) and the same verdict.
Why this is the fast path
An inspector's time goes into the rows that need judgement. A program that reports every balloon, right or wrong, hides those rows in a table; a program that refuses what it cannot prove hands them over as a short list with the reason and the candidates already on the model. On a ballooned customer drawing with a real scan the finish is two clicks after the last open item, and the recorded program replays those decisions on the next part.