mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-25 05:00:07 +00:00
ffb133f0b9
The landing-page counters stood still since D-198: the two-hourly recompute was their only writer and merged Max(live figure, stored figure), while retention prunes the live figure below the stored one - so new enrollments never showed up again. - Hot path increments the per-tenant counters only (CAS): enrollments at the fresh registration, successes at the one status seam every Succeeded writer passes (transitioned && Succeeded), events per ingest batch. No batch touches the global row. - The maintenance run floors the tenant counters at the live figures (one multi-field write per tenant), sums the tenant rows and adds the growth since the previous run to the platform row. The previous sums live in a baseline row written in one transaction with the platform row. A total is never derived from an absolute figure again: a shrinking source (retention, offboarding) costs the growth of one interval instead of freezing the counter. Without a baseline the sum is a lower bound only. - TotalTenants rolls up the tenant rows with enrollments, UniqueDeviceModels a persisted set of seen models. TotalUsers stays a high-water-mark (a persisted user set would outlive the user-activity retention). - The platform row is merged with its read ETag and never carries IssuesDetected: the former full-row upsert undid every increment that landed during the run. - Reads that feed the baseline are not fail-soft, and a floor that could not be written skips the rollup of that run - a swallowed zero would be added as growth a second time. Shared manifest and generated wire types: doc comment of PlatformStats only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>