Context
Split out from PR #385 (LOAD_SUPPORT shadow-price discharge gate, closing #384) during code review. The CHANGELOG and docs/agents/bess-knowledge.md entries for #385 originally cited #276 as the tracked follow-up for a documented residual limitation, but #276 is closed and is about an unrelated topic (DP grid-discretization/interpolation error from #275, concluded "financially optimal" per the #275/#276/#285 investigation — see PR #286). This issue is the correct tracking home for the #385-specific residual instead.
The residual limitation
docs/agents/bess-knowledge.md's "Known limitation, not yet fixed" note (added by #385): during a sustained overnight LOAD_SUPPORT drawdown, shadow_price tends to sit within a cent or two of buy_price for the entire stretch — close to the defining condition for choosing LOAD_SUPPORT at all — so intra_period_discharge_gate's strict inequality (buy_price × efficiency_discharge >= shadow_price) rarely opens in that regime. Small, real overnight grid imports (observed: 0.1-0.2 kWh/night, a few tens of cents) can still occur even with ample SOE headroom above the floor.
#385 explicitly rejected widening the gate's tolerance to paper over this — the gap between "genuinely arbitrary near-tie" (safe to open) and "real reserve correctly protected for a meaningfully pricier future peak" (must stay closed) is not currently distinguishable from the gate alone.
What this issue proposes investigating
Whether the near-tie is itself a symptom of DP value-function granularity/precision near the LOAD_SUPPORT decision boundary, or a fundamentally separate question requiring a different signal than shadow price alone to disambiguate "arbitrary tie" from "real future value." No prototype yet — filed so the residual isn't lost, not because a specific fix direction is proposed.
Note on the originating worked example
The specific worked example used during #385's investigation (Frank's debug bundle, period 6 on 2026-07-22 01:30: DP wrote a 9% discharge-rate ceiling, but the reported battery_discharged for that period was 0.2 kWh — ~1.8x what a hard 9% power cap should have permitted) turned out likely confounded by the sensor_collector.py runtime measurement-lag bug fixed in #387/#390. #387's fix only corrects forward (post-merge) collection via a new live per-minute power-sample buffer — it cannot retroactively reprocess that historical bundle, so this specific numeric discrepancy cannot be conclusively re-derived as clean or artifactual after the fact. It should not be relied on as evidence for or against this issue's residual gap; the residual gap itself is independently supported by the DP-replay evidence in #385 (Frank's actual price/consumption/solar history, not his disputed battery_discharged counter reading, replayed through the real optimize_battery_schedule + _apply_period_schedule path) and the architectural reasoning above.
Related
Context
Split out from PR #385 (LOAD_SUPPORT shadow-price discharge gate, closing #384) during code review. The CHANGELOG and
docs/agents/bess-knowledge.mdentries for #385 originally cited #276 as the tracked follow-up for a documented residual limitation, but #276 is closed and is about an unrelated topic (DP grid-discretization/interpolation error from #275, concluded "financially optimal" per the #275/#276/#285 investigation — see PR #286). This issue is the correct tracking home for the #385-specific residual instead.The residual limitation
docs/agents/bess-knowledge.md's "Known limitation, not yet fixed" note (added by #385): during a sustained overnightLOAD_SUPPORTdrawdown,shadow_pricetends to sit within a cent or two ofbuy_pricefor the entire stretch — close to the defining condition for choosingLOAD_SUPPORTat all — sointra_period_discharge_gate's strict inequality (buy_price × efficiency_discharge >= shadow_price) rarely opens in that regime. Small, real overnight grid imports (observed: 0.1-0.2 kWh/night, a few tens of cents) can still occur even with ample SOE headroom above the floor.#385 explicitly rejected widening the gate's tolerance to paper over this — the gap between "genuinely arbitrary near-tie" (safe to open) and "real reserve correctly protected for a meaningfully pricier future peak" (must stay closed) is not currently distinguishable from the gate alone.
What this issue proposes investigating
Whether the near-tie is itself a symptom of DP value-function granularity/precision near the LOAD_SUPPORT decision boundary, or a fundamentally separate question requiring a different signal than shadow price alone to disambiguate "arbitrary tie" from "real future value." No prototype yet — filed so the residual isn't lost, not because a specific fix direction is proposed.
Note on the originating worked example
The specific worked example used during #385's investigation (Frank's debug bundle, period 6 on 2026-07-22 01:30: DP wrote a 9% discharge-rate ceiling, but the reported
battery_dischargedfor that period was 0.2 kWh — ~1.8x what a hard 9% power cap should have permitted) turned out likely confounded by thesensor_collector.pyruntime measurement-lag bug fixed in #387/#390. #387's fix only corrects forward (post-merge) collection via a new live per-minute power-sample buffer — it cannot retroactively reprocess that historical bundle, so this specific numeric discrepancy cannot be conclusively re-derived as clean or artifactual after the fact. It should not be relied on as evidence for or against this issue's residual gap; the residual gap itself is independently supported by the DP-replay evidence in #385 (Frank's actual price/consumption/solar history, not his disputedbattery_dischargedcounter reading, replayed through the realoptimize_battery_schedule+_apply_period_schedulepath) and the architectural reasoning above.Related