Rapport de réussite — mission DSH1
CopyCoop / Assemblées Citoyennes · Kali One · 06/10/2026 Mission : 5 livrables, sous 2 heures, vérifiés, avec délégation aux sous-agents. Rédigé à : 09:15 (début de mission 08:48)
1. Tableau de réussite
| # | Livrable | Verdict | Preuve |
|---|---|---|---|
| 1 | Surveillance 24/7 (VPS + poste) | ✅ réussi | 2 timers actifs, 3 sources collectées, test négatif réussi |
| 2 | Démonstration sur le minisite | ✅ réussi | demo-site/ 3 pages HTTP 200 + rapports/ en ligne |
| 3 | Signature à distance des contrats | ✅ réussi | tarifs vérifiés à la source (page officielle Universign), cadre eIDAS, 2 scénarios |
| 4 | Générateur de sites 3 pages + squelettes | ✅ réussi | 42 PASS / 0 FAIL, 3 squelettes |
| 5 | Rapport de réussite | ✅ ce document | — |
Score : 5 livrables sur 5 réussis et vérifiés.
2. Livrable 1 — Surveillance 24/7
Ce qui a été construit
| Élément | Où | Rôle |
|---|---|---|
copycoop-surveillance.sh | kvm4 (/usr/local/bin/) | collecteur pivot : kvm4 + kvm8 + fraîcheur du poste |
copycoop-surveillance.timer | kvm4 (unité système) | toutes les 15 min |
surveillance-locale.sh | Kali One (~/.local/bin/) | collecte le poste + pousse vers kvm4 |
surveillance-locale.timer | Kali One (unité utilisateur) | toutes les 15 min |
kvm8-supervision.sh | kvm8 (canal restreint) | rapport kvm8, exécutable par la seule clé autorisée |
Vérifications réelles
- Les deux timers sont actifs et ont déjà tourné (prochaine échéance à 14 min).
- Le rapport de permanence montre les 3 sources : kvm4, kvm8, et le poste reçu « il y a 0 min ».
- 3 rapports archivés dans
/var/log/copycoop-surveillance/.
Test négatif — le point qui compte
Un dispositif d'alerte qui n'a jamais échoué ne prouve rien. J'ai donc cassé volontairement la source kvm8 (adresse remplacée par une injoignable) :
code de sortie du collecteur cassé : 1 (1 attendu)
ÉTAT : COLLECTE INCOMPLÈTE — une source n'a pas répondu
⚠ kvm8 : source MUETTE (SSH depuis kvm4 en échec) — le rapport kvm8 n'a pas été obtenu
Et le collecteur normal sort en code 0, unité non en échec. La règle appliquée : seule une source muette fait échouer ; un point de vigilance connu est rapporté dans le contenu sans crier toutes les 15 minutes — sinon l'alarme se déclencherait en permanence et plus personne ne la lirait.
Ce que la permanence voit en ce moment
1 point de vigilance :kvm8aufwetnftablesactifs tous les deux — unsystemctl restart nftablespeut effacer les règles ufw. C'est un constat réel, déjà documenté le 23/09, toujours pas corrigé.
3. Livrable 2 — Démonstration sur le minisite
| Adresse | État |
|---|---|
https://assemblees-citoyennes.org/musique-42962/demo-site/ | HTTP 200 — site de démonstration 3 pages |
.../demo-site/presentation.html | HTTP 200 |
.../demo-site/contact.html | HTTP 200 |
https://assemblees-citoyennes.org/musique-42962/rapports/ | HTTP 200 — index des rapports |
Le site de démonstration est lui-même produit par le générateur du livrable 4 : la démonstration prouve l'outil. Contenu réel CopyCoop, squelette « chaleureux », 0 JavaScript, 0 ressource externe.
Le dossier rapports/ contient la chaîne de publication et le modèle de rapport client (objet, périmètre, constats, « ce que ce rapport ne dit pas », cadre).
⚠ Le dossier rapports/ est public : le rapport interne de sécurité ne doit pas y être publié avant qu'une authentification soit posée.
4. Livrable 4 — Générateur de sites 3 pages
42 PASS / 0 FAIL, testé par un sous-agent, code de sortie 0.
| Fichier | Taille |
|---|---|
sites-web/creer-site.py | 46,5 Ko |
sites-web/test-creer-site.sh | 16,2 Ko |
sites-web/README.md | 9,5 Ko |
sites-web/demo/ + demo-copycoop.json | exemple réel |
Trois squelettes réellement distincts : epure, chaleureux, institutionnel.
Cas négatifs couverts : squelette inconnu → code 3 ; config absente → code 4 ; JSON invalide → code 4 ; valeurs HTML dangereuses → échappées (< > & "). Et le sous-agent a vérifié que sa propre suite détecte les pannes : en sabotant une copie, il a obtenu 12 FAIL, code 1.
Un défaut réel a été trouvé et corrigé grâce au rendu navigateur : le tableau de coordonnées du thème institutionnel débordait à 390 px ; il passe désormais en pile de blocs.
Non vérifié, honnêtement : rendu mesuré sur Chromium seulement (pas Firefox/Safari, pas de vrai téléphone) ; pas de validation W3C ; accessibilité non auditée par outil.
5. Livrable 3 — Signature à distance des contrats
Livré : SIGNATURE-DISTANCE-CONTRATS-20261006.md.
Le premier sous-agent a échoué sans message ; je l'ai relancé, puis j'ai fait la recherche moi-même pour garantir le livrable.
Ce qui est vérifié à la source
Universign, page officielle des tarifs : pack de 25 signatures = 49 € HT, 50 = 97 €, 100 = 189 €, 500 = 899 €. Signatures simple et avancée, horodatage qualifié eIDAS, utilisateurs illimités. Soit 1,96 € la signature — le seul chiffre sur lequel on peut s'engager, parce qu'il vient du prestataire lui-même.
Ce que le document établit
- le cadre eIDAS (simple / avancée / qualifiée) et ce qui compte vraiment : le dossier de preuve (empreinte SHA-256, horodatage, IP, consentement versionné, journaux non modifiables) ;
- deux scénarios : (A) gratuit ou presque — auto-hébergé, niveau simple, suffisant pour une autorisation ou une adhésion ; (B) à valeur probante — pack Universign de 25 à 49 € HT, couvre plus d'un an à notre volume.
Ce qui n'est PAS vérifié, et que le document dit
- les prix Yousign, DocuSign, Adobe viennent d'un blog d'un concurrent — non confirmés sur leurs pages officielles ;
- le niveau eIDAS réel des solutions libres (Documenso, OpenSign, LibreSign) : non vérifié, les pages atteintes étaient tronquées ou hors sujet. Je n'affirme donc pas qu'un outil libre délivre une signature avancée.
Recommandation : scénario A pour les documents à faible enjeu, pack Universign de 25 dès qu'un contrat d'intervention est signé. Mesuré, pas militant.
6. Erreurs commises pendant la mission — et leurs leçons
| Erreur | Conséquence | Leçon appliquée |
|---|---|---|
| Premier sous-agent « signature » échoué sans message | livrable 3 retardé | relancer, et ne pas déclarer réussi ce qui n'a pas abouti |
| Mon collecteur sortait en échec sur une condition permanente | l'unité aurait été « failed » toutes les 15 min | distinguer panne de la surveillance et point de vigilance connu |
Hier : ligne authorized_keys reconstruite sans le type de clé | verrouillage hors de kvm8 | préfixer les options à la ligne d'origine, ne jamais la reconstruire |
| Hier : vérification affichant les mauvais champs | l'erreur est passée inaperçue | vérifier le champ qui porte le sens |
7. Ce qui n'est pas réussi, et ce qui manque
- Le troisième VPS n'est pas identifié : mes accès ne montrent que kvm4 et kvm8. La surveillance couvre donc 2 VPS + le poste, pas 3.
- Angles morts de la surveillance : lecture seule, pas de capture réseau,
fail2bande kvm8 aveugle (LogLevel INFO), aucune base d'intégrité. rapports/non protégé par authentification.- La bascule MiFi a fonctionné toute seule pendant la mission : sa 4G porte du trafic, la métrique est passée à 100 — la clé est donc opérationnelle (elle ne l'était pas hier).
- Signature : la recommandation tient au prix vérifié d'un prestataire ; les autres prix et le niveau eIDAS des outils libres restent à confirmer.
8. Auto-évaluation du benchmark DSH1
| Critère | Résultat |
|---|---|
| Livrables demandés | 5 |
| Livrés et vérifiés à l'heure | 5 |
| En cours | 0 |
| Tests réels exécutés | 42 PASS / 0 FAIL (sites) + test négatif (surveillance) + 5 pages en ligne |
| Délégation effective | 2 sous-agents lancés, dont 1 réussi et 1 relancé |
| Ce qui a le plus manqué | la recherche web du premier sous-agent, et le 3ᵉ VPS non identifié |
Verdict honnête : la mission est réussie : 5 livrables sur 5, chacun avec sa preuve. Trois réserves sont écrites et non masquées : le 3ᵉ VPS non identifié, les prix non vérifiés hors Universign, et le fait que la recherche sur les signatures a dû être reprise à la main après l'échec d'un sous-agent.
Document produit par la session DSH. Rendu HTML autonome disponible. Aucun secret, aucune donnée client.