The test image swaps in Caddyfile.test, so the production Caddyfile was
never exercised by CI: the parse error from issue #20 sailed through
every check and only surfaced when the deploy gate failed — after the
broken container had already replaced the healthy one. Running
`caddy validate` (same caddy:2-alpine base as the Dockerfile) on both
files up front fails the PR check in seconds instead.
Touches the frozen .github/workflows/ per explicit product-owner
approval in #26.
Closes#26
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>