@@ -0,0 +1,82 @@
|
||||
# Definition of Done
|
||||
|
||||
Een backlogtaak is alleen `done` wanneer alle toepasselijke punten hieronder zijn voldaan. “Code geschreven” of “werkt op mijn machine” is geen afronding.
|
||||
|
||||
## 1. Gedrag
|
||||
|
||||
- De taak voldoet aantoonbaar aan ieder acceptatiecriterium uit `docs/ai/BACKLOG.yaml`.
|
||||
- Succes-, lege-input-, fout- en herhaalpad zijn bewust ontworpen.
|
||||
- Imports, schedulertaken en notificaties zijn idempotent waar at-least-once uitvoering mogelijk is.
|
||||
- De wijziging respecteert de product-nongoals: geen platformloginbot, blokkadeomzeiling of automatische sollicitatie.
|
||||
- Ontbrekende externe services hebben een bruikbare fallback of duidelijke gedegradeerde toestand.
|
||||
|
||||
## 2. Architectuur
|
||||
|
||||
- Bedrijfslogica staat in een domeinservice; views/tasks blijven dun.
|
||||
- Adapters schrijven niet naar de database.
|
||||
- Modellen en querysets blijven user-scoped waar persoonsgegevens of gebruikersacties betrokken zijn.
|
||||
- Een nieuwe dependency heeft een concrete noodzaak, vaste versie, lockfilewijziging en operationele impactdocumentatie.
|
||||
- Een architectuurwijziging die een accepted ADR tegenspreekt krijgt eerst een nieuwe ADR.
|
||||
|
||||
## 3. Beveiliging en privacy
|
||||
|
||||
- Externe data wordt als onbetrouwbaar behandeld, gesanitized en niet als instructie uitgevoerd.
|
||||
- Netwerktoegang passeert policy- en SSRF-controle op iedere redirect.
|
||||
- Geen secret, echt persoonlijk gegeven, volledige mailboxpayload of gevoelige header staat in code, fixture, testoutput of log.
|
||||
- Autorisatie, CSRF en objectscoping zijn getest voor muterende webflows.
|
||||
- Retentie, verwijdering en back-upimpact zijn beoordeeld bij nieuwe opgeslagen data.
|
||||
- `docs/quality/THREAT_MODEL.md` is bijgewerkt voor nieuwe trust boundaries of mitigaties.
|
||||
|
||||
## 4. Datamodel en migraties
|
||||
|
||||
- `makemigrations --check --dry-run` is schoon.
|
||||
- Nieuwe migraties zijn handmatig beoordeeld en hebben een herstel-/rollbackstrategie.
|
||||
- Datamigraties zijn begrensd, herstartbaar of transactioneel waar passend.
|
||||
- Indexen en queryvormen zijn beoordeeld voor de verwachte schaal.
|
||||
- Historiek/provenance blijft behouden bij normalisatie- of dedupewijzigingen.
|
||||
|
||||
## 5. Tests
|
||||
|
||||
- Unit-tests dekken pure regels en randgevallen.
|
||||
- Integratietests dekken database-, pipeline- en idempotentiegedrag.
|
||||
- Securitytests dekken negatieve inputs voor securitykritieke wijzigingen.
|
||||
- Externe formaten hebben gesaneerde fixtures; standaardtests doen geen internetcall.
|
||||
- Bugs krijgen een regressietest die vóór de fix faalt.
|
||||
- Totale branch-aware dekking blijft minstens 70%; securitykritieke services streven naar 90%+ relevante paden.
|
||||
|
||||
## 6. UX en toegankelijkheid
|
||||
|
||||
- UI-copy is begrijpelijk Nederlands en maakt feit/inferentie/onbekend onderscheid.
|
||||
- Kernflow werkt met toetsenbord, zichtbare focus en zonder JavaScript.
|
||||
- Labels, foutmeldingen, headingstructuur en statusmeldingen zijn semantisch correct.
|
||||
- Layout blijft bruikbaar op 360 px breedte en gangbare desktopbreedte.
|
||||
- Reduced motion, contrast en niet-kleurgebonden statussignalen zijn behouden.
|
||||
|
||||
## 7. Documentatie en traceability
|
||||
|
||||
- Publieke/internal contracts, runbooks en configuratievoorbeelden zijn bijgewerkt.
|
||||
- Requirement- en acceptatie-ID's zijn gekoppeld in `TRACEABILITY_MATRIX.md`.
|
||||
- Backlogtaak bevat een korte resultaatnotitie en exacte verificatie.
|
||||
- `PROJECT_STATE.md` noemt de afgeronde taak, impact, gate-uitkomst en volgende taak.
|
||||
- Geen document claimt functionaliteit die alleen gepland is.
|
||||
|
||||
## 8. Verificatie
|
||||
|
||||
De volledige gate slaagt vanaf de repositoryroot:
|
||||
|
||||
```bash
|
||||
./scripts/codex_verify.sh
|
||||
```
|
||||
|
||||
Daarbij slagen minimaal:
|
||||
|
||||
- Ruff;
|
||||
- Django system check;
|
||||
- migratiecheck;
|
||||
- volledige testset met dekkingsdrempel;
|
||||
- backlogvalidatie;
|
||||
- documentlink-/configuratievalidatie voor zover in het script opgenomen.
|
||||
|
||||
## 9. Extern geblokkeerd
|
||||
|
||||
Een taak wordt niet `done` wanneer live verificatie noodzakelijk maar onmogelijk is. Het externe restpunt mag `blocked-external` worden nadat interface, mocks, tests, foutafhandeling, configuratie en een exact uitvoerchecklistje zijn afgemaakt. Onafhankelijke taken gaan daarna door.
|
||||
Reference in New Issue
Block a user