Task · CFO-0048.04

Access and Gateway seat usage

Description

Access users are exported only as a bare count; seat usage (Access seat, Gateway seat) drives licensing and is available on the users endpoint.

Acceptance Criteria

Definition of Done

Implementation Plan

Loop15 E48D: add access.seats snapshot collector in the owned Access package, preserving inventory.access. Root current official SDK verifies access_seat/gateway_seat booleans; non-empty live read-only canary matched both fields. Emit cloudflare.access.seats with bounded access/gateway type only, unit 1, full pagination and genuine false/empty zeros; absent/null/malformed flags fail without partial counts. Default enabled, 15-minute interval, no user/device/identity metric attributes. Dashboard panel is a separate DASH-chain slice before AC3 completion.

Implementation Notes

Code-level seat gauge and bounded-attribute criteria verified on public d08dce3: local registered HTTP/SDK behavior and exact root gate/API canary, literal-zero net/history scans, nine applicable exact-SHA workflows and six CI jobs succeeded. Seat panel source is included, but configuration readback and any applicable interactive evidence are separate; AC3 remains open. No deployed seat series or runtime-hour claim.

Final Summary

Source criteria complete on published d08dce3, inherited by a77ce0b: bounded Access/Gateway gauges tested through registered collector, real HTTP pagination and SDK, with no user metric attributes. Semconv and signal docs declared both names; dashboard generator includes the independent two-series panel. Exact source gate/API canary, zero-hit net/history scans, applicable CI and GitSync succeeded. Readback matches panel queries/viz/layout except API omission of an explicitly empty mappings array, recorded as one specific normalization rather than raw exact equality. AC3 is source declaration/documentation/panel presence, not a browser-rendering or live-series criterion. No deployed seat data, browser rendering or sustained-runtime claim.

View the source file on GitHub