blog.vfg.lol

Quand la documentation devient le contexte : audit et plan pour une archive vivante

36 heures, une demi-douzaine de modèles, 56 documents : ce que l'audit a trouvé, et comment séparer le fil historique de la doc fraîche dont les agents ont besoin

Quand la documentation devient le contexte : audit et plan pour une archive vivante

Rainbow Journey a un peu plus de 36 heures. Le code a avancé vite : un premier jalon jouable, le Lot 1, une session collaborative au piano, un pack de hotfix, le Lot 2.F, puis trois des quatre chantiers du Lot 2.G intégrés en parallèle. La documentation a suivi le même rythme… et c'est devenu un problème.

Dans un projet mené avec des agents, la documentation n'est pas un à-côté : c'est le contexte. Chaque ligne qu'un modèle lit pour « reprendre » est une ligne qu'il ne consacre pas au code. Chaque statut périmé est une fausse piste. Ce billet raconte l'audit mené cet après-midi et le plan qui en sort, volontairement pas encore exécuté.

Le constat de départ

La demande tenait en deux exigences qui semblent se contredire :

  1. Tout garder, dans l'ordre : choix, audits, reviews, handoffs, plans, prompts, articles. On veut pouvoir valider le fil du projet sur la durée et en tirer des dossiers d'articles complets.
  2. Ne lire que l'utile : une doc fraîche, courte et fiable pour le développement agentique, et même logique pour le code, afin qu'un modèle n'ouvre pas quinze fichiers hors sujet.

Au bout de 36 heures, docs/ compte 56 fichiers, environ 6 000 lignes, rédigés par GPT/Astra, Copilot, Kimi, Claude, Cursor et opencode. Chacun avait ses habitudes.

Ce que l'audit a lu

L'audit a été mené par Claude Code, en lecture seule :

  • les 21 documents à la racine de docs/ ;
  • les 35 fichiers datés (devblog, handoffs, plans, prompts), confrontés un par un à leur date de nom, leur date de contenu et leur commit d'ajout ;
  • la cartographie des imports des 81 fichiers de src/, les tests, la CI et les branches.

En cours de route, FG a tranché quatre questions structurantes. On y revient plus bas.

Ce qu'il a trouvé

ConstatExemple concret
Rien ne sépare le vivant de l'historiqueSTATUS, HANDOFF et TODO mélangent état courant et récit. 634 lignes à lire avant la première ligne de code, 850 si l'on suit la consigne « Lire d'abord »
Les statuts vieillissent sans prévenirTODO marque G.10, G.13 et G.16 « pas encore » alors qu'ils sont intégrés ; HANDOFF annonce 110 tests, main en compte 130
Deux « plans actifs »Cinq documents pointent vers un plan, STATUS vers un autre
Les codes se télescopent« Lot 1 » désigne deux pistes différentes ; A1, H1, D1 ou P0 ont chacun trois ou quatre sens
Métadonnées au cas par casFront-matter YAML dans le devblog seulement ; ailleurs, quatre façons d'écrire une date, ou aucune
Pas de consignes agents versionnéesNi AGENTS.md, ni CLAUDE.md, ni règles Cursor ; les règles d'orchestration sont recopiées dans cinq fichiers
DoublonsLa rétro agents existe deux fois ; le Lot 1 est raconté dans quatre documents
Code à plat50 fichiers à la racine de src/ ; settings.ts importé par ~27 modules ; des tests nommés d'après les lots plutôt que d'après ce qu'ils testent

Il y a aussi quelques erreurs factuelles figées dans l'archive (un piano « Roland FP-1 » à la place du Bird DP1, des prompts qui annoncent 89 tests au lieu de 110) et un point de sécurité, signalé à FG et traité hors de ce billet.

Rien de tout cela n'est grave isolément. Mis bout à bout, cela fait un contexte bruyant, et un agent qui démarre sur de mauvaises prémisses.

L'idée : deux régimes de documentation

La contradiction apparente disparaît quand on accepte que tous les documents n'ont pas le même cycle de vie.

L'archive est chronologique et immuable. Un plan, un contrat, un prompt ou un handoff décrit ce qui était vrai à un moment donné. On ne le corrige pas, on le date. Seuls deux ajouts sont permis : un front-matter commun et la réparation des liens.

La doc vivante est courte et reflète l'état courant, avec une date de mise à jour. Si elle ment, c'est un bug.

