# Systeemacceptatiecriteria ## A. Gebruik met minimale handelingen - **AC-001** Een nieuwe installatie kan met één bootstrapcommando lokaal starten. - **AC-002** Na onboarding kan de gebruiker zonder bronhandwerk het dashboard en de digest gebruiken. - **AC-003** De normale vacatureactie vereist maximaal één klik plus optionele reden/notitie. - **AC-004** Geen standaardflow vraagt een platformwachtwoord. ## B. Verzameling - **AC-010** Dezelfde fixture tweemaal verwerken creëert één canonieke vacature en één bronalias per identieke bronidentiteit. - **AC-011** Een private/loopback/link-local URL, embedded credential of niet-standaardpoort wordt geblokkeerd. - **AC-012** Een redirect naar een denylist- of niet-publiek doel wordt geblokkeerd vóór de tweede request. - **AC-013** Een niet-toegestaan contenttype en te groot document worden afgewezen. - **AC-014** Een Message-ID tweemaal importeren creëert één e-mailrecord. - **AC-015** JSON-LD, generieke HTML, RSS en e-mailfixtures leveren geldige `ExtractionResult`-objecten. ## C. Data en matching - **AC-020** `m/v/x`, whitespace, contracttypes en datums worden canoniek genormaliseerd. - **AC-021** Exacte ID/URL/key wint van fuzzy matching. - **AC-022** Een uitgesloten titel, regio, contractvorm, afstand of verplichte skill levert recommendation `hidden` met reden. - **AC-023** Een niet-uitgesloten vacature bewaart alle scorecomponenten en evidence. - **AC-024** Ontbrekende afstand levert een concern/confidence-effect maar geen verzonnen kilometerwaarde. - **AC-025** AI-uitval verandert de deterministische kern niet. ## D. Meldingen en lifecycle - **AC-030** Een digestvenster maakt maximaal één outboxrecord per profiel/dag. - **AC-031** Een verborgen vacature verschijnt niet in de digest. - **AC-032** Een verzonden outbox wordt bij herhaling niet opnieuw verstuurd. - **AC-033** `valid_through` in het verleden markeert een actieve vacature verlopen. - **AC-034** Lang niet geziene vacatures gaan eerst naar onzeker en daarna verwijderd. ## E. Sollicitaties - **AC-040** Feedback `applied` creëert één user/job-dossier met snapshot en opvolgdatum. - **AC-041** Een bestaande voorbereiding wordt bij `applied` bijgewerkt zonder duplicaatdossier. - **AC-042** Een gebruiker kan geen dossier van een andere gebruiker openen of wijzigen. - **AC-043** Er bestaat geen endpoint of task die een sollicitatie extern verstuurt. ## F. Beheer en kwaliteit - **AC-050** `/health/live/` antwoordt zonder databaseafhankelijkheid; `/health/ready/` controleert databaseconnectiviteit. - **AC-051** `./scripts/codex_verify.sh` slaagt op een schone checkout na bootstrap. - **AC-052** De standaardtestset doet geen live internetrequests. - **AC-053** Codedekking blijft minimaal 70% en securitykritieke services hebben negatieve tests. - **AC-054** `BACKLOG.yaml` is valide, uniek en dependency-consistent. - **AC-055** Back-up/restorecommando's weigeren onveilige of ontbrekende configuratie met duidelijke fout.