mikado-method

Une discipline pour restructurer du code dont le graphe de dépendances réel n’est pas connaissable à l’avance : essaie, laisse le compilateur et les tests révéler les dépendances, revert, puis construit les prérequis bottom-up.

Quand l’utiliser

Structure du skill

Quatre fichiers, pas un seul :

Précondition

Un filet de sécurité vert doit exister (characterize-with-contracts / brownfield-harness-builder). Une couverture faible produit de fausses feuilles ; gate CONCERNS/FAIL → renforcer le harness d’abord.

Les quatre primitives (appliquer exactement)

  1. Goal — une phrase concrète orientée valeur métier, validée avec l’humain (rejeter les objectifs vagues)
  2. Naive experiment — worktree isolé, tenter le plus évidemment, lancer build + suite complète ; c’est un CAPTEUR, jamais un brouillon
  3. Visualize — chaque échec est un prérequis → noeud du graphe avec arête vers le goal ; citer file:line + message
  4. Undo — jeter le worktree entièrement ; jamais git stash, jamais garder du code « presque marchant » ; le revert est gratuit

Contrat de sortie

Validation obligatoire (8 passes)

bash plugins/skraft-framework/skills/mikado-method/scripts/validate-mikado.sh <path-to-graph.md>

À exécuter avant chaque commit de feuille et après chaque commit de mise à jour du graphe. Exit 0 requis pour continuer — jamais avancer sur un graphe non validé.

  1. Parse — noeuds, arêtes, classes
  2. Traçabilité — chaque noeud non-goal porte discovered: + error:, sauf anticipated
  3. Validation des références requires: — toute arête doit résoudre vers un noeud défini
  4. Détection de cycle — arbre + arêtes requires:
  5. Direction de l’arbre (ancestry via git) — le commit discovered: de l’enfant doit être ancêtre-ou-égal à celui du parent, message conforme au préfixe refactor(mikado-graph): <what> ; gate avec --no-git pour les fixtures
  6. Détection d’orphelins (avertissement seulement)
  7. Gate golden-master — noeud « Golden Master » ou %% no-golden-master: <raison>
  8. Énumération des vraies feuilles — prêtes pour le prochain dispatch

Invariants

Pourquoi cette forme

Le graphe survit entre itérations ; le code de l’expérience échouée est toujours jeté. Mikado ne fonctionne qu’avec un filet de sécurité — sans tests, rien ne casse parce que rien n’est vérifié, pas parce que rien n’en dépend.

« The main thing that distinguishes legacy code from non-legacy code is tests, or rather a lack of tests. » — Feathers, M., Working Effectively with Legacy Code, 2004.

Customisation autorisée

Voir aussi