/statuts-projets/ affichait agent-telemetry en rouge — « 98 jours sans nouvelles, dette nommée ». Le projet allait très bien. Il n'était simplement plus lu. Chaque affirmation ici = une commande rejouable (2026-10-05).Un tableau de bord de statuts range les projets par urgence. Un projet haute monte en tête de liste — c'est fait pour qu'on le regarde. Sauf qu'ici, l'alerte disait ceci :
agent-telemetry — 98 jours sans statut · signal debt · urgence haute.Or la vue n'avait rien inventé : elle ne fait que refléter le corpus. Le dernier statut existant datait bien du 29/06. Le problème était ailleurs : le projet n'était plus collecté. Personne n'écrivait de nouveau statut, donc l'ancien restait le plus récent — et vieillissait à l'écran.
C'est le point de méthode. On aurait pu « corriger le tableau de bord ». C'était le mauvais endroit. La page /statuts-projets/ est une projection calculée : à chaque consultation, elle relit les articles de statut et les regroupe. Sa donnée était fraîche (le JSON servi portait un horodatage du jour).
Le défaut vivait un étage au-dessus, dans le collecteur qui écrit ces articles. Mesurer d'abord, c'est ce qui évite de réparer le miroir au lieu de la pièce.
Le collecteur cherchait le fichier à 02-tools/agent-telemetry/STATUS.md. Le dépôt vivait désormais à VFVFGPT/02-tools/agent-telemetry/ — deux niveaux plus bas. Le résolveur ne l'a pas trouvé, a rendu null, et le dépôt a été ignoré à chaque passage.
Le pire n'était pas le chemin — c'était le silence. Le collecteur comptait les articles écrits, pas les dépôts introuvables. « 0 » ressemblait à « rien de neuf », pas à « une porte manquante ». Un projet peut donc disparaître du radar sans qu'un seul message ne le signale.
VFVFGPT/02-tools/. Le slug déclaré 02-tools/agent-telemetry devient faux.null. Le dépôt est skipped. Aucune alerte : la sortie compte les écrits, pas les manquants.debt.STATUS.md : agent-telemetry est le seul « MISS ». La cause est nommée, pas devinée.lastDay 2026-10-05, urgency moyenne, et 0 projet en urgence haute.agent-telemetry · lastDay 2026-06-29 · 98 j · urgence hautedebt lu dans un statut vieux de trois moisLe tableau criait au loup sur un projet qui n'avait rien demandé.
agent-telemetry · lastDay 2026-10-05 · 0 j · urgence moyenne…/2026-10-05-status-agent-telemetry.md.html → HTTP 200La ligne rouge a disparu parce que la cause a disparu, pas parce qu'on l'a cachée.
Corriger un bug, c'est souvent en croiser d'autres. Deux sont sortis, et l'un était sévère.
Un mode --dry-run est censé simuler sans rien changer. Celui-ci écrivait pourtant les 22 fichiers et le journal de suivi. Conséquence en cascade : au vrai passage, tout était déjà marqué « inchangé » → le collecteur sautait la publication. Un mode d'essai qui mutait l'état rendait la vraie exécution muette.
--dry-run → 22 fichiers écrits · journal modifié.--dry-run → 22 candidats listés · 0 fichier · journal intact.Le collecteur ignorait les dépôts introuvables sans les nommer. Ils sont désormais comptés et affichés — la prochaine dérive de chemin se verra dans la sortie, au lieu de se cacher derrière un « 0 » qui ne dit rien.
| Preuve | Commande rejouable | Résultat réel |
|---|---|---|
| Le seul dépôt perdu | mesure des STATUS.md par dépôt | 1 MISS sur 22 : agent-telemetry |
| La vue se met à jour | GET /api/statuts-projets.json | lastDay 2026-10-05 · daysSince 0 · urgency moyenne · totals.haute 0 |
| L'article est servi | GET …/2026-10-05-status-agent-telemetry.md.html | HTTP 200 |
| Le dry-run ne mute plus | status:auto --dry-run puis git status | 22 candidats · 0 fichier écrit · journal intact |
| Non-régression des tests | node --test (statuts + racines) | 27/27 vert |
| La publication réelle passe | node scripts/status-auto.mjs | 22 publiés · 0 échec |
agent-telemetry — 0 jmoyennevfgate — 1 jmoyennevfvfgpt — 1 jmoyennevfg-cockpit — 1 jbasse| Élément | Verdict | Pourquoi |
|---|---|---|
Urgence fantôme agent-telemetry | ÉLIMINÉE | lastDay 2026-10-05, urgency moyenne, servie en 200 |
| Cause « silencieuse » | ÉLIMINÉE | les « no STATUS.md » sont nommés |
--dry-run mutant | ÉLIMINÉE | ne persiste plus rien, prouvé par git status propre |
| Deux « télémétries » distinctes | À NE PAS CONFONDRE | la chaîne de présence (VFGate→Chronos) réparée le 05/10 est un autre chantier ; le MCP agent-telemetry (:5198) reste dormant — état réel écrit dans son STATUS.md |
| Push des commits | DÉCISION HUMAINE | non poussé ; deux commits locaux (blog + méta-dépôt) |