docs(statistics-deck): zero-scroll display model and the projector paradox #80
No reviewers
Labels
No labels
blocked
bug
enhancement
high-priority
low-priority
needs-info
needs-triage
ready-for-agent
ready-for-human
referenced
research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gabogg/hikcentral!80
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/statistics-deck-display-model"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The statistics deck proposed in #20 was closed because its content and layout no longer match the plan. The one argument from it that still holds, and the reason the deck needs a new design, is the projector paradox. It was buried in §1.2 of that RFC and never carried into a decision:
The deck's audience is investors and presentations: meaningful KPIs and graphs about footfall and its trend, not operations or calibration detail.
Approach
Add
docs/architecture/rfc-statistics-deck-display-model.md, a new RFC that keeps the paradox and turns it into display rules:100dvh,overflow: hidden,minmax(0, Nfr)rows; graphs redraw to their box and thin out labels instead of overflowing.*detail panel, always on. Records skip Unreliable days. The occupancy confidence margin stays off the deck.Not carried over from #20: the metric catalogue, the schemas, the per-period layouts, and its reading of "density" as a font scale.
The old RFC remains readable at
refs/pull/20/head(482f827,docs/architecture/rfc-executive-statistics-deck.md).Mockup
https://claude.ai/artifact/AECeXhQqEWZHEoZYNbmVuL (shared; also linked from the RFC header)
.period picker,/help (-/+reserved for previous / next period). The?button in the top bar (or the?key) shows them on a numpad diagram.WEEK MON 14 – SUN 20 SEP 2026 ▾, numpad.) opens a WIP placeholder picker; selection rules are in #81.Related issues
CONTEXT.md.bucket=hour), #86 per-entrance breakdown, #88 usual-weekday baselines. They sit under a separate read-only/api/statistics/router.excluded/trustedand the cycle's own multiplier.Design points
All settled; see RFC §5, dated per session (2026-09-24 triage, 2026-09-25 maintainer decisions and grilling, 2026-09-26 grilling). RFC §6 now lists only what is deferred.
Notes
Status: Accepted (2026-09-26).
Docs only; no code changes. Also adds glossary terms to
CONTEXT.md: Complete Period, Partial Period, Weekend Share, Data-Quality Marker and Cycle Verdict. Usual Weekday Baseline and Closed Day came to master with #105 and #103. Rebased onto master on 2026-09-26; pre-commit (ruff, pytest) andscripts/check_docs.pypassed.The RFC sits in
docs/architecture/and is linked fromdocs/README.md(Architecture and explanation). Accepted by the maintainer on 2026-09-26.Refs #20
🤖 Generated with Claude Code
Opened #81 (needs triage: how complete weeks and months are defined and selected) and the route issues the deck needs: #82–#88. The mockup now has a period selector button in the top bar of each view; the picker itself is a WIP placeholder.
The route blockers now have draft PRs, grouped by shared scope and stacked in review order:
The final stack passes 291 tests locally, Ruff/pre-commit, and the documentation route check (72 HTTP operations). These remain WIP for review and merge in the order above; issue closure and PR #80 readiness follow their merges.
New requirements from the maintainer (2026-09-25), to fold into the RFC
Open points to settle before the RFC is final (being triaged with the maintainer):
Also to fold in from the 2026-09-25 grilling: Closed Days (#103, merged), comparison coverage threshold (#104, merged), Usual Weekday Baseline wording (#105), quality marker via audit verdict plus per-day
excluded(#106), small-screen behaviour, default profile Room, no wallboard mode in v1 (#107).🤖 Generated with Claude Code
Decisions on the new requirements (maintainer, 2026-09-25)
viewer, enforced on the server by an explicit list of allowed routes (statistics, login, session); everything else returns 403 and the WebSocket refuses it. Operators also see the deck, as a tab. Filed as #121.analyticstab (content-analytics).occupancy-admin, where the schedules, exceptions and occupancy settings are). From today'sanalyticstab that means the proportional calibration inspector, the historical drift chart and the calibration log, including the manual calibration modal and the trust toggles.Still open: today's
analyticstab also has three operational charts that are not calibration tools (flow curves and net flow, estimated occupancy with its confidence margin, the multi-day comparison). Where they go is being asked separately.🤖 Generated with Claude Code
Decision: the analytics tab's operational charts (maintainer, 2026-09-25)
The three non-calibration charts on today's
analyticstab are dropped, not moved:Where they matter, their content should instead be represented in the statistics deck. The candidate set in RFC §4 already covers most of it:
The RFC update should say so explicitly and decide whether the occupancy confidence margin appears anywhere on the deck (e.g. as the data-quality marker's detail) or is dropped with the chart.
Cleanup once the deck ships: any admin route that only fed those charts (e.g.
/api/analytics/timeseries/multiday) should be checked for remaining callers and retired if unused.🤖 Generated with Claude Code
gabogg referenced this pull request2026-09-25 20:19:28 +00:00
e5dd9583ec3b702f6582Open design points settled (grilling, 2026-09-26)
RFC §6's four open points are closed, and the 2026-09-25 decisions from the comments above are folded into the RFC (new §4.1; §5 split by session). The branch is rebased onto master; the only conflict was the glossary in
CONTEXT.md, where master's Usual Weekday Baseline and Closed Day entries were kept. The route blockers (#82–#88) are all merged, so theblockedlabel and the "Blocked by" line are gone.excludedandtrustedfor the marker, the baseline andexcluded_days.MANUAL_ADMINandMANUAL_OVERRIDEoffset resets are not verdicts.min_data_trust◇. Unreliable: grey hatching and◆.*or a click on the badge opens plain-language lines per day; no internal codes.Filed: #128 updated with the verdict decision (now
ready-for-agent); #129 marker inputs (records rule, per-bucket gap flag; I also added tier counts onPeriodQualityand per-day gap intervals, which the badge and detail panel need); #130 calibration tools into the configuration tab; #131 retire the dropped charts' routes (blockeduntil the deck ships).The RFC is ready for approval. What remains is the deck UI work itself; #121 (PR #123) and #128/#129 feed into it.
🤖 Generated with Claude Code
WIP: docs(statistics-deck): zero-scroll display model and the projector paradoxto docs(statistics-deck): zero-scroll display model and the projector paradox