diff --git a/AGENTS.md b/AGENTS.md index e5fb8fb..6da7b7b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,7 +17,8 @@ vers un gestionnaire d'énergie complet (EV, ECS, PAC SG-Ready, batterie). | 2 — design arbitre validé | ✅ FAITE | `074fa71` | | 3a — structs protocole + interfaces | ✅ FAITE | `4ae1939` | | 3b — EnergyArbitrator + scheduler + adapter | ✅ FAITE — iso-fonctionnalité prouvée | `5f49e4c`, `d8ebd65`, `[3b-iv]` | -| 3c — EcsRelayAdapter + waterfall ECS | 🔄 EN COURS | (wip) | +| 3c — EcsRelayAdapter + waterfall ECS | ✅ FAITE — suite 18/18 + charging 46/46 | `6298d5d`→`54ba229` | +| 3e — SgReadyAdapter | ⏳ À VENIR (plan en discussion) | — | **Détail 3b** : - `EnergyArbitrator : public SmartChargingManager` — justification dans `## DÉCISIONS DE DESIGN` @@ -37,9 +38,21 @@ vers un gestionnaire d'énergie complet (EV, ECS, PAC SG-Ready, batterie). - **Morceau 2** — `buildContext()` : `SurplusMeter` brut (`exportW = max(0, -meter->currentPower())`), `loads[]` EV + ECS, `SurpusPv` déféré 3d ✅ -**PROCHAINE ACTION — suite 3c** : -- Morceau 3 : waterfall ECS dans `RuleBasedScheduler::getPlan()` (voir PLAN 3C ci-dessous) -- Morceaux 4-7 : voir PLAN 3C +**3c CLÔTURÉE** (commits `6298d5d` waterfall → `54ba229` testMeterSilentFallback) : +- Morceaux 3-7 faits. Waterfall ECS (tri priorité ASC = rang) + dispatch + watchdog L2 + (mode dégradé conservateur, planif suspendue) + degradedMode/notification + tests. +- **Correctif clé** `[3c-3-fix]` : surplus **net signé** (délestage en import) + **clamp + lock-aware** `minStage/maxStage` (protection compresseur) ; **seam de temps unifié** + (`now=ctx.timestamp`, `lockWindow()` source unique) ; watchdog injectable + (`recordMeterUpdate`/`evaluateMeterFreshness`, déclencheurs sous `#ifndef ENERGY_SIMULATION`). +- Tests : `testEcsSurplusPV` (4 régimes) + `testMeterSilentFallback` (stabilité + reprise). + Suite simulation **18/18**, charging **46/46**, plugin prod 0/0. +- **arm64 cross : NON vérifié dans le sandbox dev** (pas de toolchain/Qt6-aarch64/docker) + → relève de l'infra de build CI (`etm-powersync-deploy`). À confirmer là-bas. + +**PROCHAINE ACTION** : 3e — `SgReadyAdapter` (plan en discussion, validation avant code). +Puis plugin device Waveshare D8 (séparé, sous l'adaptateur). 3d (SocketScheduler) et +3f (BatteryAdapter) restent planifiés. **Remotes git** : - `origin` (`https://git.etm-powersync.fr/...`) = remote de travail — push normal