Le principe LIVING / COLD¶
Le postulat¶
Tout artefact de projet a une température. Soit il est LIVING : mutable, en cours de négociation, encore discutable. Soit il est COLD : gelé par une décision consciente, plus discutable sans passer par un processus explicite.
Cette distinction est binaire (avec une nuance LIVING-GELÉ temporaire) mais elle est omniprésente : chaque Business Epic, chaque Feature, chaque Récit porte son badge de chaleur visible dans la CLI.
Les trois températures¶
| Badge | Méta-état(s) | Signification |
|---|---|---|
| LIVING | IN_PROGRESS |
L'objet est en construction active. Son contenu peut changer à chaque session. Aucun engagement n'a été pris. |
| LIVING-GELÉ | BLOCKED |
L'objet est temporairement arrêté (attente de décision, dépendance externe). Son contenu reste mutable, mais aucune avancée ne se fait. |
| COLD | DONE, ARCHIVED |
Une porte de décision a été franchie. Des artefacts ont été gelés à ce moment. Les rouvrir exige un processus explicite. |
Pourquoi cette distinction est vitale¶
Sans elle, l'IA — et souvent l'humain pressé — confond trois régimes de travail :
- Explorer : créer, générer, proposer. Tout est possible, rien ne compte.
- Délibérer : peser, comparer, choisir. Certaines options tombent.
- Graver : acter. Cette décision devient la fondation des suivantes.
Si tout est LIVING en permanence, aucune décision ne stabilise — on tourne en rond, chaque session redéfaire la précédente. C'est la pathologie « projet sans mémoire ».
Si tout est COLD d'emblée, chaque interrogation devient un drame, chaque pivot un aveu d'échec. C'est la pathologie « projet rigide ».
Le kit impose explicitement les trois régimes et leur séparation.
Comment la bascule se produit¶
Le passage LIVING → COLD se produit uniquement à une porte de décision (G1 à G4, ou Re-G1 dans la boucle MVP→G1), via node sdlc/sdlc.js move. La transition :
- Vérifie les préconditions humaines (checklist interactive).
- Exécute les invariants et checks automatisés.
- Si GO, exécute la transition — et gèle les artefacts listés dans
freeze.
Exemple concret (extrait de sdlc/schema.js) pour la porte G1 (BE : VISION_EN_COURS → ENGAGE) :
freeze: [
'.product/.epics/{id}/asis.md',
'.product/.epics/{id}/tobe.md',
'.product/.epics/{id}/ehs.md',
'.product/.epics/{id}/lbc.md',
'.product/.epics/{id}/okrs.md',
'.product/.epics/{id}/decision.md',
]
Ces fichiers étaient LIVING avant G1. Après G1 ils sont COLD : l'IA peut encore les lire et les citer, mais toute modification exige de passer par un nouveau processus explicite (re-ouvrir un cycle de vision via la boucle MVP→G1, produire un événement justifiant la remise en LIVING).
Depuis la v3 (ADR-0009), un deuxième cas illustre particulièrement bien la patience LIVING : le prd.md d'une Feature reste LIVING à travers deux statuts (fe.PRD_EN_COURS puis fe.FAB_PLAN_EN_COURS) et n'est figé qu'à G3, en même temps que spec.md et plan-fab.md. Cette durée prolongée de LIVING est délibérée : elle permet au PRD d'évoluer pendant la décomposition en USs, moment où l'équipe découvre des détails qui remettent parfois en cause le cadrage initial.
La boucle BLOCKED — un état intermédiaire¶
Certains objets se retrouvent bloqués en cours de cycle : dépendance non résolue, décision externe attendue, ressource indisponible. La machine d'états prévoit des statuts BLOCKED → méta-état BLOCKED → heat LIVING-GELÉ (aka living-frozen).
Cet état n'est pas COLD : il signale que le travail est en pause, pas qu'une décision a figé l'artefact. Le retour à IN_PROGRESS ne nécessite pas une porte — seulement la levée du blocage.
Qui peut (dé)geler quoi ?¶
| Action | Autorisation |
|---|---|
| Créer un artefact LIVING | L'agent IA, l'humain, un script |
| Modifier un artefact LIVING | Idem |
| Geler un artefact (LIVING → COLD) | Uniquement node sdlc/sdlc.js move via une porte |
| Déplacer un artefact (BLOCKED ↔ IN_PROGRESS) | La CLI, via transitions dédiées (pas nécessairement une porte) |
| Dégeler un artefact (COLD → LIVING) | Processus explicite : archiver l'ancienne version, ouvrir une nouvelle itération avec un nouvel ID ou une reprise conscient. Jamais d'édition silencieuse. |
Signes que LIVING/COLD est respecté¶
- Les commits
chore(sdlc): <ID> <FROM>→<TO> [<PORTE>]sont nombreux — chaque gel est tracé. git logsur un fichier COLD montre : « créé en LIVING, modifié plusieurs fois, figé à telle date, non modifié depuis ».- Les sessions IA prennent le temps d'identifier la chaleur de chaque artefact avant d'y toucher.
- Les rouvertures d'artefacts COLD sont rares, et toujours accompagnées d'un événement markdown qui explique pourquoi.
Signes que LIVING/COLD est violé¶
- Un fichier censé être COLD (ex:
ehs.mdd'un BE en statutENGAGE) est modifié sans commit CLI correspondant. - L'IA propose des « améliorations » à des artefacts gelés sans passer par une porte.
- Le registre
sdlc-registry.jsonet les fichiers dans.product/dérivent : les objets semblent LIVING dans l'un, COLD dans l'autre. - Personne ne sait dire, à un moment donné, quel artefact est gelé.
Pourquoi le mot « LIVING »¶
Le contraire intuitif de COLD aurait été WARM ou HOT. Le choix de LIVING souligne que tant qu'un artefact n'est pas gelé, il est vivant : il respire, il change, il compose avec les autres artefacts vivants. Le gel le rend mort à la modification — mais vivant à la lecture. Un artefact COLD est toujours lu, jamais écrit.
Voir aussi : Herméneutique · Juste assez · Les 4 portes · Invariant sécurité.