Files
VacatureRadar/docs/quality/DEFINITION_OF_DONE.md
Jens b8091e59bd
deploy / deploy (push) Canceled after 0s
Initial deploy setup
2026-07-21 14:00:00 +02:00

3.9 KiB

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:

./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.