[đ ] Operations Automation #4: Une structure qui Ă©vite les Ă©tats stale en modifiant moins de documents
⚠Résumé de GPT-5.6 Sol
Le rĂ©cit de la rĂ©organisation du flux de mise Ă jour documentaire : abandon de la copie de chaque changement dâĂ©tat dans plusieurs documents, adoption dâun owner unique pour lâĂ©tat volatil, de downstreams conditionnels et de checkpoints de phase.
Plus je mettais de documents Ă jour, plus lâĂ©tat courant divergeait
Lorsquâun long travail Ă©tait compactĂ© ou transfĂ©rĂ© Ă une autre session, il arrivait quâune prochaine tĂąche inscrite dans un ancien document soit prise pour lâĂ©tat courant. Pour Ă©viter ce problĂšme, jâai pendant un temps corrigĂ© tous les documents qui semblaient liĂ©s dĂšs que lâĂ©tat changeait.
Je rĂ©pĂ©tais le mĂȘme fait accompli et la prochaine tĂąche dans le README, le router documentaire, les exigences, la direction actuelle, le Runbook et le TODO. Tant quâaucun document nâĂ©tait oubliĂ©, cela semblait sĂ»r.
Mais dĂšs quâun seul changement dâĂ©tat Ă©tait Ă©crit Ă six endroits, il fallait maintenir ces six endroits parfaitement identiques. Un document restait Ă lâĂ©tat antĂ©rieur au deploy, tandis quâun autre indiquait que la vĂ©rification sur appareil rĂ©el Ă©tait terminĂ©e. La multiplication des mises Ă jour documentaires, au lieu dâempĂȘcher les Ă©tats stale, en crĂ©ait de nouveaux.
Chaque petite vĂ©rification terminĂ©e entraĂźnait aussi la modification de plusieurs documents et la crĂ©ation dâun commit supplĂ©mentaire, ce qui fragmentait le Git history. Le nombre de synchronisations du texte devenait plus visible que la vĂ©ritable fin de lâimplĂ©mentation.
Jâai confiĂ© lâĂ©tat volatil Ă un seul document
Le problĂšme nâĂ©tait pas le nombre de documents, mais le fait que plusieurs documents possĂ©daient le mĂȘme fait. Jâai donc commencĂ© par dĂ©signer un owner unique pour chaque type de fait.
| Fait modifiĂ© | owner | Condition pour modifier dâautres documents |
|---|---|---|
| Runtime actuel, blocker, phase et prochaine tĂąche | canonical current-state snapshot | Ne pas le copier dans dâautres documents |
| DĂ©cisions produit stables, contournements interdits et Goal actif | Document current-direction | Uniquement lorsque la dĂ©cision produit elle-mĂȘme ou le Goal change |
| Comportement, donnĂ©es, autorisations et acceptance | requirements ou contract | Uniquement lorsque le contrat de comportement de lâutilisateur ou du systĂšme change |
| ProcĂ©dure opĂ©rationnelle, gate, rollback et recovery | Runbook | Uniquement lorsque la procĂ©dure que doit suivre lâopĂ©rateur change |
| Relations entre documents, Ă©tape du produit et point dâentrĂ©e dâexĂ©cution | README ou router | Uniquement lorsque le chemin de navigation ou la relation produit change |
| Commandes détaillées, logs et vérifications des workers | report, artifact et Git evidence | Ne conserver dans les documents aggregate que la conclusion et le lien vers la preuve |
Lâessentiel est de sĂ©parer ĂȘtre liĂ© et ĂȘtre l'owner. La fin dâun deploy nâimpose pas de modifier les exigences. Si la procĂ©dure opĂ©rationnelle de rollback a changĂ© pendant le deploy, le Runbook est mis Ă jour ; si le contrat de comportement a lui aussi changĂ©, les requirements le sont alors Ă©galement.
Le README et le router ne suivent plus non plus la revision actuelle, lâĂ©tat de lâappareil ni la prochaine tĂąche. Ces documents indiquent de façon stable seulement ce quâil faut lire et oĂč commencer lâexĂ©cution.
Jâai sĂ©parĂ© la mise Ă jour immĂ©diate du durable checkpoint
Un owner unique ne signifie pas que la mise Ă jour du document attend la fin de la phase. Lorsquâune nouvelle preuve apparaĂźt ou que lâĂ©tat du Runtime, le blocker, la prioritĂ© ou la prochaine tĂąche change, le canonical current-state snapshot est corrigĂ© avant lâimplĂ©mentation suivante. Ainsi, mĂȘme si le contexte est compactĂ© ou transmis en cours de travail, la session suivante peut retrouver lâĂ©tat rĂ©el Ă un seul endroit.
En revanche, aucun commit nâest créé Ă chaque changement dâune ligne dâĂ©tat. Le current-state est vĂ©rifiĂ© une fois et un checkpoint nâest créé quâĂ une frontiĂšre qui peut ĂȘtre relue et reprise indĂ©pendamment.
- lorsque lâimplĂ©mentation est terminĂ©e
- lorsque le deploy et sa vérification a posteriori sont terminés
- lorsquâun rĂ©sultat E2E est obtenu sur un appareil rĂ©el ou au point dâentrĂ©e utilisateur, ou lorsquâun blocker est confirmĂ©
- lorsque le travail est transmis Ă la suite dâune interruption ou dâun handoff
La mise Ă jour immĂ©diate sert Ă sĂ©curiser le resume ; le phase checkpoint sert Ă relire et Ă annuler un ensemble de changements. Les traiter avec la mĂȘme rĂšgle avait multipliĂ© les micro-event commits.
Lorsque le travail ne dispose pas de lâautorisation de commit, la rĂšgle est encore plus simple. La fin de la review ne crĂ©e pas dâĂ©tat COMMITTED ou CLOSED. Le candidat Ă lâintĂ©gration reste gelĂ© et nâest pas prĂ©sentĂ© comme une conclusion durable avant lâexistence dâun vĂ©ritable checkpoint.
Jâai conservĂ© les vĂ©rifications des workers dans les reports et les ai retirĂ©es des documents aggregate
Dans un travail parallĂšle, chaque worker produit des commandes exĂ©cutĂ©es, des rĂ©sultats de vĂ©rification, des hunks qui se chevauchent et des contraintes restantes. Recopier tout cela dans le TODO racine, le README et les exigences ne fait quâaugmenter le nombre de documents que le coordinator doit lire.
Les preuves dĂ©taillĂ©es propres Ă chaque worker restent dans des reports immuables et dans le Git diff ; le current-state ne conserve que la conclusion intĂ©grĂ©e, lâimpact actuel et le chemin de la preuve. Le coordinator examine chaque report, mais ne traite pas un report comme un commit. Plusieurs reports appartenant Ă la mĂȘme phase peuvent partager un seul checkpoint aprĂšs la vĂ©rification intĂ©grĂ©e.
GrĂące Ă cette sĂ©paration, les documents aggregate sont plus courts sans que les vĂ©rifications dĂ©taillĂ©es disparaissent. La session suivante lit dâabord lâĂ©tat actuel, puis ne descend vers les reports liĂ©s et le Git evidence que lorsquâelle a besoin de comprendre le fondement dâune dĂ©cision.
Lâordre de resume contredisait la rĂšgle dâowner
AprĂšs avoir rĂ©organisĂ© les rĂšgles, jâai revu lâensemble du flux et dĂ©couvert une contradiction Ă©tonnamment Ă©lĂ©mentaire. La procĂ©dure de dĂ©marrage demandait de lire dâabord le README, puis le todo.md.
Le README disait de ne pas dupliquer lâĂ©tat volatil, alors que la vĂ©ritable procĂ©dure de resume lisait le router avant le current-state. Sâil restait dans le router un ancien texte dâĂ©tat, la toute premiĂšre dĂ©cision pouvait dĂ©jĂ partir dans la mauvaise direction.
Jâai donc changĂ© lâordre de dĂ©marrage. Le canonical current-state indique dâabord le Runtime actuel, le blocker, la phase et la prochaine tĂąche. Ensuite, le README et le router documentaire permettent de trouver les limites du repository et le document leaf nĂ©cessaire. Les dĂ©cisions produit stables sont lues dans le current-direction, et le contrat de comportement rĂ©el dans les requirements.
Ajouter seulement une table des owners ne suffisait pas. Lâordre de lecture rĂ©el, quâil sâagisse dâune personne ou dâun Agent, devait lui aussi suivre la relation de propriĂ©tĂ©.
PĂ©rimĂštre dâapplication actuel et limites restantes
Cette structure a Ă©tĂ© appliquĂ©e aux rĂšgles de travail partagĂ©es, au routing documentaire dâOperations Automation, au manifest de documentation des changements et au protocol de coordination parallĂšle. Le skill validator, la vĂ©rification de synchronisation documentaire et lâinspection du diff sont passĂ©s. Cependant, les changements se trouvent encore uniquement dans le local working tree et nâont Ă©tĂ© ni commitĂ©s ni deployed.
Je nâai pas non plus réécrit rĂ©troactivement lâensemble des documents existants. Lâhistorique et les reports dĂ©taillĂ©s ont Ă©tĂ© conservĂ©s ; ce nâest que lorsque le mĂȘme fait de current-state entre en conflit entre des documents actifs quâil est rĂ©duit Ă une rĂ©fĂ©rence vers lâowner. Avant de supprimer chaque ancien document, il importait surtout dâĂ©viter quâil soit de nouveau lu comme lâauthority du travail actuel.
DĂ©sormais, la qualitĂ© de la mise Ă jour documentaire ne se mesure pas au nombre dâendroits modifiĂ©s. Le critĂšre est de pouvoir lire un seul endroit aprĂšs une compaction ou un handoff sans se tromper sur la phase actuelle ni sur la prochaine tĂąche, tout en pouvant retracer les preuves dĂ©taillĂ©es lorsquâelles deviennent nĂ©cessaires.
Laisser un commentaire