Description
Load balancer users need pool and origin health per region, origin RTT, and which pool served traffic. Health comes from the read-only pools/health REST endpoints and traffic from loadBalancingRequestsAdaptiveGroups. Must be a no-op on accounts without load balancing.
Acceptance Criteria
- #1 Documented pool request counts are exported as replaceable trailing-window gauges of uncached load-balancer resolutions.
- #2 An account without load balancers produces no errors
- #3 A new dataset or endpoint has a live-verified entry in doc-0003 (Cloudflare API surface reference) and an API drift canary probe
- #4 Every new signal and attribute is declared in internal/semconv, listed in the signal reference documentation, and has a panel in grafana/build_dashboard.py
- #5 Any new token permission is added to the token permission matrix in the docs
Definition of Done
- #1 just check (fmt-check, lint, vet, test, tidy-check, build, vuln)
- #2 just ci before a change that touches the Dockerfile, goreleaser or the image (adds snapshot + image)
- #3 Every new signal or attribute name declared in internal/semconv and listed in docs/signals.md
Implementation Plan
Loop16 E50B builds the smallest documented partial health surface: pool catalog names and the optional direct pop_health.healthy boolean described by the retained official response schema. No undocumented regional/address-map join, origin RTT, weight, traffic total or pooled timing is invented. The gauge is explicitly an unattributed provider health flag, not an aggregate regional availability claim; absence is unknown and omitted. Default off, fixture only, existing platform series cap and bounded catalog. AC1 remains partial for the omitted origin/regional/traffic surface. Pool list is live-canary eligible, health detail remains explicitly documented-only and unprobed with exact template/reason.
Loop17 CON uses current successful live empty catalog envelope and existing documented-only detail templates. Preserve explicit unobserved fields; fresh canary and root doc-0003 update gate AC3.
Loop24: documented regional and origin health/RTT and entitlement-safe pool traffic, red-first fixture proof, canary contract and signal panels; security review before landing.
Implementation Notes
Loop15 current pool-list canary succeeded with a genuine empty result. Global GraphQL metadata verifies selectedPoolAvgRttMs as a uint64 POOL timing dimension in milliseconds, not REST origin rtt string units; avg contains only sampleInterval. Weighted ruleMatches/totalRequestsWithRule and ruleMatchPercentage explicitly require ruleName grouping. General request-count sampling/traffic selection and origin RTT units remain unproved. Source prerequisite park retained; no implementation attempt or resource creation. API reference doc-0003 section17 records the limitations.
Loop16 partial health source landed ca207018dec85ab25e8a51ab32844e8e4bd26bc8 after supplemental fresh REV-E50B-R2 PASS72bbf59f50b155343b18843fa34965fc8cd20013, initial verification FAIL retained. Exact source patch replayed unchanged, integrated gate/scans/canary matched. Only direct optional provider health boolean by capped resolved pool name, default off; missing health unknown clears prior readings, expiry and genuine empty catalog tested. AC1 remains partial: no origin/region/RTT/traffic semantics invented. AC3 partial: pool-list live empty canary passes, detail documented-only/unprobed. AC4 panel remains open. Load Balancers Read documented, least-privilege token not newly proven. CI pending.
Loop16 partial direct provider-health panel source landed730f8a219749d36878bdfa58f9c4cbe10b1cddb7, fresh REV-DASH4-R1 PASS226dfc7ae1029ef4ab0eb62cf21779c0dbecfc09. Exact translator/unit1, independent instances, false zero, unknown omission and stale expiry tested with Promtool; no regional/origin/RTT/traffic/fleet availability invented. Root gate/generation/scans/replay passed. Every new declared signal/attribute now has source panel,AC4checked, while AC1 andAC3 remain partial/documented-only detail unprobed. Unreleased batch after final permitted0.15.0, CI/SYNC pending.
Loop17 existing contract at597f2bfe3fedf08c5f9a5594fbe3f6a7e0aa48da independently REV-CON PASS, exact-source gate green. Current pools200 successful empty list; actual unchanged full canary matched using default paging at12:13UTC, doc-0003 entry qualified documented shape, no live rows observed. Health detail documented-only/unprobed, no pool ID invented. AC1 remains open for regional/origin/RTT/traffic semantics; no deployed-value claim.
Loop24 documented-source split: current official pool-health response lacks stable region and origin discriminators; regional/origin attribution and RTT remain blocked, original AC1 unchecked. Implement only documented pool request counts within admitted files; source is uncached load-balancer resolutions, not all HTTP requests. Two worker change-and-verify cycles reached a missing generated-dashboard ownership gap; root admitted the generated artifact and retry attempt 3 of 4 runs. No live pool created or Cloudflare query made by the lane.
Loop24: 3 implementation attempts, plus root permission-documentation prerequisite. Documented traffic split landed source14ed3bfb1dcddd10270c7c4ff34cf9b083b70604 and permission docs7fdf297f899a6a38d0b8857f8faaf60b7538645e. Immutable just check, security and docs-delta PASS; CodeRabbit complete with zero major/critical; exactCI37377084957 all required jobs success; composed G-LB exit0. Traffic is replaceable trailing-window gauge of uncached resolutions with entitlement/no-pools fixture proof and panel/canary. Full AC1 stays unchecked and task Parked: need authoritative stable region/origin discriminators to attribute health/RTT. No live pool created or data selection claimed. Health-only tokens now need documented zone-discovery/analytics read scopes for combined refresh; least privilege unverified.
Loop25 R1: 0 implementation attempts; tracker-only reconciliation. Documented pool traffic landed 14ed3bfb1dcddd10270c7c4ff34cf9b083b70604, permission docs landed 7fdf297f899a6a38d0b8857f8faaf60b7538645e; recorded immutable gate, exact CI 37377084957 and composed G-LB PASS. Regional/origin health and RTT split to top-level Parked CFO-0081 (Load balancer regional and origin health and RTT), waiting on Cloudflare stable region/origin keys. No new live or least-privilege claim. Image DoD not applicable to tracker-only change.
Final Summary
Documented pool traffic AC1 delivered at 14ed3bfb1dcddd10270c7c4ff34cf9b083b70604 with entitlement/no-pools fixtures, panel/canary, immutable just check, security/docs review, exact CI 37377084957 and composed G-LB PASS. Remaining regional/origin health and RTT belongs to CFO-0081 (Load balancer regional and origin health and RTT), Parked pending authoritative stable keys.