Skip to content

feat(doctor): rendre visibles les échecs qui coûtaient des soirées - #287

Merged
NLygitadm merged 2 commits into
mainfrom
fix/doctor-premier-demarrage
Sep 9, 2026
Merged

NLygitadm merged 2 commits into
mainfrom
fix/doctor-premier-demarrage

Conversation

@NLygitadm

@NLygitadm NLygitadm commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Les trois premiers pas de la revue du 10/09.

1. Le doctor dit si l'installation a atteint le cabinet

doctor.d/85-installation.sh — quatre contrôles, un par soirée perdue :

Contrôle La soirée qu'il aurait épargnée
Un drapeau de rejeu qui traîne après plusieurs démarrages le mappage des boutons, le DMD matériel
Un DMD déclaré que VPinFE ne trouve pas Flo — No displays found by libdmdutil toutes les dix secondes depuis son premier démarrage, et rien ne le lui disait
Une rotation choisie à l'installation que xrandr n'a pas appliquée Flo — playfield tête en bas, refait à la main
Un contrôleur DOF sans directoutputconfig<N>.ini Patrick — des rubans qui répondent au menu et restent noirs en table

Chaque message dit où aller corriger : Map Commander, la page DMD, la page DOF.

Et le module n'avale aucune erreur — un seul || true, pour le sourcing des chemins, et un test l'impose. C'est le constat 01 de la revue : on ne peut pas ajouter du silence à un module dont le rôle est d'en retirer.

2. L'image n'emporte plus nos brouillons

root/pincab-*    11 039 lignes    v31, v32, v32b, v33, v35b, v35c, v35d…
DEV/                724 Ko        notes de conception

Ils partaient sur chaque cabinet. Ce n'est pas une question de place — 1 Mo sur 2,8 Go — mais le cabinet d'un utilisateur n'a pas à porter notre historique de travail.

On ne touche pas à root/ en bloc : .bashrc, .profile et .ssh y sont légitimes. Un test le vérifie, parce que c'est le genre de raccourci qu'on prend à deux heures du matin.

3. Trois cliquets

Un cliquet ne répare rien aujourd'hui : il fige l'existant et refuse que ça empire.

doublons-connus.txt      3 groupes, 1 523 lignes strictement identiques
rm-rf-connus.txt        23 fichiers avec « rm -rf "$VAR" » non gardé
unites-sans-lien.txt    11 unités déclarant WantedBy sans lien d'activation

Correction. Le second commit de cette branche corrige une erreur de ma
revue : mon détecteur utilisait sha256sum, qui suit les liens symboliques.
Il comptait donc comme « copies » des liens que le projet avait déjà posés, et
annonçait 54 groupes / 26 902 lignes là où il y en a 3 / 1 523. Sur les
54 groupes relevés, 51 étaient déjà entièrement en liens et aucun n'était une
copie pure. Les six « copies » d'iso.sh sont un fichier réel et cinq liens qui
pointent dessus — exactement ce que je proposais de faire. Seul le mode git
(120000) distingue un lien d'une copie ; le test le lit maintenant.

Les trois listes ne peuvent que rétrécir : un ajout fait échouer le test, et une correction aussi — pour qu'on pense à retirer la ligne.

Ce que le troisième cliquet a trouvé

Onze fois le défaut exact de pincabos-screen-hotplug, celui qui laissait le playfield à l'envers : une unité qui déclare WantedBy= sans lien, donc jamais démarrée par cette cible.

J'ai vérifié chacune avant de crier au bug :

Unité Démarrée par
dudescab-hotplug-recovery une règle udev — légitime
splash-sync un .path du même nom — légitime
firstboot-initramfs-refresh, -network-webapp-fix, -vpinfe-packaged-runtime-fix un appel direct de l'installateur
dashboard-live-capture doublon : dashboard-live est liée et lance le même binaire
safe-batch-full, scoreview-x11-hq-preview, table-test personne, nulle part

Les trois dernières demandent de savoir ce qu'elles doivent faire — c'est un arbitrage, pas une correction automatique. D'où le cliquet plutôt que la règle stricte.

