docs(optimiseur): annexe E — chemin, périmètre et codes de l'optimiseur de référence (brief 4 T7)

tools/ref-optimizer → tools/etm-powersync-ref-optimizer ; ce qu'il reproduit (passe confort)
et ce que le contexte 1.1 ne lui permet pas de reproduire ; codes émissibles seulement.
tools/README.md : renvoi vers son README, règle de comparaison d'une action state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-17 13:28:34 +02:00
parent 644741b0ef
commit f8333f42f6
2 changed files with 21 additions and 4 deletions

View File

@ -596,9 +596,21 @@ But : comparer des optimiseurs **sur les mêmes entrées** et rejouer un inciden
## Annexe E — Optimiseur de référence
`tools/ref-optimizer/` : serveur Python minimal (bibliothèque standard seule) conforme 1.1,
répondant un plan à un créneau qui reproduit le waterfall rule-based. Usages : test de bout
en bout du `SocketScheduler` ; point de comparaison du banc ; exemple communautaire.
`tools/etm-powersync-ref-optimizer/` : serveur Python minimal (bibliothèque standard seule)
conforme 1.1, `unix:///run/powersync/optimizer.sock` par défaut, `tcp://` accepté ; répondant un
plan à un créneau qui reproduit le waterfall rule-based. Usages : test de bout en bout du
`SocketScheduler` (suite `etm-powersync-refoptimizer`) ; point de comparaison du banc ; exemple
communautaire. Mode d'emploi et modes d'injection de défauts : son `README.md`.
- Il ne lit **que** le contexte `GetPlan` (aucune connexion sortante, aucun fichier hors le token).
- Il reproduit la **passe confort** : tri (rang, identifiant), surplus net signé, recrédit de la
consommation courante, réserve de stockage, plancher, plafond, verrous, mapping SG-Ready avec
hystérésis. Il ne reproduit pas ce que le contexte 1.1 ne porte pas : passe éco (avancement
livré), dérogations, autorisation de soutirage, paliers d'un `relay-router`, refus de commande,
proxy VE.
- Il n'émet que les codes `reasonCode` qu'un optimiseur peut émettre, avec leurs seules clés
documentées ; un code du rule-based hors de cette liste (verrou, réserve…) part en
`OPTIMIZER_DECISION`, le mécanisme nommé dans `reason`.
## Annexe F — Champs réservés (non normatifs)

View File

@ -1,7 +1,9 @@
# tools/
Outils de développement et d'exploitation du plugin. Ce fichier ne décrit que
`etm-powersync-trace-replay` ; les autres scripts portent leur mode d'emploi en en-tête.
`etm-powersync-trace-replay` ; l'optimiseur de référence a le sien
(`etm-powersync-ref-optimizer/README.md`), les autres scripts portent leur mode d'emploi en
en-tête.
## `etm-powersync-trace-replay` — rejouer des traces de décision
@ -28,6 +30,9 @@ plan enregistré.
- **Sorties** : `<trace>.replay-<horodatage>.ndjson` (une ligne par requête rejouée : réponse,
latence, écarts) et `….summary.txt`, à côté de la trace. Jamais d'écrasement (`--out` vers un
fichier existant est refusé).
- **Comparaison** : charge, kind, puissance d'une consigne (`setpoint`, à `--tolerance-w` près),
état d'une action `state` — la puissance d'une action `state` n'est pas comparée (le §6 ne la
définit pas, et le plan du rule-based tracé la porte).
- **Résumé** : requêtes rejouées, taux d'abstention, `computeMs` médian et max (s'il est fourni
dans `diagnostics`), cycles non comparables (réponse enregistrée en erreur), cycles dont les
actions du créneau courant diffèrent du plan enregistré, avec la liste.