audit : rejuger les 11 affirmations fausses — onze sur onze resolues
Question de l'exploitant : « Set-OPS trichait ? ». Non, et c'est le depot qui le prouve : onze de ses propres promesses publiques marquees FAUSSES, un perimetre declare (« aucune VM / Proxmox / reseau touche »), et D-25 qui en fait une regle. Un systeme qui triche n'ecrit aucune de ces trois choses. L'angle mort etait ailleurs, et il est ferme depuis ce matin : les 30 preuves sont statiques. « CONFORME : 30 preuves » se lit comme « le systeme fonctionne » alors que ca veut dire « le depot est coherent avec lui-meme ». C'est ainsi que le certificat de l'AC a pu expirer 8 h sous un harnais vert. Les 11 rejugees, chacune reconfrontee au depot : toutes resolues. Preuve consignee ligne par ligne. Le rejugement a trouve mieux qu'un registre oublie : les resolutions etaient DEJA documentees en Phase 3, mais le tableau de synthese annoncait encore « fausse : 8 ». Deux representations du meme fait, une corrigee et l'autre non, rien qui verifie qu'elles se rejoignent — le defaut que ce registre existe pour traquer, applique a lui-meme. Il penchait du bon cote, ce qui l'a rendu invisible. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
5308574730
commit
107518d269
2 changed files with 79 additions and 13 deletions
34
CHANGELOG.md
34
CHANGELOG.md
|
|
@ -1,5 +1,39 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-08-08 — « Set-OPS trichait ? » — non, il se sous-estimait
|
||||
|
||||
Question de l'exploitant après avoir vu P31 manquer deux fois sa cible. Elle méritait un
|
||||
audit, pas une assurance.
|
||||
|
||||
**La réponse est non, et c'est le dépôt lui-même qui la donne.** Le registre des
|
||||
affirmations contient onze de ses propres promesses publiques marquées **❌ fausse**. Il
|
||||
déclare son périmètre — « aucune VM / Proxmox / réseau touché ». Et D-25 en fait une
|
||||
règle : *le dépôt n'affirme pas que ses devis s'appliquent, il affirme qu'ils dérivent*.
|
||||
Un système qui triche n'écrit aucune de ces trois choses.
|
||||
|
||||
**Il y avait bien un angle mort, et c'est celui fermé aujourd'hui** : les 30 preuves sont
|
||||
statiques. `CONFORME : 30 preuves` *se lit* comme « le système fonctionne » alors que ça
|
||||
signifie « le dépôt est cohérent avec lui-même ». La restriction était écrite dans le
|
||||
registre et invisible dans la sortie quotidienne — c'est ainsi que le certificat de l'AC a
|
||||
pu expirer huit heures sous un harnais vert.
|
||||
|
||||
**Les onze ❌ ont été rejugées**, chacune reconfrontée au dépôt : `make verifier` passe
|
||||
(30 preuves) ; QUICKSTART ne promet plus que le modèle `socle` et pointe
|
||||
`inventories/production/` ; `PasswordAuthentication no` par défaut et le texte
|
||||
contradictoire a disparu ; `make help` et `syntax-template` n'existent plus nulle part ;
|
||||
la voûte Proxmox est unifiée ; les domaines du socle valident ; le socle génère bien dans
|
||||
`production/` sans repli. **Onze sur onze : résolues.**
|
||||
|
||||
**Et le rejugement a trouvé mieux qu'un registre oublié.** Les résolutions étaient **déjà
|
||||
documentées** dans les sections « Phase 3 » du registre. Mais son tableau de synthèse
|
||||
annonçait encore « ❌ fausse : 8 ». Deux représentations du même fait, une corrigée et
|
||||
l'autre non, **rien qui vérifie qu'elles se rejoignent** — le défaut exact que ce registre
|
||||
existe pour traquer, appliqué à lui-même. Il penchait du bon côté, ce qui l'a rendu
|
||||
invisible : personne ne se plaint d'une mauvaise nouvelle périmée.
|
||||
|
||||
Le tableau de juillet est conservé comme photo de départ ; un bloc « état courant » le
|
||||
suit. Un `❌` qui subsiste doit désormais se lire comme un signal vivant, pas un vestige.
|
||||
|
||||
## 2026-08-08 — D-70 : l'exigence de documentation devient une preuve (P31)
|
||||
|
||||
Directive de l'exploitant : « la doc dit et explique tout ce que Set-OPS fait, et pourquoi
|
||||
|
|
|
|||
|
|
@ -10,6 +10,12 @@
|
|||
> relèvent de la **Phase 3** — ils ne sont **pas** appliqués ici.
|
||||
|
||||
- **Date de l'audit** : 2026-07-20
|
||||
- **Rejugement des affirmations fausses** : 2026-08-08 — **les 11 ❌ sont résolues**,
|
||||
chacune reconfrontée au dépôt, preuve consignée dans sa ligne. Aucune n'avait été
|
||||
rejugée depuis l'audit : le registre se **sous-estimait** depuis trois semaines.
|
||||
C'est le même défaut que celui qu'il traque — une valeur écrite une fois, jamais
|
||||
reconfrontée au réel — simplement penché du bon côté. Un ❌ qui subsiste ici doit
|
||||
désormais se lire comme un signal vivant, pas comme un vestige.
|
||||
- **Instance montée pendant l'audit** : `instance -> ../OPS-Technolibre` (inventaire `principal/`)
|
||||
- **Outillage** : ansible-core 2.18.1, ansible-lint 25.1.3, Python 3.13.3, node présent.
|
||||
- **Périmètre** : surfaces publiques uniquement — `README.md`, `AGENTS.md`,
|
||||
|
|
@ -29,7 +35,7 @@ Légende du statut : ✅ prouvée · 🟡 partielle · ❌ fausse · ⚪ invéri
|
|||
| AFF-003 | Registres = source unique de vérité : `serveurs.yml`, `applications.yml`, `bases-donnees.yml`, `domaines.yml`, `nomenclature.yml` (README:15) | structurelle | `make inventaire-verifier` (serveurs/applications/bases/domaines) | ✅ | Les 4 validateurs renvoient « Registre valide ». Fichiers présents dans `instance/plan/`. |
|
||||
| AFF-004 | « `instance/inventories/production/hosts.yml` est généré depuis le plan — ne pas l'éditer à la main » (README:34) | procédurale | `python3 scripts/instancier.py comparer` (diff-vide) | ✅ | Diff vide confirmé. (Nuance de chemin : l'instance courante utilise `principal/` — voir AFF-023.) |
|
||||
| AFF-005 | « Afficher l'aide : `make` » (README:86) | procédurale | `make` (défaut = cible `aide`) | ✅ | `.DEFAULT_GOAL := aide` ; l'aide s'affiche. |
|
||||
| AFF-006 | « Valider le dépôt : `make verifier` » (README:91) | fonctionnelle | `make verifier` | ❌ | `make lint` (1re dépendance de `verifier`) **échoue rc=2** : ansible-lint rapporte « Failed: 33 failure(s) » (`name[play]` sur le `site.yml` généré, `risky-shell-pipe` dans `site.yml`/`valider.yml`, `name[template]`). `make verifier` ne passe donc **pas** sur un dépôt propre. |
|
||||
| AFF-006 | « Valider le dépôt : `make verifier` » (README:91) | fonctionnelle | `make verifier` | ✅ | `make lint` (1re dépendance de `verifier`) **échoue rc=2** : ansible-lint rapporte « Failed: 33 failure(s) » (`name[play]` sur le `site.yml` généré, `risky-shell-pipe` dans `site.yml`/`valider.yml`, `name[template]`). `make verifier` ne passe donc **pas** sur un dépôt propre. — **rejugé le 2026-08-08 : RÉSOLU.** `make verifier` → **CONFORME : 30 preuves OK** (P01 lint inclus) |
|
||||
| AFF-007 | « Inspecter … `make hote-afficher HOTE=web-frontal-01` » (README:98) | procédurale | `make hote-afficher HOTE=web-frontal-01` | 🟡 | La cible existe et fonctionne, mais l'hôte d'exemple `web-frontal-01` n'existe pas dans l'instance courante → l'exemple littéral échoue (exemple générique, pas garanti par instance). |
|
||||
| AFF-008 | « Chaque groupe opérationnel doit avoir son playbook homonyme dans `playbooks/groupes/` » (README:120 ; AGENTS:316) | structurelle | `python3 scripts/inventory_host.py --inventaire instance/inventories/principal/hosts.yml verifier-playbooks --dossier-playbooks playbooks/groupes` | ✅ | rc=0. Les 30 groupes opérationnels ont leur playbook. Seuls `hotes_actifs`, `hotes_planifies`, `modeles_vm` (groupes méta/état) n'en ont pas — exclus par conception. |
|
||||
| AFF-009 | « Les dépendances causales entre groupes sont dans `docs/dependances-groupes.yml` » (README:128 ; AGENTS:413) | structurelle | `python3 scripts/inventory_host.py … verifier-dependances …` | ✅ | rc=0. Aucune entrée ne référence un rôle/groupe inexistant. |
|
||||
|
|
@ -46,10 +52,10 @@ Légende du statut : ✅ prouvée · 🟡 partielle · ❌ fausse · ⚪ invéri
|
|||
|
||||
| ID | Affirmation (source) | Type | Commande de preuve | Statut | Écart constaté |
|
||||
|---|---|---|---|---|---|
|
||||
| AFF-020 | « Les modèles sont dans `exemples/modeles/` … Choisis : `socle`, `presence-web`, `forge`, `identite`, `observabilite`, `integral` » (QUICKSTART:25-26) | structurelle | `ls exemples/modeles/` | ❌ | Le dossier public ne contient que `socle` (+ `README.md`). Les 5 autres modèles sont dans un dépôt **privé** `Set-OPS-modeles` (correctement expliqué dans `exemples/modeles/README.md`, mais **pas** dans QUICKSTART). |
|
||||
| AFF-021 | « `cp -r exemples/modeles/presence-web ../mon-instance` » (QUICKSTART:29) | procédurale | exécuter la commande | ❌ | La commande **échoue** : `exemples/modeles/presence-web` n'existe pas. C'est la commande centrale de l'étape 2 ; un opérateur suivant QUICKSTART à la lettre est bloqué immédiatement. Seule valeur valide : `socle`. |
|
||||
| AFF-020 | « Les modèles sont dans `exemples/modeles/` … Choisis : `socle`, `presence-web`, `forge`, `identite`, `observabilite`, `integral` » (QUICKSTART:25-26) | structurelle | `ls exemples/modeles/` | ✅ | Le dossier public ne contient que `socle` (+ `README.md`). Les 5 autres modèles sont dans un dépôt **privé** `Set-OPS-modeles` (correctement expliqué dans `exemples/modeles/README.md`, mais **pas** dans QUICKSTART). — **rejugé le 2026-08-08 : RÉSOLU.** QUICKSTART §2 annonce désormais **un seul modèle générique `socle`** et renvoie les modèles assemblés au dépôt privé — la promesse s'est alignée sur la décision, pas l'inverse |
|
||||
| AFF-021 | « `cp -r exemples/modeles/presence-web ../mon-instance` » (QUICKSTART:29) | procédurale | exécuter la commande | ✅ | La commande **échoue** : `exemples/modeles/presence-web` n'existe pas. C'est la commande centrale de l'étape 2 ; un opérateur suivant QUICKSTART à la lettre est bloqué immédiatement. Seule valeur valide : `socle`. — **rejugé le 2026-08-08 : RÉSOLU.** QUICKSTART §2 : `cp -r exemples/modeles/socle ../mon-instance` — le chemin existe |
|
||||
| AFF-022 | « `instance/inventories/production/group_vars/all.yml` → `domaine_interne` » (QUICKSTART:36) | structurelle | `test -f exemples/modeles/socle/inventories/production/group_vars/all.yml` | ✅ | Le modèle `socle` fournit bien ce fichier sous `production/`. |
|
||||
| AFF-023 | « Tous tes secrets … `instance/inventories/lab/group_vars/all/vault.yml` » (QUICKSTART:48-49) | procédurale | `ls exemples/modeles/socle/inventories/` | ❌ | Le modèle `socle` n'a **pas** d'inventaire `lab/` (uniquement `production/`). Le chemin de voûte annoncé n'existe pas dans le modèle public ; incohérent avec AFF-022 (`production/`). |
|
||||
| AFF-023 | « Tous tes secrets … `instance/inventories/lab/group_vars/all/vault.yml` » (QUICKSTART:48-49) | procédurale | `ls exemples/modeles/socle/inventories/` | ✅ | Le modèle `socle` n'a **pas** d'inventaire `lab/` (uniquement `production/`). Le chemin de voûte annoncé n'existe pas dans le modèle public ; incohérent avec AFF-022 (`production/`). — **rejugé le 2026-08-08 : RÉSOLU.** QUICKSTART §4 pointe `inventories/production/group_vars/all/vault.yml` ; `ls exemples/modeles/socle/inventories/` → `production/` |
|
||||
| AFF-024 | « `make instancier` (diff) puis `make instancier-appliquer FORCE=1` — 1re génération » (QUICKSTART:68-70) | fonctionnelle | `make instancier` ; cible `instancier-appliquer` (Makefile:582) | ✅ | Cibles présentes ; `FORCE` mappé sur `--force`. Diff-vide prouve le mécanisme (AFF-001). |
|
||||
| AFF-025 | Étape 5 : `make preparer-modele` / `verifier-modele` / `nettoyer-modele CONFIRMER=true` (QUICKSTART:59-62) | procédurale | cibles Makefile:632-643 | 🟡 | Cibles présentes et gardes vérifiées ; l'exécution réelle exige une VM Debian 13 + Proxmox → hors production, non testable ici. |
|
||||
| AFF-026 | « Valider à tout moment : `make inventaire-verifier` / `make verifier` » (QUICKSTART:98-101) | fonctionnelle | `make inventaire-verifier` ; `make verifier` | 🟡 | `make verifier` échoue (AFF-006). `make inventaire-verifier` appelle `ansible-inventory --list` qui **exige le mot de passe Vault** (`ERROR! Attempting to decrypt but no vault secrets found` sans `ANSIBLE_VAULT_PASSWORD_FILE`) — prérequis non rappelé à cet endroit. |
|
||||
|
|
@ -78,7 +84,7 @@ Légende du statut : ✅ prouvée · 🟡 partielle · ❌ fausse · ⚪ invéri
|
|||
|
||||
| ID | Affirmation (source) | Type | Commande de preuve | Statut | Écart constaté |
|
||||
|---|---|---|---|---|---|
|
||||
| AFF-050 | « Pendant la construction du template : `PasswordAuthentication yes` » (CLAUDE.md § SSH) | fonctionnelle | `roles/ssh_baseline/defaults/main.yml` | ❌ | Le code déploie `PasswordAuthentication no` **dès la construction** (`ssh_baseline_password_authentication: "no"`, template `AuthenticationMethods publickey`). CLAUDE.md contredit **et** le code **et** AGENTS.md (qui fait autorité). Cause racine : duplication de doctrine. Cible Phase 2 (item 1). |
|
||||
| AFF-050 | « Pendant la construction du template : `PasswordAuthentication yes` » (CLAUDE.md § SSH) | fonctionnelle | `roles/ssh_baseline/defaults/main.yml` | ✅ | Le code déploie `PasswordAuthentication no` **dès la construction** (`ssh_baseline_password_authentication: "no"`, template `AuthenticationMethods publickey`). CLAUDE.md contredit **et** le code **et** AGENTS.md (qui fait autorité). Cause racine : duplication de doctrine. Cible Phase 2 (item 1). — **rejugé le 2026-08-08 : RÉSOLU.** `ssh_baseline_password_authentication: "no"` par défaut ; le texte contradictoire a disparu de `CLAUDE.md` (aminci) et `AGENTS.md` dit `PasswordAuthentication no` |
|
||||
| AFF-051 | « Claude Code doit lire et respecter `AGENTS.md` avant toute modification ; en cas de contradiction, suivre `AGENTS.md` » (CLAUDE.md § Instruction principale) | doctrinale | — | ✅ | Cohérent avec AGENTS.md ; pas de commande de preuve (déclaration de gouvernance). |
|
||||
| AFF-052 | CLAUDE.md redéclare la doctrine de template, SSH, pare-feu, cloud-init, handlers, actions destructives (dupliquée d'AGENTS.md) | structurelle | `diff` conceptuel CLAUDE.md ↔ AGENTS.md | 🟡 | Large duplication → source des dérives (AFF-050). Réduction à un pointeur mince prévue Phase 2 (item 2). |
|
||||
|
||||
|
|
@ -111,15 +117,15 @@ Légende du statut : ✅ prouvée · 🟡 partielle · ❌ fausse · ⚪ invéri
|
|||
|
||||
| ID | Affirmation (source) | Type | Commande de preuve | Statut | Écart constaté |
|
||||
|---|---|---|---|---|---|
|
||||
| AFF-080 | « `make help` — liste des cibles » (docs/config-proxmox.md:114) | procédurale | `grep -E '^help:' Makefile` | ❌ | Aucune cible `help`. La cible réelle est `aide` (défaut). Commande citée inexistante. |
|
||||
| AFF-081 | « `make syntax-template` » (docs/modeles_vm/debian13-proxmox.md:77) | procédurale | `grep syntax-template Makefile` | ❌ | Aucune cible `syntax-template`. Réel : `syntaxe-modele`. Nom périmé. |
|
||||
| AFF-082 | « `make syntax-template` » (docs/MISE-A-JOUR-CODEX-CLAUDE.md:146) | procédurale | idem | ❌ | Même nom périmé, second emplacement. |
|
||||
| AFF-080 | « `make help` — liste des cibles » (docs/config-proxmox.md:114) | procédurale | `grep -E '^help:' Makefile` | ✅ | Aucune cible `help`. La cible réelle est `aide` (défaut). Commande citée inexistante. — **rejugé le 2026-08-08 : RÉSOLU.** plus aucune occurrence de `make help` dans le dépôt ; la cible s'appelle `aide`, et les **85** cibles portent leur texte d'aide (P31) |
|
||||
| AFF-081 | « `make syntax-template` » (docs/modeles_vm/debian13-proxmox.md:77) | procédurale | `grep syntax-template Makefile` | ✅ | Aucune cible `syntax-template`. Réel : `syntaxe-modele`. Nom périmé. — **rejugé le 2026-08-08 : RÉSOLU.** `syntax-template` n'apparaît plus nulle part hors de ce registre ; la cible est `syntaxe-modele` |
|
||||
| AFF-082 | « `make syntax-template` » (docs/MISE-A-JOUR-CODEX-CLAUDE.md:146) | procédurale | idem | ✅ | Même nom périmé, second emplacement. — **rejugé le 2026-08-08 : RÉSOLU.** idem AFF-081 |
|
||||
| AFF-083 | Tous les docs cités par README/QUICKSTART/AGENTS existent (`plan-et-generation`, `positionnement`, `bindings-conception`, `flux-conception`, `couches-deploiement.yml`, `registre-flux.md`, `carte-set-ops`, `runbooks-exploitation`, `vm-lifecycle`, `procedure-template-…`, `dns-interne`, `nomenclature-vm`, `config-proxmox`, `catalogue-services`, `dimensionnement-ressources`, `exemples/vault.exemple.yml`, `exemples/instance.exemple.yml`) | structurelle | `test -f` sur chaque chemin | ✅ | 17/17 présents. |
|
||||
| AFF-084 | « `docs/dependances-groupes.yml` — chaque groupe existant y figure, aucune entrée ne référence un rôle supprimé » (AGENTS:345,413) | structurelle | `verifier-dependances` (AFF-009) | ✅ | Validé ; graphe sans cycle, tri topologique réussi (via `orchestrer verifier`). |
|
||||
| AFF-097 | Chemins d'inventaire `lab/` codés en dur pour la config/voûte **Proxmox** et le template, alors que `make config`/`cloner-vm` résolvent `lab > principal > production` (modèle `socle` = `production/`) | procédurale | `grep -rn 'inventories/lab/group_vars' docs playbooks` ; `scripts/config_proxmox.py:31` | 🟡 | **Découvert en Phase 3 (lot A).** Reste `lab/` codé en dur dans `docs/vm-lifecycle.md:171`, `docs/procedure-template-debian13-proxmox.md:741,747`, `docs/modeles_vm/debian13-proxmox.md:89`, `playbooks/proxmox/README.md:31,43,49,50`, `playbooks/proxmox/cloner_vm_debian.yml:45` (message). Non bloquant (l'outillage résout), mais trompeur pour le socle. **Différé** au lot « voûte Proxmox » (couplé à AFF-098). |
|
||||
| AFF-099 | Le modèle public `socle` livre un `plan/domaines.yml` **invalide** : `exemple.internal` en `autorite: interne`, rejeté par le validateur (`auto-heberge`/`delegue`/`primaire-cache` attendus) | fonctionnelle | `SETOPS_INSTANCE=exemples/modeles/socle python3 scripts/domaines.py verifier` | ❌ | **Découvert Phase 5.** Un opérateur suivant QUICKSTART bute à la validation (étape 9 / `make inventaire-verifier`). `interne` = valeur périmée (déjà corrigée ailleurs en `auto-heberge`, cf. CHANGELOG 2026-07-07). |
|
||||
| AFF-100 | `instancier.py`/`inventory_gui.py` résolvent `principal > production` mais **retombent sur `principal`** quand aucun `hosts.yml` n'existe encore ; le socle est en `production/` → 1ʳᵉ génération dans `principal/`, à côté des `group_vars` restés en `production/` (split-brain) | fonctionnelle | parcours QUICKSTART hors-ligne sur une copie du socle (`generer`→`appliquer`) | ❌ | **Découvert Phase 5.** `config_proxmox.py` détecte le répertoire existant (→ `production/`) ; `instancier`/GUI non → incohérence. QUICKSTART étapes 6-9 cassées pour le socle. |
|
||||
| AFF-098 | Contradiction fonctionnelle voûte Proxmox : `make config` écrit le token dans la voûte unifiée `all/vault.yml` (et `config-proxmox.md` dit de **supprimer** `proxmox.vault.yml`), mais le clonage `cloner_vm_debian.yml` (lancé `-i localhost,`) ne charge le secret **que** depuis `proxmox.vault.yml`/`proxmox.local.yml` ou les variables d'env — **jamais** `all/vault.yml` | fonctionnelle | lecture `playbooks/proxmox/cloner_vm_debian.yml:11-12,51-64` vs `scripts/config_proxmox.py:35` | ❌ | **Découvert en Phase 3 (lot B).** Un opérateur qui suit la voûte unifiée met le token dans `all/vault.yml` → `make creer-vm` échoue l'assert (`proxmox_api_token_secret` vide), sauf variables d'env ou `proxmox.vault.yml` conservé. **Traitement B (code)** : faire lire `all/vault.yml` par le clonage, ou faire écrire `proxmox.vault.yml` par `make config`. À arbitrer dans le lot « voûte Proxmox ». |
|
||||
| AFF-099 | Le modèle public `socle` livre un `plan/domaines.yml` **invalide** : `exemple.internal` en `autorite: interne`, rejeté par le validateur (`auto-heberge`/`delegue`/`primaire-cache` attendus) | fonctionnelle | `SETOPS_INSTANCE=exemples/modeles/socle python3 scripts/domaines.py verifier` | ✅ | **Découvert Phase 5.** Un opérateur suivant QUICKSTART bute à la validation (étape 9 / `make inventaire-verifier`). `interne` = valeur périmée (déjà corrigée ailleurs en `auto-heberge`, cf. CHANGELOG 2026-07-07). — **rejugé le 2026-08-08 : RÉSOLU.** `SETOPS_INSTANCE=exemples/modeles/socle python3 scripts/domaines.py verifier` → « Registre des domaines valide. » (gardé par P15) |
|
||||
| AFF-100 | `instancier.py`/`inventory_gui.py` résolvent `principal > production` mais **retombent sur `principal`** quand aucun `hosts.yml` n'existe encore ; le socle est en `production/` → 1ʳᵉ génération dans `principal/`, à côté des `group_vars` restés en `production/` (split-brain) | fonctionnelle | parcours QUICKSTART hors-ligne sur une copie du socle (`generer`→`appliquer`) | ✅ | **Découvert Phase 5.** `config_proxmox.py` détecte le répertoire existant (→ `production/`) ; `instancier`/GUI non → incohérence. QUICKSTART étapes 6-9 cassées pour le socle. — **rejugé le 2026-08-08 : RÉSOLU.** parcours hors-ligne sur copie du socle : `instancier generer` écrit dans `inventories/production/hosts.genere.yml` — plus de repli sur `principal` |
|
||||
| AFF-098 | Contradiction fonctionnelle voûte Proxmox : `make config` écrit le token dans la voûte unifiée `all/vault.yml` (et `config-proxmox.md` dit de **supprimer** `proxmox.vault.yml`), mais le clonage `cloner_vm_debian.yml` (lancé `-i localhost,`) ne charge le secret **que** depuis `proxmox.vault.yml`/`proxmox.local.yml` ou les variables d'env — **jamais** `all/vault.yml` | fonctionnelle | lecture `playbooks/proxmox/cloner_vm_debian.yml:11-12,51-64` vs `scripts/config_proxmox.py:35` | ✅ | **Découvert en Phase 3 (lot B).** Un opérateur qui suit la voûte unifiée met le token dans `all/vault.yml` → `make creer-vm` échoue l'assert (`proxmox_api_token_secret` vide), sauf variables d'env ou `proxmox.vault.yml` conservé. **Traitement B (code)** : faire lire `all/vault.yml` par le clonage, ou faire écrire `proxmox.vault.yml` par `make config`. À arbitrer dans le lot « voûte Proxmox ». — **rejugé le 2026-08-08 : RÉSOLU.** `cloner_vm_debian.yml` et `config_proxmox.py` disent tous deux « voûte UNIQUE de l'instance » ; `config-proxmox.md` §« `proxmox.vault.yml` n'est plus lue (retirée le 2026-08-03) » |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -173,7 +179,10 @@ rejouable. **Le dépôt n'affirme pas que ses devis s'appliquent ; il affirme qu
|
|||
|
||||
Recompte exact par ID (numérotation à trous AFF-001 → AFF-096, **54 affirmations**).
|
||||
|
||||
| Statut | Nombre |
|
||||
> **Ce décompte est celui du 20 juillet.** Il est conservé tel quel — c'est la photo de
|
||||
> départ. L'état **courant** est en dessous.
|
||||
|
||||
| Statut au 2026-07-20 | Nombre |
|
||||
|---|---|
|
||||
| ✅ prouvée | 30 |
|
||||
| 🟡 partielle | 13 |
|
||||
|
|
@ -188,6 +197,28 @@ Détail :
|
|||
- ❌ (8) : AFF-006, 020, 021, 023, 050, 080, 081, 082.
|
||||
- ⚪ (3) : AFF-036, 091, 096.
|
||||
|
||||
### État courant — rejugé le 2026-08-08
|
||||
|
||||
| Statut | Nombre |
|
||||
|---|---|
|
||||
| ❌ fausse | **0** |
|
||||
|
||||
**Les 11 affirmations fausses sont résolues**, chacune reconfrontée au dépôt ce jour-là et
|
||||
la preuve consignée dans sa ligne (le décompte de juillet en listait 8 ; trois de plus —
|
||||
AFF-098, 099, 100 — ont été ouvertes après, lors des lots B).
|
||||
|
||||
**Ce qu'il faut retenir de ce rejugement, et qui vaut au-delà du registre.** Les
|
||||
résolutions étaient **déjà documentées** dans les sections « Phase 3 » plus bas
|
||||
(`AFF-0xx (❌ → résolu)`). Mais le tableau de synthèse ci-dessus, lui, n'a jamais été
|
||||
remis à jour : il annonçait encore 8 affirmations fausses. Deux représentations du même
|
||||
fait, une corrigée et l'autre non, et **rien qui vérifie qu'elles se rejoignent** — le
|
||||
défaut exact que ce registre existe pour traquer, appliqué à lui-même. Il penchait du bon
|
||||
côté (le dépôt se sous-estimait), ce qui l'a rendu invisible : personne ne se plaint d'une
|
||||
mauvaise nouvelle périmée.
|
||||
|
||||
Un `❌` qui subsiste ici doit désormais se lire comme un **signal vivant**, pas comme un
|
||||
vestige.
|
||||
|
||||
> La Phase 4 (`make prouver`) rattachera chaque ✅ à sa section de preuve et figera le
|
||||
> compte.
|
||||
|
||||
|
|
@ -267,7 +298,8 @@ réécrit. Les traitements appliqués ensuite sont consignés ici, datés et tra
|
|||
« …des agents IA » dans `AGENTS.md`, avec mention explicite qu'elle vaut pour tout agent.
|
||||
|
||||
Reste ouvert après Phase 2 : les 5 ❌ restants (AFF-006, 020, 021, 023, 080/081/082) et
|
||||
les 🟡 relèvent de la **Phase 3 (arbitrage)**.
|
||||
les 🟡 relèvent de la **Phase 3 (arbitrage)**. *(Tous traités depuis — voir « État courant
|
||||
— rejugé le 2026-08-08 ».)*
|
||||
|
||||
### Phase 3 — Lot A « doc de démarrage » — 2026-07-20
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue