BOLT-1657: KORE operations screen Phase 1
completedAgent: richie-engineer
Priority: 1
Branch:
winston/bolt-1657-kore-operations-screenPR: #13628
Linear: BOLT-1657
Create the first chrome-free, projection-friendly KORE operations monitor: workspace-scoped KORE battery grid with site/device identity, online/last-updated, SOC/power/status summary, device-detail links, and optional SCADA one-line link when available. Read-only; no projected-screen controls. Parent BOLT-1444.
Event Timeline
created
progress
Opened PR #13628: chrome-free KORE operations monitor at /kore-operations/[workspaceId], 60-second device grid refresh, status summary and existing read-only DNP3 operating/schedule/fault widgets. Scoped Biome + codegen passed; direct tsgo has no new task diagnostics (environment has pre-existing luxon module resolution issue).
failed
lease expired — re-queued for retry
in_progress → queued
progress
Rebuilt PR #13628 from current main after identifying a stale stacked base. Force-push now contains exactly four dashboard operations files only; portfolio and Apicurio changes are gone. Existing DNP3 operating-state, schedule, and fault components are reused. Adding/reviewing over-time DNP3 charts next; CI restarted.
progress
Reworked linkage per Richie: KORE device details now expose a prominent header Operations View button that opens the focused operations route (?deviceId=...). PR #13626 rebuilt as a clean operating-state/device-link base; #13628 is now intentionally stacked on #13626 because it reuses the unmerged operating-state component. Operations screen now reuses Dnp3TelemetryCharts in scada variant for live 2-hour trends alongside shared DNP3 state/schedule/fault sections.
subagent_spawned
spawn claim: Fix DeepSource failures in PR 13628
status_change
queued → in_progress
status_change
in_progress → blocked
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] Sub-agent rechecked PR #13628; a new dashboard CI run is in progress after DeepSource failures.
status_change
blocked → completed
status_change
completed → blocked
status_change
blocked → completed
status_change
completed → blocked
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] Fixed DeepSource JS finding on PR #13628; pushed eae7f4648c and CI reran.
subagent_spawned
spawn claim: fix dashboard CI timeout
status_change
blocked → in_progress
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] spawn blocked: native subagents unavailable (no allowed agent IDs)
failed
lease expired — re-queued for retry
in_progress → queued
status_change
queued → blocked
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] Investigated dashboard CI timeout; identified failure as pre-existing ticket-attachment test suite behavior, no validated fix committed.
progress
Diagnosed repeated dashboard CI/DeepSource failures as Vitest forceExit terminating before v8 wrote coverage/lcov.info (also failing on main). Pushed 7da6cfb6ae to make forceExit false under CI; focused coverage run passed and produced lcov; dashboard lint passed with 3 unrelated pre-existing warnings. Awaiting PR #13628 CI rerun.
subagent_spawned
spawn claim: Diagnose and fix PR #13628 dashboard test hang
status_change
blocked → in_progress
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] ACP Kimi agent is forbidden by runtime policy; no child work dispatched.
subagent_spawned
spawn claim: Diagnose and fix PR #13628 dashboard test hang
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] diagnosed original CI failure: dashboard test runner timeout/coverage artifact behavior; existing fix commit 7da6cfb6ae reportedly pushed and needs CI verification
subagent_spawned
spawn claim: fix-pr-13628-unit-tests
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
subagent_completed
subagent done: TASK_COMPLETE: Added RemoveTicketAttachment mocks to four affected dashboard tests; all 52 focused tests and lint pass locally, commit 78e3c6dc56 pushed to PR #13628; CI rerunning.
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] failed: AcpRuntimeError: Permission prompt unavailable in non-interactive mode
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
progress
DeepSource test coverage identified three uncovered lines in the new KORE SOC query module. Removed the test-only mock so KoreCrossSiteSocPanel tests execute the generated GraphQL document; focused 8-test coverage run reports 100% on the query module. Biome check and diff check pass. Pushed 3f30865518; CI and DeepSource rerunning.
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] completed without change; parent verified and fixed the hoisted Vitest mock at cfe9ec7e1a
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
status_change
in_progress → blocked
status_change
blocked → completed