# Foutanalyse — Drie productiefouten 24 augustus 2026 **Geval**: 2026-audit-koole-chromium-vi (compliance audit 003.056 Chromium VI Exposure Control Procedure, Wintershall/Koole) **Analysemethode**: 5-Why + fysiek forensisch bewijs (bestandsmetadata, logs, MASTER_SOP v8.8) **Datum analyse**: 24-08-2026, 21:30 UTC --- ## Misser 1 — SOP-skip bij start (20:07 UTC) ### Wat gebeurde er Om 20:07 werd de hseq_specialist direct gespawnd voor de audit-analyse, zonder dat Fase 0 (scoping, Plan van Aanpak, GO-moment) en Fase 1 (projectinitialisatie, prompt-logging, bronverzameling) waren doorlopen. ### Fysiek bewijs | Bewijs | Waarneming | Conclusie | |--------|-----------|-----------| | `project_prompts.log` | Gedateerd **20:38:16 UTC** | Prompt-log 31 minuten ná hseq_specialist-start → retroactief | | Projectmap-mtimes | Mappen grotendeels 20:38–21:23 | Structuur pas ná start van de uitvoering opgebouwd | | `working/task_hseq_audit.md` | Bestaande taakbeschrijving zonder Fase 0-1 referentie | Taak omzeilde de workflow-gates | | `research/`-inhoud | Pas 21:23 aangevuld | Bronverzameling liep parallel áchteraf i.p.v. vóór executie | ### 5-Why 1. **Waarom startte de specialist zonder Fase 0-1?** De audit-aanvraag werd als "helder en urgent" ingeschat; de director-route leek sneller. 2. **Waarom leek dat sneller/geoorloofd?** Er is géén hard mechanisme dat een spawn blokkeert zonder geïnitialiseerde projectmap. 3. **Waarom bestaat dat mechanisme niet?** MASTER_SOP beschrijft Fase 0-1 als procedure (§3) maar kent geen afdwingbare pre-spawn check. 4. **Waarom is procedure alleen?** Alle quality gates (§5) zitten ná productie; er is geen Gate vóór executie. 5. **Root cause**: **De SOP is advisory vóór Fase 2 en enforcement-only ná Fase 3. Er ontbreekt een mechanische Phase-Entry Gate tussen planning en executie.** ### Gevolgen - Geen expliciet GO-moment → audit-scope niet gevalideerd door Director vóór uren productie - Prompt-log ("Legal Source", §1.13) bestond niet tijdens de uitvoering → herleidbaarheid aangetast - Bronverzameling liep achter de feiten aan → risico op feitelijke gaten in de audit - Map-Reduce check (§3 Fase 1) kon niet correct draaien (geen /research/ op tijdstip-van-check) --- ## Misser 2 — qa_engineer zonder fysiek bestand (21:03 UTC) ### Wat gebeurde er De qa_engineer-subagent voerde 12 tool calls uit maar produceerde geen fysiek QC-bestand. Kaslost het op door zelf een nood-QC te schrijven (`working/qa_report.md`). ### Fysiek bewijs | Bewijs | Waarneming | Conclusie | |--------|-----------|-----------| | `working/qa_report.md` | Header: *"QA Engineer: Kas (Director) — Nood-QC na qa_engineer falen"* | Director nam QC over | | Zelfde rapport | 8 van 20 checklist-items = "⚠️ Onbekend / Onmogelijk te verifiëren zonder full DOCX inspectie" | Nood-QC was bovendien oppervlakkig | | Deliverables-mtimes | DOCX's 21:16, ná qa_report | QC vóór definitieve oplevering, op tussenversies | ### Dubbele fout 1. **De primaire fout**: qa_engineer kreeg geen expliciete fysieke output-eis (pad + bestandsnaam + formaat) in de taakbeschrijving, en er was geen post-run verificatie dat het bestand er daadwerkelijk staat. 2. **De secundaire fout (zwaarder)**: Kas' noodoplossing schond **§5.4 ANTI-CORRUPTIE REGEL**: *"De Director (Kas) mag NOOIT de rol van de QC Auditor overnemen. Een audit uitgevoerd door de Director is per definitie ongeldig (VOID)."* Het protocol schrijft voor: spawn een NIEUWE QC Auditor sub-agent. De correcte route stond letterlijk in de SOP naast de verbodsclausule — de noodoplossing koos de verboden route. ### 5-Why 1. **Waarom geen fysiek bestand?** De QC-taak vroeg om een "rapport" zonder pad-, naam- en formaateis. 2. **Waarom viel dat niet direct op?** Geen automatische post-spawn output-check (`test -f`). 3. **Waarom nam Kas het over?** Tijdsdruk (deadline) + afwezigheid van een standaard recovery-recept voor "subagent zonder output". 4. **Waarom bestaat dat recept niet?** §1.3 Timeout Recovery dekt timeouts/crashes, maar niet de faalmodus "subagent eindigt 'succesvol' zonder fysiek artefact". 5. **Root cause**: **Twee lacunes: (a) QC-taken definiëren fysieke output niet als harde eis; (b) er is geen gecodeerd recovery-pad voor "run zonder artefact" dat de Director weglokt naar de verboden zelf-reparatie.** ### Gevolgen - Formeel VOID QC-rapport op een geleverd compliance-document (P1-kritieke bevindingen!) - 40% van de checklist onbeantwoord ("Onbekend") terwijl status "✅ GO" luidt → intern tegenstrijdig rapport - Precedent-gevaar: nood-QC door Director wordt normaliserend gedrag bij elke subagent-faalmodus --- ## Misser 3 — Gecombineerde i.p.v. gescheiden deliverables (20:41–21:13 UTC) ### Wat gebeurde er De eerste Chromium VI-oplossing leverde één gecombineerd DOCX/HTML-paar: `003.056_CrVI_Compliance_Audit_en_Herzieningsvoorstel_v1.0.docx` (audit + herzieningsvoorstel in één document), plus één gecombineerd checklists-DOCX. Mercury-levert per documenttype een apart bestand. ### Fysiek bewijs (huidige staat, 21:28 UTC) ``` deliverables/ ├── audit_rapport_003.056_CrVI_v1.0.md ✅ apart (na correctie) ├── herzieningsvoorstel_003.056_CrVI_v1.0.md ✅ apart (na correctie) ├── CHANGELOG.md ⚠️ beschrijft NOG de combined v1.0 ├── docx/ │ ├── 003.056_CrVI_..._en_Herzieningsvoorstel_v1.0.docx ⚠️ LEGACY COMBINED │ ├── Compliance_Audit_003.056_CrVI_v1.0.docx ✅ apart │ └── Herzieningsvoorstel_003.056_CrVI_v1.0.docx ✅ apart ├── html/ │ ├── 003.056_CrVI_..._en_Herzieningsvoorstel_v1.0.html ⚠️ LEGACY COMBINED ├── checklists/ │ ├── 003.056_CrVI_Checklists_v1.0.docx ⚠️ LEGACY (afwijkend formaat t.o.v. Mercury .md+.pdf) │ ├── CrVI_Handling_Checklist_v1.0.md ✅ 1:1 Mercury │ └── CrVI_Handling_Checklist_v1.0.pdf ✅ 1:1 Mercury ``` ### 5-Why 1. **Waarom werd er gecombineerd?** De build-scripts (`build_report.py`, `build_checklists.py`) waren geschreven rond één samenhangend rapport; één output was de efficiëntste scriptstructuur. 2. **Waarom werd de Mercury-standaard niet gecheckt?** Er bestaat geen geschreven, machine-leesbare specificatie van de Mercury Golden Standard-structuur. 3. **Waarom alleen in hoofden?** Uniformiteit is impliciete kennis ("zoals vorige keer"), geen expliciet artefact. 4. **Waarom leidde dat tot herstelwerk?** De afwijking werd pas zichtbaar ná productie (bij levering/review), niet vóór. 5. **Root cause**: **De Golden Standard-structuur is niet gecodificeerd als vergelijkbaar contract (manifest/template). Uniformiteit wordt afgedwongen door menselijke herinnering op het moment van levering — te laat in de pipeline.** ### Gevolgen - Dubbele werkvoorraad: correctie + splitsing + wederom QC - Verontreinigde deliverables-map: 3 legacy-bestanden die de opdrachtgever per abuis kan leveren - CHANGELOG leugentje: beschrijft structuur die fysiek deels is vervangen — versiebeheer (§6) onbetrouwbaar --- ## Overkoepelend patroon Alle drie de missers delen één systeemfout: > **Elke kwaliteitsregel in MASTER_SOP v8.8 wordt gehandhaafd ná het feit (checklist, audit, changelog). Er is geen enkele mechanische gate vóór of tijdens productie.** Daardoor is compliance 100% afhankelijk van de discipline van de orchestator op het moment van druk — precies het moment waarop die het laagst is (deadline-avond). | Misser | Fase waar de fout ontstond | Fase waar hij ontdekt werd | Detectie-afstand | |--------|---------------------------|---------------------------|------------------| | 1. SOP-skip | Fase 0-1 | Na klacht/correctie | Hele project | | 2. QC zonder bestand | Fase 3 (QC) | Bij handmatige inspectie | 1 fase | | 3. Combined deliverables | Fase 3 (productie) | Bij levering/review | 1 fase | **Conclusie**: de oplossing is niet méér procedure, maar **vroegere, mechanische detectie**: een gatekeeper-script dat draait op drie momenten — vóór spawn (Phase-Entry), direct na elke subagent-run (Artefact-Check), vóór levering (Golden-Standard diff). Zie `verbeterplan.md` en `implementatie.md`.