Le plan propose de ranger l'archive par lot : un dossier par jalon, trié par date (2026-09-13_lot-2g/ contient plan, découpage, contrat, prompts et handoffs). Un lot devient un chapitre complet. C'est pratique pour écrire un article, et un agent qui travaille sur le lot suivant sait qu'il n'a pas à l'ouvrir.

docs/
  README.md      index maître : quoi lire selon la tâche
  etat/          STATUS, BACKLOG, QUESTIONS-FG, ROADMAP, CHANGELOG
  produit/       canon gameplay, recherche émotions
  technique/     architecture, invariants, données, tests, protocole DP1, perf
  agents/        orchestration, registre des modèles, vocabulaire, zones, templates
  decisions/     décisions datées, courtes, append-only
  journal/       archive par lot + TIMELINE générée
  devblog/       publication

Un front-matter pour tout le monde

Chaque document porte le même en-tête : type, date, time, lot, chantiers, agents, status, sources, superseded_by, et même errata pour signaler une erreur sans réécrire l'archive. Les codes sont qualifiés par lot (2G-A1, 2F-P1, HF-H1) : fini les collisions.

Ce front-matter sert aussi de base de données. Un script sans dépendance pourra :

  • générer une TIMELINE globale ;
  • lister les redirections entre anciens et nouveaux chemins ;
  • assembler un dossier de lot complet, dans l'ordre chronologique, pour servir de matière première à un article.

Un point d'entrée unique pour les agents

Un seul fichier source, AGENTS.md (150 lignes au plus), décliné pour chaque outil utilisé sur le projet : Claude Code, Cursor, Kimi, Codex, Copilot, opencode avec Ollama, Minimax ou GLM. Il dit :

  • quoi lire, et surtout quoi ne pas lire (l'archive, le devblog, le lockfile, les rapports HTML) ;
  • les commandes ;
  • les invariants non négociables ;
  • où écrire quoi (une décision, un handoff, une question pour FG).

Des zones plutôt qu'un grand déménagement

Côté code, la tentation était de tout ranger dans des dossiers. FG a préféré plus prudent : des zones d'ownership, sans déplacer un seul fichier. Il y a trois raisons à cela : un chantier (A4) est encore ouvert, dix worktrees tournent, et le plan de fork technique prévoit déjà une architecture cible qu'il ne faut pas anticiper à moitié.

ZoneCe qu'elle possède
musiquethéorie, fantômes, glyphes, styles, émotions (logique pure)
runtimetemps, MIDI, vélocité, sessions, presets
monde-3dscène Three.js, perf
interfaceHUD joueur, panneaux, clavier affiché
éditeuronglets de réglages, règles
outillagebuild, CI, e2e, debug
pivotssettings.ts, labels.ts, ui.tsx : orchestrateur seul

Chaque zone a une fiche d'une soixantaine de lignes. Les règles Cursor et Claude en sont générées, et un contrôle vérifie que chaque fichier appartient à exactement une zone. C'est la généralisation d'une règle déjà éprouvée au Lot 2.G : runtime.ts n'est modifié que par l'orchestrateur.

Les quatre choix de FG

  • Archive par lot, plutôt que par type ou par date.
  • Zones sans déplacement dans src/.
  • Tous les outils reçoivent leurs consignes depuis la même source.
  • Docs vivantes en français accentué. La règle « ASCII sans accents » reste réservée aux libellés de l'interface, d'où elle s'était étendue aux documents par habitude.

Ce qui n'est pas fait

Le plan est déposé, pas exécuté. L'audit complet et le plan détaillé sont versionnés à côté de ce billet ; ils attendent un GO. L'ordre prévu :

  1. Préalables : le point de sécurité, la fusion de l'article du matin, la coordination avec le chantier A4.
  2. Squelette non destructif : AGENTS.md, vocabulaire, templates, scripts de contrôle.
  3. Déplacement de l'archive par lot, en commits « déplacement seul » pour ne pas perdre l'historique git.
  4. Réécriture des documents vivants.
  5. Génération et contrôle en CI.

Le critère de succès est mesurable : pour une tâche courante, passer de 634 lignes de documentation lues à 300 ou moins, sans perdre une seule trace du chemin parcouru. On vérifiera en donnant la même petite tâche à trois agents différents et en comptant ce qu'ils ouvrent.


Audit et plan : docs/audits/2026-09-13-audit-documentation-code-contexte-agents.md et docs/plans/2026-09-13-plan-architecture-docs-agents.md (dépôt privé).

source markdown

Concepts de cet article

handoffworktreeRainbowJourney

Partage le plus de concepts avec