Home follows the runtime switcher: no OpenClaw gateway, no other runtimes' run health, activity, autonomy, anomalies or eval tile - #6017
Conversation
… runtimes' run health, activity, autonomy, anomalies or eval tile With Codex selected on the hosted dashboard, System Health still listed "Gateway :18789" (the snapshot names it plain "Gateway", which the OpenClaw name filter missed), Run Health drew a claude_code row, and 30-day activity, autonomy, anomalies, reliability and the eval tile counted every runtime. The snapshot's Run Health slice had no Codex row at all because the newest 60 sessions were all Claude Code. - /api/activity-heatmap, /api/health-timeline, /api/autonomy and /api/evals/summary take ?runtime= and echo it; the page hides a card rather than show a node-wide answer under one runtime's name. - Anomaly panel keeps only the runtime's sessions; Reliability (no per-runtime form) is hidden under a runtime. - Daemon: Run Health slice adds each runtime's own recent sessions (query_recent_sessions_by_runtime) with a 120 s memo; new autonomyByRuntime slice with a 300 s memo. - A runtime switch resets the loadAll coalesce so Home reloads at once. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
|
visual-diff failing by design — this PR intentionally changes which tiles are visible under runtime filtering (tiles that belong to other runtimes are hidden when a runtime is selected). The baseline screenshots pre-date that behaviour change and no longer match. To clear the check: regenerate the Playwright visual-diff baselines locally with Generated by Claude Code |
|
blocked on author decision — skipping (auto-mergeability sweep): PR is UNSTABLE because Generated by Claude Code |
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
Visual diffBot run failed before producing screenshots. Check the workflow logs. This check is non-blocking. |
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
The merge commit from main raised the unlisted test count from 913 to 914 (total test files grew from 1188 to 1189 as PRs merged since this branch was cut). No new unwired tests added by this PR itself. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2qvyzQXsAhnjfrCt4izc8
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
Problem
On app.clawmetry.com with Codex selected, Home still showed things that belong to other runtimes:
Gateway, so the/openclaw/ifilter from System Health follows the runtime switcher for all 32 runtimes: no OpenClaw cards elsewhere, no invented sub-agent success rate #5982 missed it.claude_coderow. The snapshot'shealthTimelinehad onlyclaude_code: the newest 60 sessions on that node were all Claude Code, so Codex never got a row.Verified live before the fix, by decrypting the snapshot in the page:
healthTimeline.runtimes = ["claude_code:30"],systemcarries["Gateway","Running"], and thesh-servicespill renderedGateway :18789under?runtime=codex.Fix
OpenClaw*, a bareGateway, and port 18789 off OpenClaw/NemoClaw?runtime=on/api/health-timeline(reads deeper, keeps that runtime's newest); page renders only that runtime's row. Daemon slice adds each runtime's own recent sessions viaquery_recent_sessions_by_runtime, memoised 120 s/api/activity-heatmap?runtime=filters by session-id prefix and echoesruntime; page hides the card if the answer is not scoped/api/autonomy?runtime=reads only that runtime's user turns; empty (never node-wide) when it has none. New snapshot sliceautonomyByRuntime, memoised 300 s/api/evals/summary?runtime=+LocalStore.query_eval_summary(runtime=); echoesruntimeloadAll2 s coalesce so Home re-scopes immediatelyThe cloud-only leaks (the
cm-cloud-runtimeschip row listing every runtime, the/api/system-healthinterceptor's Gateway, the autonomy/health-timeline/live-activity/diagnostics interceptors) are fixed in a companion clawmetry-cloud PR, which readsautonomyByRuntimefrom this release.Verification
tests/test_overview_runtime_scope.py: 16 tests (Flask routes, real DuckDB for autonomy and eval summary, fake store for the daemon slice, node harness running the realloadHealthTimeline). All 16 fail with the source changes reverse-applied, all pass with them.tests/test_system_health_runtime_scope.py,test_autonomy_v3_shape.py,test_health_timeline_route_gate.py,test_evals_route_gates.py, and a 209-test runtime/snapshot/overview/evals subset pass. Two pre-existing local failures reproduce on unchanged source (test_eval_runner.pyx5: "no judge API key configured";test_device_snapshot.py::test_empty_store_returns_valid_zero_payloadreads a live alert) and are not touched here.Product record: https://factory.8090.ai/project/b415065f-ab2f-4f53-8864-0c009fd098cb/requirements/8e389016-a9c8-4352-9121-72f0e361fdf6 (Runtime and Session Observability; FLYWHEEL §0a gate 2 and §1c runtime-filter rule).
🤖 Generated with Claude Code