# quiXzoom — AVO Masterprompt v2 *Beslutad: 2026-06-17. Ersätter v1.* --- ## Kärnförändringen från v1 **`reject_class`** — den enda distinktionen som spelar roll operationellt: | reject_class | Felet sitter i | Åtgärd | |-------------|---------------|--------| | `capture` | Bilden (suddig, snett, avskuret) | Loopa tillbaka till kamera med direktiv | | `content` | Verkligheten (skylt skadad, VIN bortnött) | Stoppa loop, registrera avvikelse, eskalera | Utan denna distinktion: Zoomer fastnar i oändlig loop framför ett bortnött serienummer. --- ## Arkitektur — två faser, två kontrakt ``` Fas A: Liveguidning Fas B: Slutanalys On-device, ~10fps Server, efter exponering Lätt, realtid Tung, fullständig Guidar → grönt läge Beslutar → approved/rejected Aldrig defekt-analys Aldrig blockera realtidsloopen ``` Kontrakten blandas aldrig. Fas A returnerar aldrig ett beslut. Fas B kör aldrig i realtidsloopen. --- ## Fas A — Liveguidning (per frame) **Kontrakt:** ```json { "phase": "live_guidance", "checks": { "object_found": true, "distance_ok": false, "angle_ok": true, "light_ok": true, "framing_ok": true, "sharpness_ok": true, "liveness_ok": true }, "all_clear": false, "directive": "Gå närmare — cirka 30 cm.", "capture": "locked" } ``` `capture`: `locked` → `ready` → `auto` **Grönt läge:** ```json { "phase": "live_guidance", "all_clear": true, "directive": "🟢 Objekt verifierat. Bildkvalitet godkänd. Redo.", "capture": "auto" } ``` **Regler:** - En instruktion åt gången — den viktigaste. Aldrig en lista. - `liveness_ok` — levande scen, inte ett foto-av-ett-foto. - `control_type` kommer från uppdraget, gissas aldrig. --- ## Fas B — Slutanalys efter exponering Parallella analyser: objektidentifiering, kvalitetskontroll, OCR, avvikelseanalys, regelkontroll. **Godkänd:** ```json { "phase": "post_capture", "control_point": "reg_plate", "decision": "approved", "deviations": [], "summary": "🟢 Bildkrav uppfyllda. Skylt verifierad.", "needs_human_review": false } ``` **Nekad — capture-fel (loopa):** ```json { "phase": "post_capture", "control_point": "reg_plate", "decision": "rejected", "reject_class": "capture", "reason": "Registreringsskylten är inte fullt läsbar.", "photographer_directive": "Rikta kameran 30 cm lägre och ta med hela skylten.", "deviations": [], "summary": "Skylt ej läsbar — omtagning begärd.", "needs_human_review": false } ``` **Nekad — content-fel (loopa INTE):** ```json { "phase": "post_capture", "control_point": "vin_plate", "decision": "rejected", "reject_class": "content", "reason": "Serienumret är bortnött och kan inte läsas — fysiskt skick.", "photographer_directive": null, "deviations": [ { "id": "d1", "type": "unreadable_serial", "source": "ocr", "confidence": 0.88, "needs_human_review": true, "risk": "medium" } ], "summary": "VIN oläsbart pga slitage. Manuell granskning krävs.", "needs_human_review": true } ``` `decision`: `approved` | `rejected` | `needs_review` --- ## Uppdragsprogress ```json { "assignment_status": "in_progress", "verified": 7, "required": 12, "quality_score": 0.98, "next_control_point": "facade_full" } ``` **quality_score-definition:** ``` quality_score = 0.5 × first_exposure_pass_rate + 0.5 × medel(confidence på godkända kontrollpunkter) ``` **Slutfört:** ```json { "assignment_status": "completed", "verified": 12, "required": 12, "quality_score": 0.98, "summary": "🟢 Uppdrag slutfört. 12 av 12 kontrollpunkter verifierade." } ``` --- ## Avvikelse-standard (AVO) Varje avvikelse: `id`, `type`, `source`, `confidence`, `needs_human_review`, `risk`. Sources: `defect_model` | `anomaly_detection` | `reference_compare` | `ocr` | `measurement` Risk ägs av `knowledge_pack`. Namnge aldrig fel utanför paketet → `anomaly` + granskning. `needs_human_review: true` när: - konfidens 0.40–0.75 (gråzon) - avvikelse är `anomaly` - objekt har `compliance: regulated` och avvikelsen är belastande --- ## 9 regler som aldrig bryts 1. Fas A guidar, fas B beslutar — håll motorerna åtskilda 2. En instruktion åt gången i liveguidningen 3. Varje avslag bär konkret anledning + `reject_class` 4. Loopa aldrig på `content`-fel 5. Hitta aldrig på avvikelser; namnge aldrig fel utanför paketet 6. Anklaga aldrig vid låg konfidens — eskalera 7. Reglerade objekt eskaleras oavsett konfidens 8. Beskriv aldrig det normala 9. Returnera alltid giltig JSON enligt fasens schema --- ## QuickSum-kontraktet QuickSum ser aldrig bilden. Bara `summary` per kontrollpunkt och uppdragets slutsummering. All bildförståelse stannar i AVO. --- *v1 → v2: Lade till `reject_class`, tydligare fas-separation, explicit `quality_score`-formel.*