## 1. Artifacts

- [x] 1.1 `make build` on .27 → `frontend/where-woof` binary
- [x] 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

- [x] 2.1 Write `/home/sam/.config/where-woof.env` on .13 (DATABASE_URL→localhost:5434, SESSION_SECRET, SMS_* ; chmod 600)
- [x] 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`
- [x] 2.3 Verify: curl localhost:3020 on .13 (200); from .27 via 192.168.20.13:3020

## 3. Caddy / DNS

- [x] 3.1 Confirm the .35 Caddy block is present (user saved it); test `where-woof.home.lab` → .35 → .13:3020 if local DNS resolves
- [x] 3.2 Document the InMotion → where-woof.com DNS repoint as the user step (DNS outstanding — see tuxedo)

## 4. Verification

- [x] 4.1 Full smoke on .13: register → claim TEST000001 → edit → public page; SMS in log mode unless creds set
- [x] 4.2 `openspec validate deploy-frontend`; commit
