
On Device A: open app, log a feed for any pet. On Device B (same household, signed in as different user): within 5 seconds the Home Screen widget reflects the new status without opening the app. Repeat in reverse direction. Then log medication and walk events from each device. With both devices kept on Wi-Fi for 24h, no widget should ever go >5 min stale (ROADMAP SC2 + WIDGET-04 contract).
Requires two physical iPhones, two TestFlight installs, two real Supabase auth sessions in the same household, and live APNs delivery. Cannot be reproduced by any automated test in this repo: APNs delivers only to real device tokens, the silent push runs in the background app process, and WidgetCenter.reloadTimelines is iOS-managed. This is the only assertion that closes WIDGET-04 SC2 (24h soak, 50 actions/day, never >5 min stale).
Pick yourself, then claim, comment, drop a screenshot, or close. Each action opens a PR against master; site reflects after merge + next /franks-fed-status-publish run. Mutations are audit-logged.
The mutable state lives in .planning/uat-state.json. Easiest path is to ask Claude Code in the project repo:
"Assign phase-3-uat-01-two-device-soak to Treth and add a comment: 'Setting up two iPhones tonight, will start the 24h window from 19:00.'"
Or hand-edit .planning/uat-state.json directly. Drop screenshot evidence into .planning/uat-evidence/phase-3-uat-01-two-device-soak/ and reference the filename in the evidence array. Once the test passes or fails, set status to pass or fail with completed_at + a closing comment, then run /franks-fed-status-publish. The skill will write a closure record to .uat-pending-resolutions.json with a one-paste prompt that updates the originating VERIFICATION.md.
.planning/phases/03-widgets-apns-fan-out/03-VERIFICATION.md · verification index: 0 · SC: WIDGET-04 SC2