Task · CFO-0048.02

WARP fleet status aggregates

Description

Which devices are connected, from where, and on which client version is the WARP fleet view. The fleet-status device endpoint returns one row per device; per-device series (device ID, name, email) are unbounded, so export aggregates and paginate fully (a single page silently truncates large fleets).

Acceptance Criteria

Definition of Done

Implementation Plan

Root doc-derived WARP device-list contract and current successful empty-list canary recorded in doc-0003. Add disabled-by-default warp.fleet snapshot collector, default five-minute poll and fifteen-minute last_seen window (maximum sixty minutes). Paginate devices at per_page fifty using actual server page metadata and short/empty termination; full validated poll only, bounded unique-device dedup with conflicting duplicates rejected. Export one unit-1 gauge grouped by observed status/platform/client version/mode/colo, no Boolean connected/active inference and no device/user labels. Expiring complete snapshots, genuine empty clearing, a documented bounded tuple cap/remainder. Named fields/config/ownership frozen in root brief before implementation; API drift entry and documentation in own scope. Dashboard is a later dedicated slice; no current populated-row/live-runtime claim.

Loop17 reserve now admitted after DEP1 healthy: read-only current official WARP documentation mapping for one headless service-token Docker client, exact enrollment steps and explicit seat/billing/policy impact. Root proof only if no seat/billing impact and only goal-granted writes; otherwise park without enrollment.

Loop24: prove raw-status AC1 on current main; unchanged existing test accepted if sufficient, otherwise red-first repair and review.

Implementation Notes

Loop15 source delivered at B6 461185cbee8b2e3302137251434e80eed6f4b49d and panel B7 e8c8028157b6550ca76d50eef7fe0d65c7756252. Exact-source independent reviews passed, full required gates and complete CodeRabbit source coverage passed, strict net/all-new-history raw hits were empty before each push. B6 CI36980016542 and B7 CI36982507562 all six jobs passed; nine and eight applicable workflows respectively passed; auto-RC separate. B7 Grafana sync36982507472 succeeded. Actual configuration GET found panel2325 and matching layout/element keys, body hash5cd928fc53017256c37e8de423857df83529ed1c1c75f90ac96c6dccd8554102. Raw equality and the initial mappings-only comparison remain false: the only actual differences are omitted redundant organizer spec.id equal to kind and added empty group. Exact kind/options/every-other-panel-field match after those two specific canonicalizations. No browser, production datasource frame, live fleet values, release or sustained-hour proof is claimed. AC2-5 are checked at their explicit source/documentation/panel-source criteria. AC1 remains open: source exports unique recently seen counts by raw status/platform/version/mode/colo with locally proved full pagination, but documentation does not define a connected status classification. No Boolean connected inference or acceptance-criterion rewrite was made. Initial API rows remained empty; populated shape and paging are doc-derived/local fixtures, not live rows. Default collector remains off.

Loop17 reserve docs mapping returned ineligible after healthy0.16.0 DEP1. Official headless Linux service-token flow is described, but no-seat/no-billing impact for this Free account is not established and authoritative Docker image/capability/policy-impact evidence is incomplete. Park WARP-PROOF without enrollment, service token, include rule, credentials or host project writes; proof attempt unconsumed. No connected/fleet Boolean or populated device proof claimed. Resume only with current authoritative fence evidence and permitted container plan.

Loop24: 1 test-coverage implementation attempt. Raw status decision accepted. TestRawFleetGroupingAcrossThreePagesWithShortFinalPage proves exact five-dimensional tuples across 4/4/3 rows and ignores connected Boolean, with no per-device attributes. Base production was already correct; reviewed mutation-red proves new coverage, not a production bug. Landed 4a74ad304fdb0cd5fe2f59b084c9fc97db0e4883 after immutable just check and security PASS; exact CI37374331818 all required jobs success, composed G-W1 just check exit0. No live populated fleet or hour proof claimed.

Final Summary

Loop24 closes AC1 under owner raw-status decision with fixture-proved grouping/full pagination on current main; no inferred connected classification.

View the source file on GitHub