docs: cartographier le comportement actuel (synchro et page d'état) #1
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/cartographie-pc-mirror"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Carte 1/6 du chantier PC Mirror : documenter ce que font réellement la synchro et le serveur d'état, avec des réponses de référence.
Ce que contient la branche
docs/COMPORTEMENT.md— comportement mesuré au 2026-10-15 :pcmirror-sync.sh: sources (/mnt/Media+~/Documents,~/Images,~/Téléchargements), exclusions dynamiques (/mirror/_exclusions.txt) et fixes, options rsync des trois passes (--delete,--backup --backup-dir,--ignore-existing), verrouflocknon bloquant, garde-fous (disque non monté, hôte injoignable, dossier personnel vide), journaux (journal systemd utilisateur), codes de sortie (0/1), planification (minuteur--userhoraire,RandomizedDelaySec=2min).status-server/server.py: table des 15 routes avec leur code, leur effet et la ligne de code ; fichiers lus et écrits ; contrat de/json; cache de scan ; seuils de santé.sync/pcmirror-sync.shdu dépôt est la version du 4 juillet, la version déployée date du 12 octobre et en diffère sur dix points ; les seuils affichés en pied de page ne correspondent pas au code ;POST /excludesupprime aussi le dossier du miroir.tests/fixtures/— 19 sondages bruts (code, en-têtes, corps) contrehttp://192.168.1.210:9090, la copie de référence du script déployé (sha256 cfe3a4b0…), ses unités systemd, la ligne de cron périmée et les fichiers de télémétrie du miroir, pluscapturer.shetverifier_contrat.py.tests/verifier_reference.py+.forgejo/workflows/ci.yml— contrôle hors ligne des références (le dépôt n'avait aucun workflow).Preuve
Aucun sondage n'envoie de paramètre
p: rien n'a été exclu ni supprimé du miroir, rien n'a été écrit sur le PC ni sur le 108.CI : elle ne tourne pas, et ce n'est pas le workflow
Les deux vérifications de ce dépôt restent « Waiting to run » depuis la poussée :
L'exécutant
pc-studiodu PC (id 12, étiquettespc-lourdetstudio) ne prend que les travaux defoXaCe/studio— mesuré sur 20 minutes : 0 tâchefoXaCe/pc-mirror, 16 tâchesfoXaCe/studio, dont trois lancées à 12:00:23 (capacité libre à ce moment-là). L'étiquette demandée ne change rien (studiopuispc-lourd, même attente). La vérification ne pourra donc pas devenir verte ici sans qu'un exécutant soit enregistré pourfoXaCe/pc-mirror(ou au niveau de l'instance).Points à trancher par le chef de chantier
sync/pcmirror-sync.shdoit-il être aligné sur la version déployée (copie danstests/fixtures/synchro/pcmirror-sync.sh.deploye) ? Non fait ici : c'est une réécriture, pas une cartographie.Non mesuré, et dit comme tel dans le document :
/opt/mirror-status/server.pysur le LXC 108 (SSH refusé, version déduite d'un marqueur du HTML servi), les journaux de la synchro et la cause de l'échec du dernier passage (/home/stephanenon lisible depuis le compteatelier).Nouveau commit sur cette PR :
3da9d16— les fixtures des routes qui écrivent, et la vérification de leur contrat.Ce que ça ajoute
tests/fixtures/capturer_local.py: monte un miroir factice dans/tmp, exécute lestatus-server/server.pydu dépôt (trois lignes changées : racine, adresse d'écoute, message de démarrage — diff affiché et vérifié à chaque exécution) et rejoue 17 sondes, dontPOST /excludeetPOST /includeavec unpréel, en contrôlant les effets de bord (dossier supprimé, fichiers voisins intacts,_exclusions.txtconservé puis nettoyé).--verifierrejoue les mêmes sondes et compare les codes au manifeste sans rien réécrire : c'est ce que lance la CI.tests/fixtures/status-server-local/: les 17 instantanés et leur manifesteattendu.json.tests/fixtures/capturer.sh: les deux sondes qui manquaient au jeu en ligne (HEAD /filesetDELETE /files→ 501), plusPCMIRROR_SONDES=…pour ne rejouer que les sondes nommées.tests/verifier_reference.py: relit les deux jeux d'instantanés (trios présents, codes conformes au manifeste, en-têtes en HTTP/1.0, couverture du vérificateur en ligne)..forgejo/workflows/ci.yml: compile le nouveau script et rejoue le contrôle hors ligne (écoute sur 127.0.0.1 seulement, rien ne sort du PC).docs/COMPORTEMENT.md: § 3.1 (HEAD), § 3.5 (effets mesurés de/excludeet/include), § 3.6 (deux défauts de plus), § 4 (les deux jeux de réponses).tests/fixtures/README.md: mode d'emploi des deux jeux.Ce qui est mesuré en plus
HEAD /files→ 501 et aucun octet de corps malgré unContent-Length: 357annoncé : vérifié sur la socket nue, pas seulement avec un client qui masque le problème./files(startswith(ROOT), sans séparateur) accepte un dossier voisin dont le nom prolonge celui de la racine :GET /files?p=../mirror-voisin→ 200 et son listing, là où/dlle refuse. Aucune traversée plus large (../..→ 400).POST /excludep=Documentssupprime bien le dossier du miroir et conserve le motif existant de_exclusions.txt;POST /includep=Documentsretire le motif sans restaurer le dossier.Sorties, sur l'état poussé
3da9d16(arbre propre)CI : en attente, pas verte. Aucun exécutant n'est enregistré pour
foXaCe/pc-mirror. L'exécutant du PC (nompc-studio, étiquettespc-lourd:hostetstudio:host) fait tourner les workflows defoXaCe/studio, qui demandent la même étiquettepc-lourd— réussites à 17:13, 17:14, 17:16 et 17:18 — pendant que les deux contrôles de ce dépôt attendent : créés à 17:06:39, encore « Waiting to run » à 17:22, soit seize minutes sans qu'un exécutant les prenne. Je ne fusionne pas et je ne force rien.Fusionnée automatiquement par
fusion-auto(forge) : CI verte, sans conflit.