Tests

test_doctor_installation.py (10) et test_hygiene.py (9). 797 tests.

Suite

Le pas 4 de la revue — dédupliquer — se réduit à trois fichiers, entre opt/pincabos/install/modules/ et opt/pincabos/modules/ :

mod-dhcp4.sh    441 lignes
mod-ssid.sh     598 lignes
mod-splash.sh   484 lignes

À traiter séparément, en vérifiant d'abord lequel des deux emplacements est réellement appelé.

🤖 Generated with Claude Code

NLygitadm and others added 2 commits September 10, 2026 00:58
Trois premiers pas de la revue du 10/09/2026.

1. LE DOCTOR DIT SI L'INSTALLATION A ATTEINT LE CABINET

doctor.d/85-installation.sh, quatre contrôles, un par soirée perdue :

  - un drapeau de rejeu qui traîne après plusieurs démarrages (le mappage
    des boutons, le DMD matériel) ;
  - un DMD déclaré que VPinFE ne trouve pas — Flo avait « No displays
    found by libdmdutil » toutes les dix secondes depuis son premier
    démarrage, et rien ne le lui disait ;
  - une rotation de playfield choisie à l'installation que xrandr n'a pas
    appliquée ;
  - un contrôleur DOF déclaré sans directoutputconfig<N>.ini — ses sorties
    resteront noires en table, ce qui est le symptôme de Patrick.

Chaque message dit où aller la corriger. Le module n'avale aucune erreur :
un seul « || true », pour le sourcing des chemins, et un test l'impose.

2. L'IMAGE N'EMPORTE PLUS NOS BROUILLONS

root/pincab-* (11 039 lignes de scripts de travail : v31, v32, v32b, v33,
v35b, v35c, v35d…) et DEV/ partaient sur CHAQUE cabinet. Exclus. On ne
touche pas à root/ en bloc : .bashrc, .profile et .ssh y sont légitimes,
et un test le vérifie.

3. TROIS CLIQUETS

Un cliquet fige l'existant et refuse que ça empire :

  doublons-connus.txt    54 groupes, 26 902 lignes strictement identiques
  rm-rf-connus.txt       36 fichiers avec « rm -rf "$VAR" » non gardé
  unites-sans-lien.txt   11 unités déclarant WantedBy sans lien

Les trois listes ne peuvent que rétrécir : un ajout fait échouer le test,
et une correction aussi — pour qu'on pense à retirer la ligne.

Le troisième cliquet a trouvé onze fois le défaut exact de
pincabos-screen-hotplug, celui qui laissait le playfield à l'envers.
Certaines sont démarrées autrement (udev pour dudescab-hotplug-recovery,
un .path pour splash-sync, un appel direct de l'installateur pour les
trois firstboot-*). Trois ne le sont par personne : safe-batch-full,
scoreview-x11-hq-preview et table-test. Elles demandent un arbitrage, pas
une correction automatique — d'où le cliquet plutôt que la règle stricte.

797 tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
sha256sum SUIT les liens. Mon détecteur comptait donc comme « copies » des
liens que le projet avait déjà posés — et annonçait 54 groupes / 26 902
lignes dupliquées là où il y en a 3 / 1 523.

Sur les 54 groupes relevés :
  51  déjà entièrement en liens symboliques
   0  vraies copies
   3  mixtes — une copie réelle à côté de liens

Les six « copies » d iso.sh sont un fichier réel et cinq liens qui pointent
dessus : exactement ce que je proposais de faire.

Ce qui reste vraiment dupliqué tient en trois fichiers, entre
opt/pincabos/install/modules/ et opt/pincabos/modules/ :
mod-dhcp4.sh, mod-ssid.sh, mod-splash.sh.

git ls-files -s donne le mode 120000 pour un lien : c est la seule façon
fiable de le distinguer d une copie. Le test le lit désormais, et la base
rm-rf passe de 36 à 23 fichiers pour la même raison.

797 tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@NLygitadm
NLygitadm merged commit 9b8c653 into main Sep 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant