# served/404-contract

Unknown paths return a real 404 status. Reglen served/404-contract kører i served-scope med severity 'error' og indgår i servering-domænet sammen med 4 andre kontrakter i frameworket.

## Hvorfor 404-contract findes

A host serving 200 for non-existent paths (soft-404) creates an infinite space of indexable duplicate URLs and poisons crawl budget. The status code must be 404 — the page body can still be branded and helpful.

## Sådan håndhæves 404-contract

Reglen 404-contract evalueres mod den kørende server, fordi kravet bor i response headers eller statuskoder, som den statiske HTML ikke kan bære. Fejler en side, får agenten en finding, hvor fix-instruktionen for 404-contract er formuleret som en konkret arbejdsordre med filnavne og målbare krav — aldrig et vagt råd. Severity 'error' betyder at et brud på 404-contract fejler hele verifikationen med exit-kode 1, så hverken CI eller en agent kan skibe sitet før fundet er rettet.

## Test og fixtures

Som alle kontrakter i frameworket har served/404-contract en mutant-test, der beviser at reglen fejler, når kravet brydes — en regel uden en fejlende test er ikke en regel. Golden-fixturet beviser omvendt, at en fuldt compliant side består 404-contract sammen med de øvrige 85 regler, og denne demoside er selv underlagt hele kontrakten.

## Relaterede regler

- [served/security-headers](https://pseo.mikkelkrogsholm.dk/regler/served/security-headers/)
- [served/csp-quality](https://pseo.mikkelkrogsholm.dk/regler/served/csp-quality/)
- [served/hsts-quality](https://pseo.mikkelkrogsholm.dk/regler/served/hsts-quality/)
