La fiche openmeteo n'avait que son bloc de référence généré. Elle porte
maintenant la prose, en FR, DE et EN : ajout du site et des plans PV (avec
l'avertissement azimut 0 = nord), « une prévision, jamais une mesure » (la
conversion ignore ombrage, encrassement et écrêtage : la prévision est
optimiste), rafraîchissement et relance, comportement sans internet, ce qui
quitte la box, usage commercial et attribution CC-BY.
Chaque affirmation a été vérifiée dans le code de feature/beta-forecast
(etm16) : coordonnées arrondies à deux décimales, altitude envoyée seulement
si renseignée, puissance crête et rendement jamais transmis. La prose reste
juste aussi pour master, dont la CI génère le bloc de référence.
Accroche corrigée dans i18n/devices.yaml : le meta.json annonce « current
weather data », alors que le plugin publie surtout des prévisions.
Supprimé : la ligne commentée `openmeteo, channel: nightly` de
PORTING_STATUS.yaml, un vestige qui contredisait l'entrée active.
TODO : noté que la référence publiée retarde sur le paquet testing (master
d'etm-powersync-plugins a 39 commits de retard sur feature/beta-forecast).
Vérifié dans une copie, à partir des branches par défaut des 5 dépôts de
plugins comme en CI : génération, --check et mkdocs build --strict passent.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
validate_entries() arrête la génération quand une entrée de PORTING_STATUS d'un
canal autre que nightly n'a pas son integrationplugin*.json dans --src. L'entrée
waveshare-relay-d8 était en `channel: testing` pour un plugin qui n'a JAMAIS été
livré : la CI a donc échoué chaque nuit du 2026-08-02 au 2026-10-13, et le site de
doc est resté gelé au build du 1er août. Dix semaines, en silence.
Le garde-fou avait raison. C'est l'entrée qui était fausse, pas le contrôle — d'où
le choix de retirer l'entrée plutôt que de la basculer en nightly (ce qui aurait
publié « portage en cours » là où il n'y a pas de portage) ou d'assouplir
validate_entries() (ce qui aurait échangé un échec visible contre une doc
silencieusement incomplète).
Retirés : l'entrée de PORTING_STATUS — remplacée par le motif complet, sur place,
pour que personne ne la réintroduise sans savoir — et les trois fiches
smart/waveshare.{md,de.md,en.md}. Le reste des mentions vivait dans du contenu
généré (SUMMARY.md, index de catégorie, matrice de compatibilité) et a disparu à
la régénération.
Au passage, deux choses trouvées en nettoyant :
- `appareils/index.md` citait « SmartDevices — Waveshare » comme exemple de la
catégorie ; remplacé par Shelly, Tasmota, GPIO, qui sont en canal stable.
- cette même page n'avait AUCUNE variante traduite : une entrée de nav de premier
niveau servie en français sous /de/ et /en/. Traduite.
Chaîne CI rejouée en entier dans l'ordre, après correction : génération appareils
OK, génération API OK, `mkdocs build --strict` sans aucun avertissement,
contrôle d'idempotence OK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Correction 2 — canal par défaut selon l'origine :
- Tous les plugins origin:nymea passent de nightly→stable (upstream redistribué tel quel)
- Plugins ETM conservent leur canal manuel (eastron=stable, abb-b2x/abb-terra/waveshare=testing)
- Ajout name: sur 5 plugins sans meta.json (v2xeamberelectric→Amber Electric, mtec,
genericenergy, genericheatingcooling, genericcar)
Correction 3 — Keba fork ETM :
- repo: etm-powersync-plugins (fork corrigé KC-P30), channel: testing, origin: etm
- La version nymea-plugins (bugguée) n'est plus déclarée → écartée de facto
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>