988759f738
The dev-only cap that forced every-1-min polling regardless of the app's schedule is removed. The device now sleeps for whatever X-Interval-Ms the server hands back (driven by rotationIntervalMinutes / wakeTimes), clamped to [30s, 25h] as a safety net against malformed values. Renamed FETCH_INTERVAL_MS to FETCH_INTERVAL_MS_FALLBACK — it's now *only* used when the header is absent (rare; rolling deploy / hand- crafted response). Added SLEEP_CLAMP_MIN/MAX for the bounds. Tests FW-09 and FW-10 flipped to lock the new behavior; added FW-10b covering sub-MIN clamping (battery protection if server sends 1000ms). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>