De frontend-crash uit #20 kon door CI glippen omdat test.yml het testimage bouwt met Caddyfile.test (COPY Caddyfile.test /etc/caddy/Caddyfile) — het échte productie-Caddyfile wordt in geen enkele check geraakt. Een parse-fout daarin komt pas aan het licht als de deploy-gate faalt, en dan is de kapotte container al live (recreate: always) → downtime. Detectie is er sinds #20, preventie nog niet.
Fix
caddy validate van beide Caddyfiles als eerste stap in de test-job (caddy:2-alpine, zelfde base-image als de Dockerfile). Een ongeldige config faalt daarmee al in de PR-check, in seconden, vóór er iets gebouwd of gedeployed wordt. Dit is exact de check waarmee de #20-bug lokaal werd aangetoond, nu structureel in de pipeline.
.github/workflows/ staat in PROTECTED.md; wijziging is expliciet geautoriseerd door de product owner in deze opdracht.
Verificatie
PR-run: test-job groen mét de nieuwe validate-stap (bewijst de positieve flow op de echte runner)
Negatieve flow lokaal al bewezen in #20: dezelfde validate faalt exact op de toenmalige fout
## Context (follow-up van #20)
De frontend-crash uit #20 kon door CI glippen omdat `test.yml` het testimage bouwt met `Caddyfile.test` (`COPY Caddyfile.test /etc/caddy/Caddyfile`) — het échte productie-`Caddyfile` wordt in geen enkele check geraakt. Een parse-fout daarin komt pas aan het licht als de deploy-gate faalt, en dan is de kapotte container al live (recreate: always) → downtime. Detectie is er sinds #20, preventie nog niet.
## Fix
`caddy validate` van **beide** Caddyfiles als eerste stap in de test-job (`caddy:2-alpine`, zelfde base-image als de Dockerfile). Een ongeldige config faalt daarmee al in de PR-check, in seconden, vóór er iets gebouwd of gedeployed wordt. Dit is exact de check waarmee de #20-bug lokaal werd aangetoond, nu structureel in de pipeline.
`.github/workflows/` staat in PROTECTED.md; wijziging is expliciet geautoriseerd door de product owner in deze opdracht.
## Verificatie
- [ ] PR-run: test-job groen mét de nieuwe validate-stap (bewijst de positieve flow op de echte runner)
- [x] Negatieve flow lokaal al bewezen in #20: dezelfde validate faalt exact op de toenmalige fout
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context (follow-up van #20)
De frontend-crash uit #20 kon door CI glippen omdat
test.ymlhet testimage bouwt metCaddyfile.test(COPY Caddyfile.test /etc/caddy/Caddyfile) — het échte productie-Caddyfilewordt in geen enkele check geraakt. Een parse-fout daarin komt pas aan het licht als de deploy-gate faalt, en dan is de kapotte container al live (recreate: always) → downtime. Detectie is er sinds #20, preventie nog niet.Fix
caddy validatevan beide Caddyfiles als eerste stap in de test-job (caddy:2-alpine, zelfde base-image als de Dockerfile). Een ongeldige config faalt daarmee al in de PR-check, in seconden, vóór er iets gebouwd of gedeployed wordt. Dit is exact de check waarmee de #20-bug lokaal werd aangetoond, nu structureel in de pipeline..github/workflows/staat in PROTECTED.md; wijziging is expliciet geautoriseerd door de product owner in deze opdracht.Verificatie