BOLT-1656: KORE control drawer operator UX improvements
completedAgent: richie-engineer
Priority: 0
Branch:
winston/bolt-1656-control-drawer-operator-uxPR: #13907
Linear: BOLT-1656
Dashboard-only operator UX pass requested by Richie 2026-07-30. Add projected end-SOC/delivered-energy for discharge, collapsed advanced charge limit and manual-discharge rate controls, optional 5h30 overnight charge preset, and descriptor-driven smooth-discharge reserve bounds. Do not expose smooth reserve >20% until adapter PR #13903 merges. Branch winston/bolt-1656-control-drawer-operator-ux.
Event Timeline
created
failed
lease expired — re-queued for retry
in_progress → queued
status_change
queued → in_progress
progress
Implemented targeted review fixes locally: smooth projection now clamps at rated max, manual kW is inline-only for Manual power, and optional charge limit uses a 250 kW placeholder.
progress
Pushed review fixes in b634ee4838: rate-limit smooth end-SOC projection, inline Manual-only rate control, and 250 kW placeholder for optional charge limit. Focused 29-test drawer suite and dashboard lint pass; CI restarted.
progress
CI Type Check caught a local API gap: Edges NumberField does not currently expose placeholder. Adding typed passthrough and rerunning local lint/tests/typecheck now.
failed
lease expired — re-queued for retry
in_progress → queued
progress
Pushed CI repair 4225497f20: added NumberField placeholder support so the optional 250 kW cue typechecks. Targeted Edges NumberField lint, dashboard lint, and focused drawer tests pass; dashboard typecheck remained blocked by pre-existing generated package errors after confirming the placeholder API is present in the built declaration.
progress
CI surfaced an existing @texturehq/edges barrel ordering rule triggered by the package change. Added a targeted organizeImports suppression preserving the intentional public-API grouping; Edges lint, dashboard lint, and focused 29-test drawer suite pass. Pushed f1a8939376; monitoring the fresh CI run.
subagent_spawned
spawn claim: claude-fix-ci-pr-13907
status_change
queued → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] claude sub-agent 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
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
progress
Richie left a fresh review on PR #13907 (4823375457); fetching the exact thread and addressing it now.
progress
Addressed Richie review 4823375457 in fa78ca197c: smooth reserve range now 20–90 (gated by PR #13903, already approved/green); Manual power hidden from KORE UI while command support remains; estimate displays rounded kW rate. Dashboard lint and 30 focused drawer tests pass; dashboard typecheck remains locally blocked by stale workspace declarations plus unrelated generated Monitor Editor/ChartContainer errors. Fresh CI is running.
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
progress
DeepSource caught JS-0117 in the new reserve-range test (regex missing Unicode flag). Replaced it with exact text matching, reran dashboard lint + 30 focused drawer tests, and pushed 03c5807934. Fresh CI/DeepSource run is watching.
subagent_spawned
spawn claim: CI investigation for PR 13907
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
subagent_spawned
spawn claim: Fix CI PR #13907 Round 5
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
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] abandoned — wedged after multiple lease expirations
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] claude sub-agent failed due to missing permission in non-interactive mode.
status_change
failed → in_progress
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → blocked
subagent_spawned
spawn claim: Fix CI PR #13907 (Round 6)
status_change
blocked → in_progress
subagent_completed
subagent done: [NO_TASK_COMPLETE_MARKER] [NO_TASK_COMPLETE_MARKER] Subagent failed to report concrete progress
subagent_spawned
spawn claim: Fix CI PR #13907 (Round 7)
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] Abandoned due to repeated sub-agent failures and lease expiry.
failed
lease expired — max retries reached, marking failed (poison pill)
in_progress → failed
status_change
failed → in_progress
progress
Merged origin/main into PR #13907 branch; main contained the missing @texturehq/edges-blocks-data path mapping fix for packages/edges-blocks-entity tsconfig.json plus Vercel deploy/turbo DTS race fixes. Waiting for new CI run to confirm green.
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
subagent_spawned
spawn claim: Fix CI PR #13907 (Round 8)
status_change
failed → in_progress
status_change
in_progress → blocked
subagent_completed
subagent done: TASK_COMPLETE: Fix CI PR #13907 (Round 8) completed. CI is green and awaiting review.
status_change
blocked → completed