rdmsm4x-changelog-20260924-1444-rtty-523-dashboard-consistency-built-gate-deferred
RTTy 0.3.848 / Build 523 — the dashboard consistency build Rich asked for at 13:0x (one timeline for every chart, latency band fixed, style menus on every section, checks section renamed, flows table sorting/sizing, latency-spike overlay) — is implemented, on main, trust-chain closed and Store-constructed; its gate, rollout and App Store attach wait only for rdmsm4x's screen to be unlocked, and a watcher finishes them the moment it is. The polish rules were written into the design-system baseline for every app and a library lift ticket opened.
Written 2026-09-24 14:44:57 EDT on rdmsm4x by claude@rdmsm4x (Claude Code, Fable 5.1 oversight, session c13f617a). Covers 13:08 → 2026-09-24 14:44:57 EDT EDT. Budget: Anthropic 7-day 87 % → hold; implementation ran on codex (OpenAI 23 %) in three sequential slices from a lead spec; no Claude lanes spawned.
Scope
- Hosts: rdmsm4x (all writes). Repos: apps/RTTy (main + the three remotes), lib/app-baseline (DESIGN_SYSTEM.md), ~/dev/apps/CLAUDE.md, ~/dev/PROJECTS.md, issues store, memory. Handoff: ~/dev/_handoff/rtty-dashboard-523-20260924-codex (SPEC.md, HANDBACK-A/B/C, logs); scratch clone ~/dev/_scratch/rtty-dashboard-523-20260924 (branch feat/dashboard-one-timeline-523, merged).
RTTy commits on main (a02bc5f … aa0b2ac; every push verified by ref on backup, fleet, origin)
| Commit | What |
|---|---|
| a02bc5f | Slice A (codex): TimelineDuration 30s/1m/2m/5m + chip row replacing the 15m menu; flows zoom removed (stored step migrated); latency band right edge / y domain [0, max(1.25·p95, 2·median, 5 ms)] / spikes shaded; short-window bucketing; tests +6 files |
| 12c913e | Slice B (codex): SectionStyleMenu on the flows chart, flows table history column and the checks table; "INDIVIDUAL NETWORK CHECKS · SYNTHETIC TESTS"; header-click sorting; grouping control left of the title |
| 2845e11 | Slice C (codex): flows table auto/manual height with drag handle and ⋯ menu; latency-spike overlay on the flows chart (cached per projection) |
| b1aeaa1 | flows chart style persisted (rule 5) — lead |
| 65ce48b | docs feature matrix re-synced to the root copy (c8d8812 had updated the root only) |
| eb38498 | five sources landed by the rdmbair15m5 agy lanes between 522 and 523 registered in the Store trust chain: pins 144/175 → 149/180, pbxproj regenerated, graph + verifier bundle re-rendered (the closure test on main had failed since b19a69c, 12:56) |
| 0fd10c9 | traceroute parser header check made shape-based: the literal "traceroute" was LatencyCore's only Store source-policy violation |
| a2ad117 | release: 0.3.848 Build 523 candidate (closure PASS 149 inputs) |
| 84a41d4 | launch-capability policy re-rendered on Xcode 26.6 (+92 SwiftUI/Foundation symbols for the new gestures/menus/hover; no spawn symbol) |
| 39cc748, aa0b2ac | 523 record opened; construct PASS + deferred gate + resume path; SESSION-STATE resume block |
Verification
- Per slice: swift build 0 warnings; targeted suites; codex full runs A 1,674 → B 1,683 → C 1,697 tests (one pre-existing failure, see below). Rebased branch: build 0 errors, full suite minus SettingsOnePageRenderTests 0 failures, docs validator PASS 18/167/8, closure test PASS 149 compiler inputs on the committed head.
- Construct PASS 14:38:50–14:42:10 (five PASS lines; export523/RTTy.pkg 17,114,558 bytes, Apple Distribution signed).
- The gate did NOT run: rdmsm4x's screen is locked (CGSSessionScreenIsLocked=true); a fresh window never gets onAppear, so SettingsOnePageRenderTests (and the gate's live stages 5–9) fail deterministically — proven by the same failure at the 522 tag, which passed at 07:13 and 13:48 while unlocked. Two harness experiments (5 s settle; latency-critical activity) changed nothing and were reverted. Memory: release-gate-needs-console-unlocked.
Resume (automatic)
resume523.zsh (session scratchpad; log release/build523/logs/resume-523.log): restores Xcode 27 while waiting; polls the lock every 30 s (12 h); on unlock waits for zero build processes, borrows 26.6, runs gate523.zsh from the clean clone, then post523.zsh (package, installer v1.7 with the uniform 522 rollback baseline 48a819c1…, tag v0.3.848-build523 from the hub, canary rdmpw3275m then five hosts, ASC validate/upload/poll/attach with versionString 0.3.847 → 0.3.848), then a +15 min soak. Post-gate steps only after gate rc=0.
Other changes
- lib/app-baseline DESIGN_SYSTEM.md §4.10 (1825448, db3ddae): twelve dashboard polish rules with evidence; ~/dev/apps/CLAUDE.md §11 points at it. Tickets: FEAT-20260924-10 (ECSUI lift of the generic pieces after 523), FEAT-20260924-11 (HyperCPU adoption), FEAT-20260924-12 (hyperTune adoption).
- Memory: rtty-polish-rules-apply-fleet-wide (feedback), release-gate-needs-console-unlocked (project).
- Bus to agy@rdmbair15m5: 08:24 single-writer rule during release cycles; 14:34 move the custom-service-profiles workbench off the canonical checkout, drop the Settings-test edit (chases the locked-screen symptom), register new sources per runbook §1; 14:38 Xcode 26.6 active until the gate.
Defects of mine, owned
- 14:35 the Xcode 27 → 26.6 swap ran while 23 build-related processes (another lane's) were running: my pre-check printed the count and did not stop. That lane was told to re-run anything that failed at 14:35; the watcher's swap waits for zero builds.
- 14:32 a fast-forward and pushes ran against the hub checkout while it was on an agy branch (the lane checked its branch out in the canonical tree): the branch pointer moved (content only, its files untouched), the pushes were no-ops; corrected by moving the main ref and re-pushing (verified by ref), and the candidate was cut in the clean clone instead. Nothing committed to the wrong branch.
- One unquoted variable made a git add fail harmlessly (zsh does not word-split); all later commits used explicit paths.
Undo
- 523 has not reached the fleet or ASC. To abandon: delete tag (none yet), leave main (docs and release metadata only; source slices are reviewable per commit), delete export523/out523.
- Xcode: 27 restored by the watcher; the marker file governs.
Outstanding — Rich only
- Unlock rdmsm4x's screen (the watcher does the rest).
- After the attach: Submit 0.3.848 / 523 (never 520) — the four ASC screenshots still show 521's dashboard and get re-captured once the screen is unlocked and 523 is installed.
- Unchanged: CloudKit Console index + Production deploy; App Groups on the Direct App ID; ASC records for HyperCPU/hyperTune; support@eastcoastscience.com.