Review: svc#198 Caddy reverse proxy for staging.intelligentstaffingsystems.ai (re-review)

review-1931-2026-07-26-v2 Review

review ready

Verdict: READY

Re-review after refinement. Issue body updated with User Story, Test Expectations, and blast-radius AC. Board label corrected from type:feature to type:task.

Template Completeness

  • [x] Type — Task
  • [x] Lineage — Follow-up from #193, discovered during PR #196 review
  • [x] Repo — ldraney/pal-e-services
  • [x] User Story — present (added in refinement)
  • [x] Context — explains DNS CNAME exists but Caddy entry missing
  • [x] Scope — add Caddy reverse proxy block following existing pattern
  • [x] Acceptance Criteria — 3 items, all concrete
  • [x] Test Expectations — present (added in refinement), curl commands specified
  • [x] Constraints — SaltStack-managed, must not disrupt existing routing
  • [x] Checklist — present
  • [x] Related — #193, arch-argocd

Traceability

  • [x] story:dev-environment label — Dev to staging to prod pipeline
  • [x] story note verified — found in project-iss user-stories section (references #192/#193/#194)
  • [x] arch:infra label — Hetzner Edge, DNS, Traffic Routing
  • [x] arch note verified — arch-infra note exists, covers exactly the Caddy/edge proxy pattern
  • [x] Forgejo issue — ldraney/pal-e-services#198, open

File Targets

N/A — Task type uses Scope instead of File Targets. Scope describes adding a Caddy reverse proxy block on the edge VPS, following the existing pattern for intelligentstaffingsystems.ai and dev.intelligentstaffingsystems.ai.

Repo Placement

OK. Issue filed on pal-e-services (infrastructure services repo). Actual work is a Caddy config change on the Hetzner edge VPS managed by SaltStack. The issue acknowledges this constraint. No additional repos needed.

Dependencies

  • DNS CNAME — already added in PR #196 (prerequisite satisfied)
  • svc#193 (parent, staging environment) — done
  • svc#199 (Harbor pull secret for staging) — sibling in backlog, not a blocker for this task
  • deploy#242 (ISS staging CNPG database) — sibling in backlog, not a blocker
  • platform#560 (DNS CNAME) — in backlog on board but PR #196 already merged the work; board item may need updating

Acceptance Criteria

All 3 criteria are concrete and agent-verifiable via curl. Test Expectations section provides the exact commands. Includes blast-radius check for existing ISS domains.

Blast Radius

Low risk. The change is additive (new Caddy config block). The issue includes AC to verify existing ISS domains still respond. Per arch-infra, other domains also route through the same edge proxy (palinks.app, landscaping-assistant.app, westsidekingsandqueens.com). A syntax error in the Caddy config could theoretically affect all domains, but the additive nature and SaltStack management mitigate this. The operator should verify Caddy reloads cleanly after the change.

Decomposition Assessment

No decomposition needed. Single additive infra operation, 0 codebase file targets, 3 AC, well under the 5-minute rule.

Recommendation

No action needed.