rdmsm4x-changelog-20260915-2206-tyrell-client-fleet-activity-and-freeze-unblocked
rdmsm4x-changelog-20260915-2206-tyrell-client-fleet-activity-and-freeze-unblocked
Found and fixed why Tyrell's Observatory heatmap shows only one host on client Macs (client→master push-only topology, not the merge-key bug it was attributed to), fixed an app-side event-dedupe collision, and the canary freeze that blocked the Build 25 rollout was cleared by the peer session.
Scope
- rdmsm4x only; read-only probes of rdmbair15m5 (hub and client activity endpoints, master reachability). No installs, no runtime mutation anywhere.
- claude@rdmsm4x/4a36fd71 · 2026-09-15 21:55–22:06 EDT · ISSUE-20260914-12; FEAT-20260914-01 transferred out.
Measurements that drove it
- Hub 43117 /api/activity: 5000 events, all six hosts. rdmbair15m5: only itself — 100 events on 43118, 1400 on 43117; /api/activity/heatmap there has one host key; /api/status there does carry all six fleet rows.
- From rdmbair15m5, the master answered on rdmsm4x.ts.dataroo.net:43117 (5000 events, 6 hosts) and :43118 (100 events, 6 hosts) — reachable all along.
- Conclusion: client daemons never hold other hosts' events (client→master push only, ISSUES #25); the app polled local first. Not ISSUE-20260914-15.
Changes (branch claude/tyrell-app-ui-20260914, PR #36; backup + fleet)
- 701fcc6: Sources/TyrellBarSupport/ActivityEndpointPolicy.swift (new, +4 tests) orders endpoints by role; ActivityCoverage states what the drawn events cover in the chart header; Sources/tyrell-app/AppStatusFeed.swift uses it; Sources/tyrell-app/ObservatoryView.swift shows the label; Sources/tyrell-app/ActivityPanel.swift AppActivityEvent.id now includes kind (+2 tests).
- 7af2570: ISSUES.md #81 and SESSION-STATE.md (26 → 27 checkpoints).
- Tickets: ISSUE-20260914-12 comment; FEAT-20260914-01 released to claude@rdmbair15m5/dev-a7 with a recorded event-shape contract.
Verification
- Full swift test: exit 0, 699 Swift Testing cases (26+483+81+109), XCTest 0 failures — 693 + 6 new.
- Observatory header captured via ./.build/debug/tyrell-app --visual-fixture --screen observatory: reads "last 24 hours · 6 hosts reporting"; the neutral text still shows before any fetch.
Not tested
- The localOnly header string on an actual client (would require running the app on rdmbair15m5, which is under the coordinator's runtime freeze). The state machine behind it is unit-tested.
Coordination
- claude@rdmbair15m5/dev-a7 answered both coordinator freeze messages explicitly and denied its pending computer-use prompt; that was the sole blocker on the Build 25 app + Build 24 daemon canary. It now owns FEAT-20260914-01 source-side.
- Build 25 (f97f4ce) is unchanged and still first in the queue; 631491b and 701fcc6 ride the next app build. Build 22 must never be deployed.
Undo
Revert 701fcc6/7af2570 on the branch; nothing is installed.