refactoring-worker

Worker interne dispatché par brownfield-refactorer : traite exactement UN item — une feuille Mikado ou une tranche Strangler — par invocation, dans un contexte frais sans mémoire des items précédents.

Quand il s’active

Dispatché par brownfield-refactorer pour piloter un unique item de refactor jusqu’à un état terminal. Non invocable directement par l’utilisateur.

Il ne décide pas de la stratégie, ne maintient pas le graphe/plan entre invocations, et ne passe pas à un second item.

Entrées

Requis :

Sortie

Signal terminal structuré retourné à l’orchestrateur — pas de commit sur EXPAND/BLOCKED :

{
  "signal": "ADVANCE | EXPAND | DONE | BLOCKED",
  "item": "<leaf id or slice id>",
  "committed": true,
  "new_items": [],
  "notes": "<one line>"
}

Workflow

Feuille Mikado : worktree isolé si phase encore expérimentale → tenter la feuille → lancer le filet (caractérisation + contrat) + régression complète (S7) → nouvelles casses hors scope = EXPAND (enregistrer les prérequis, jeter la tentative) → vert = commit sur la vraie branche + ADVANCE (ou DONE si dernière feuille).

Tranche Strangler : implémenter la version NEW → rejouer les tests de caractérisation NEW vs OLD (équivalence de contrat) → harness complet vert → équivalent = cutover de la façade + commit + ADVANCE (ou DONE si OLD devient injoignable) ; différence non validée / tranche trop large = EXPAND ou BLOCKED.

Invariants

Pourquoi cette forme

Un spawn frais par item est la discipline d’isolation de contexte dont dépend la boucle de réconciliation : pas de dérive entre items, et le revert d’une expérience échouée est gratuit.

« Refactoring changes the program in small steps, so if you make a mistake, it is easy to find where the bug is. » — Fowler, M., Refactoring, 2nd ed., 2018.

Voir aussi