Fenetre d etablissement : ne plus decider sur les mesures du transitoire
A la fermeture du contacteur, PV, import et courant batterie ne decrivent aucun regime permanent pendant ~150 s (mesure du 31/08). La boucle de 30 s y prenait cinq decisions, et la moyenne PV 10 min en gardait la trace dix minutes de plus -- le systeme lisait "plus de soleil", en concluait qu il avait besoin du reseau, et confirmait sa propre premisse. Aucun seuil nouveau : le systeme publiait deja l horodatage de la transition et personne ne le lisait. Pendant la fenetre, on ne demarre pas et on ne laisse pas une charge s arreter sur ces mesures ; les step-down restent libres. Deux asymetries voulues : la fenetre ne s ouvre qu a l ARRIVEE du reseau (a sa disparition les onduleurs reprennent tout, les gardes doivent agir plus vite), et elle suspend le confort, jamais le risque. Golden 42 -> 48, chaque cas apparie a son contrefactuel hors fenetre. Mutation : gridSettling force a false -> 2 echecs cibles, restauration -> 48/48. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -563,8 +563,17 @@ const batteryAssistSolarHoldOk =
|
||||
// =====================================================
|
||||
// START / HOLD CONDITIONS
|
||||
// =====================================================
|
||||
// FENETRE D'ETABLISSEMENT (31/08/2026) — cf. WINDOWS_SOURCEV2 pour la mesure.
|
||||
// Pendant les ~150 s qui suivent l'arrivee du reseau, PV et courant batterie ne
|
||||
// mesurent rien d'exploitable. On NE DEMARRE PAS sur ces valeurs, et on ne
|
||||
// laisse pas une charge en cours s'arreter a cause d'elles. Les gardes de
|
||||
// securite (commonSafety*, planchers SOC, surcharge, pas de tampon) restent
|
||||
// evaluees normalement : c'est le risque qui prime, jamais le confort.
|
||||
const gridSettling = derived.gridSettling === true;
|
||||
|
||||
const rawSolarStartOk =
|
||||
(context.sourceMode === 'solar_only' || context.sourceMode === 'solar_potential') &&
|
||||
!gridSettling &&
|
||||
commonSafetyStartOk &&
|
||||
parsed.soc >= effectiveSocStartFloor &&
|
||||
parsed.batteryCurrentA >= profileBatteryDischargeFloorA &&
|
||||
@@ -580,8 +589,12 @@ const rawSolarHoldOk =
|
||||
(context.sourceMode === 'solar_only' || context.sourceMode === 'solar_potential') &&
|
||||
commonSafetyHoldOk &&
|
||||
parsed.soc >= effectiveSocHoldFloor &&
|
||||
parsed.batteryCurrentA >= profileBatteryDischargeFloorA &&
|
||||
(
|
||||
gridSettling ||
|
||||
parsed.batteryCurrentA >= profileBatteryDischargeFloorA
|
||||
) &&
|
||||
(
|
||||
gridSettling ||
|
||||
parsed.pvPowerW >= params.pvHoldMinW ||
|
||||
cloudToleranceOk
|
||||
);
|
||||
@@ -667,9 +680,13 @@ const probeSuccessNow =
|
||||
parsed.batteryCurrentA >= Math.min(0, batteryDischargeSoftDynamicA)
|
||||
);
|
||||
|
||||
// Une sonde ne peut pas etre declaree ratee sur une mesure prise pendant
|
||||
// l'etablissement : c'est le reseau qui masque la production, pas la sonde qui
|
||||
// echoue. On differe le verdict, on ne l'invente pas.
|
||||
const probeFailedNow =
|
||||
probeModeActive &&
|
||||
probeElapsedReached &&
|
||||
!gridSettling &&
|
||||
!probeSuccessNow;
|
||||
|
||||
// =====================================================
|
||||
@@ -689,7 +706,10 @@ const stepUpByForecastMode =
|
||||
derived.projectedEndSocAfterCharge >= (derived.endDayGuardSoc - 5) &&
|
||||
cloudToleranceOk;
|
||||
|
||||
// Pas de montee en courant sur des mesures d'etablissement. La descente, elle,
|
||||
// n'est pas bridee : c'est la direction sure.
|
||||
const solarShouldStepUp =
|
||||
!gridSettling &&
|
||||
lifecycle.currentCooldownElapsed &&
|
||||
derived.currentReferenceA < derived.physicalCapA &&
|
||||
derived.physicalCapA >= params.currentMinA &&
|
||||
@@ -906,6 +926,8 @@ return [{
|
||||
|
||||
solarStartOk,
|
||||
solarHoldOk,
|
||||
gridSettling,
|
||||
gridTransitionAgeSec: parsed.gridTransitionAgeSec,
|
||||
gridStartOk,
|
||||
gridHoldOk,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user