docs: la route de push réelle, et ce qui distingue ce qui tient de ce qui s'érode
CARTOGRAPHIE DES REMOTES CORRIGÉE, et elle était fausse sur deux points dont un bloquait tout push. `gitea-lan` = 192.168.1.113 est la SEULE route SSH — le port 22 de git.etm-powersync.fr est filtré — et le même Gitea sert les deux noms : origin (HTTPS, qui n'authentifie pas) et origin-ssh désignent LE MÊME dépôt. Surtout : « gitea-lan = miroir public GPL, ne jamais y pousser » était faux. Le remote etm-public pointe sur powersync-energy-plugin-etm.git — sans le préfixe etm- — et ce dépôt N'EXISTE PAS : Gitea répond « Cannot find repository ». Un push y aurait échoué, pas publié. La prudence était donc fondée sur une cartographie inexacte, et elle interdisait la seule route disponible. Reste vrai : la publication du miroir public est un geste manuel de Patrick. Et la vérification d'ascendance avant push est consignée comme obligatoire — c'est ce qui distingue une avance rapide d'un écrasement. 61 commits poussés vers origin-ssh, ascendance vérifiée avant et relecture après : plus rien en local seulement. ET LA LEÇON DE LA SEMAINE, en section propre : la différence entre ce qui tient et ce qui s'érode n'a jamais été la qualité de l'argument, c'est de savoir s'il existe une machine qui le rejoue. Six cas de la semaine en regard — la table d'état qui déclarait absents trois mécanismes testés, la table de traçabilité qui nommait huit tests inexistants, la promesse de recréation jamais exercée, ECS-111 décrit et jamais corrigé, l'absence de draw.authorisedW défendue en prose à trois endroits — contre ce qu'un générateur, un test ou un refus RPC a tenu. Avec son corollaire, éprouvé lui aussi : un garde-fou qu'on n'a jamais vu échouer ne protège rien. Tous les tests d'invariant de la semaine ont été vérifiés échouant avant d'être déclarés prêts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015F7G5VeaPVSMeVNjiGj36p
This commit is contained in:
parent
970a7de531
commit
c58ab9663a
54
AGENTS.md
54
AGENTS.md
@ -476,10 +476,31 @@ commutation ». L'absence y porte, parce que la présence l'accompagne.
|
||||
> `sudo journalctl` dans son helper `logs()`, celui qu'un opérateur lance pendant un essai —
|
||||
> corrigé. Sa ligne 51, elle, était déjà juste : le document se contredisait.
|
||||
|
||||
**Remotes git** :
|
||||
- `origin` (`https://git.etm-powersync.fr/...`) = remote de travail — push normal
|
||||
- `etm-public` (`gitea-lan:...powersync-energy-plugin-etm`) = miroir public GPL → push **MANUEL par Patrick uniquement** (`sync-public.sh`)
|
||||
- `etm-pro` = reliquat historique — ne pas utiliser, cartographie à clarifier
|
||||
**Remotes git — cartographie VÉRIFIÉE le 2026-08-30** (la précédente était fausse sur deux
|
||||
points, et l'un d'eux aurait fait échouer tout push) :
|
||||
|
||||
| Remote | URL | État |
|
||||
|---|---|---|
|
||||
| `origin` | `https://git.etm-powersync.fr/ETM-Schurig/etm-powersync-energy-plugin-etm.git` | dépôt de travail, mais **l'HTTPS n'authentifie pas** |
|
||||
| **`origin-ssh`** | `gitea-lan:ETM-Schurig/etm-powersync-energy-plugin-etm.git` | **LE MÊME dépôt, par SSH — c'est la route qui marche** |
|
||||
| `etm-public` | `gitea-lan:ETM-Schurig/powersync-energy-plugin-etm.git` | ⚠️ **le dépôt N'EXISTE PAS** — `Cannot find repository` |
|
||||
| `etm-pro` | `gitea-lan:...-etmpro.git` | reliquat historique — ne pas utiliser |
|
||||
|
||||
**Pousser : `git push origin-ssh feature/beta-rulebased`.**
|
||||
|
||||
> **`gitea-lan` = `192.168.1.113`**, et c'est la **seule route SSH qui fonctionne** : le port 22
|
||||
> de `git.etm-powersync.fr` est filtré. Le même Gitea sert les deux noms — d'où le fait qu'un
|
||||
> `origin` en HTTPS et un `origin-ssh` en SSH désignent **le même dépôt**, pas deux.
|
||||
>
|
||||
> **Ce qui était faux avant** : « `gitea-lan` = miroir public GPL, ne jamais pousser
|
||||
> directement ». Le chemin `powersync-energy-plugin-etm.git` (sans le préfixe `etm-`) ne
|
||||
> correspond à **aucun dépôt** — un push y aurait échoué, pas publié. La prudence était donc
|
||||
> fondée sur une cartographie inexacte, et elle bloquait la seule route disponible.
|
||||
>
|
||||
> **Ce qui reste vrai** : la publication du miroir public GPL est un geste **manuel de
|
||||
> Patrick** (`sync-public.sh`). Vérifier l'ascendance avant tout push
|
||||
> (`git merge-base --is-ancestor <distant> HEAD`) : c'est ce qui distingue une avance rapide
|
||||
> d'un écrasement.
|
||||
|
||||
---
|
||||
|
||||
@ -792,6 +813,31 @@ Règles absolues :
|
||||
absent = aucun cycle ; `budget` absent = planification suspendue. Un zéro publié se lirait
|
||||
« exécuté, rien à faire ».
|
||||
|
||||
## CE QUI TIENT ET CE QUI S'ÉRODE
|
||||
|
||||
**La différence n'a jamais été la qualité de l'argument — c'est de savoir s'il existe une machine
|
||||
qui le rejoue.**
|
||||
|
||||
Une semaine d'août 2026 l'a montré six fois, et toujours dans le même sens : les décisions bien
|
||||
raisonnées **et non exécutables** ont dérivé sans bruit, celles qu'un programme rejouait ont tenu.
|
||||
|
||||
| Ce qui a dérivé | Ce qui a tenu |
|
||||
|---|---|
|
||||
| la table d'état de `spec_ecs.md` §1 — écrite à la main, déclarait ECS-410/411/412 « absents » alors qu'ils étaient testés | l'index des règles, **généré**, qui casse sur un orphelin |
|
||||
| la table §9 « Traçabilité » — nommait **huit tests qui n'ont jamais existé** | `ci-quality.sh`, qui régénère et refuse |
|
||||
| « l'entrée supprimée sera recréée » — écrit au brief, **faux**, jamais exercé | `testDeletedEvChargerConfigComesBack`, vérifié échouant |
|
||||
| `ECS-111` — défaut connu, décrit dans la spec, **jamais corrigé pendant des mois** | le test qui fige la charge, vérifié échouant |
|
||||
| l'absence de `draw.authorisedW` — défendue en prose à **trois** endroits | `testLoadTelemetryRpc`, qui casse si on ajoute le champ |
|
||||
| `rankOrigin` « auto » et la précédence des motifs, laissés à déduire de chaque côté | la règle écrite **une fois**, côté moteur, et le refus RPC qui l'applique |
|
||||
|
||||
**La règle pratique qui en sort** : quand une décision est prise, demander *quelle machine la
|
||||
rejouera* — un test, un garde-fou de générateur, un refus à la frontière RPC. S'il n'y en a
|
||||
aucune, la décision est une intention, et elle se périmera à la vitesse du code qu'elle décrit.
|
||||
|
||||
> **Corollaire, éprouvé lui aussi** : un garde-fou qu'on n'a **jamais vu échouer** ne protège
|
||||
> rien. Chaque test d'invariant de cette semaine a été **vérifié échouant** avant d'être déclaré
|
||||
> prêt — c'est la seule façon de savoir qu'il regarde ce qu'on croit.
|
||||
|
||||
## RÉPONSES FIGÉES (ne plus poser ces questions)
|
||||
|
||||
- Plages HC/HP et tarifs : **configuration JSON**, jamais hardcodé. Prévoir Tempo
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user