## 1. Artifacts - [ ] 1.1 `make build` on .27 → `frontend/where-woof` binary - [ ] 1.2 rsync binary + `templates/` + `static/` → `sam@192.168.20.13:/var/www/where-woof` (NO --delete on static; uploads preserved); `mkdir -p static/uploads` + chown ## 2. Service - [ ] 2.1 Write `/home/sam/.config/where-woof.env` on .13 (DATABASE_URL→localhost:5434, SESSION_SECRET, SMS_* ; chmod 600) - [ ] 2.2 `~/.config/systemd/user/where-woof.service` (WorkingDirectory=/var/www/where-woof, Restart=on-failure, EnvironmentFile, port 3020); `daemon-reload`, `enable --now`, `loginctl enable-linger sam` - [ ] 2.3 Verify: curl localhost:3020 on .13 (200); from .27 via 192.168.20.13:3020 ## 3. Caddy / DNS - [ ] 3.1 Confirm the .35 Caddy block is present (user saved it); test `where-woof.home.lab` → .35 → .13:3020 if local DNS resolves - [ ] 3.2 Document the InMotion → where-woof.com DNS repoint as the user step ## 4. Verification - [ ] 4.1 Full smoke on .13: register → claim TEST000001 → edit → public page; SMS in log mode unless creds set - [ ] 4.2 `openspec validate deploy-frontend`; commit