On a gateway where planner.enabled: true but buildMPC skips construction (no controllable battery capacity, or no price provider), the UI still offers every planner_* mode in the mode selector. Selecting one produces:
- control loop:
mpc plan stale — falling back to self_consumption (logged once at boot, invisible in the UI);
/api/status: mode: planner_passive_arbitrage, plan_stale: true, empty dispatch — forever;
- Plan view: the Manual brief, whose copy says "Choose a planning strategy to create a schedule" and "Select a planning strategy to enable it" — to a user who just did exactly that.
Observed on a real site: single read-only driver (no battery_capacity_wh, so the controllable pool is empty), planner configured and price data flowing. The user's question was literally "it says Manual and I cannot get it to do a planning — why?", and nothing on screen could answer it.
Either the planner modes should be disabled in the selector with the reason when the planner service is unavailable, or the Manual brief needs a variant for "a planner mode is selected but the planner cannot run" that states the actual blocker. Pairs with the /api/mpc/diagnose reason issue — with a reason code available, the brief can phrase it.
🤖 Diagnosed with Claude Code
On a gateway where
planner.enabled: truebutbuildMPCskips construction (no controllable battery capacity, or no price provider), the UI still offers everyplanner_*mode in the mode selector. Selecting one produces:mpc plan stale — falling back to self_consumption(logged once at boot, invisible in the UI);/api/status:mode: planner_passive_arbitrage,plan_stale: true, empty dispatch — forever;Observed on a real site: single read-only driver (no
battery_capacity_wh, so the controllable pool is empty), planner configured and price data flowing. The user's question was literally "it says Manual and I cannot get it to do a planning — why?", and nothing on screen could answer it.Either the planner modes should be disabled in the selector with the reason when the planner service is unavailable, or the Manual brief needs a variant for "a planner mode is selected but the planner cannot run" that states the actual blocker. Pairs with the
/api/mpc/diagnosereason issue — with a reason code available, the brief can phrase it.🤖 Diagnosed with Claude Code