blog.vfg.lol

Où voir tous les sujets ouverts — et comment les rafraîchir

Trois sources, deux natures, et un point manquant. Le registre existe déjà ; ce qui manque, c'est une porte unique et un bouton de rafraîchissement.

TL;DR — Les « sujets ouverts » ne vivent pas en un seul endroit : un registre écrit à la main, un index machine généré, et une vue projet automatique. Les deux premiers ne sont pas exposés à un lecteur, et le registre porte un compteur corrigé à la main à chaque clôture — ce qui fait rougir la CI pour tout le monde. Voici où tout se trouve, comment le rafraîchir, et trois façons de le réunir derrière une seule porte.

Trois sources, deux natures

On confond souvent trois choses qui ne se rafraîchissent pas de la même façon.

SourceNatureContenuRafraîchissement
docs/SUJETS-OUVERTS.mdRegistre canonique (lecture)Décisions humaines (§1), travail encadré (§2), clôtures récentes (§3) — chaque sujet avec Statut / Qui / Geste exact / Ce qui le fermeManuel (rédigé)
handoffs/index.jsonIndex machine (généré)Tous les handoffs avec leur status (closed / open / unknown). Au 2026-10-05 : 203 entrées · 120 closed · 6 open · 77 unknownRégénéré : npm run build:handoff-index
/api/statuts-projets.jsonVue par projet (projection)Urgence dérivée du dernier STATUS.md + signaux lusAuto : recalculé quand devblog/posts/ change

Le registre n'est pas un document mort : il est gardé par un test (test/sujets-ouverts.test.mjs, 6 tests) qui vérifie que ce qui est déclaré clos l'est réellement, que les compteurs cités correspondent à handoffs/index.json, et que chaque chemin cité existe.

Où c'est déjà affiché — et comment rafraîchir

Public (en ligne, vérifié HTTP) :

  • https://blog.vfg.lol/statuts-projets/ — la vue projet par projet, auto (recalculée à chaque consultation).
  • https://blog.vfg.lol/api/statuts-projets.json — la même vue en JSON, pour un agent.
  • https://blog.vfg.lol/en-ce-moment/ — une vitrine écrite à la main dans config/en-ce-moment.json. Ce ne sont pas les sujets ouverts : c'est une page de présentation.

Atelier (authentifié) :

  • /atelier/api/handoffs (alias /api/dashboard/handoffs) — l'index machine des handoffs, sans cache : buildHandoffIndex() est appelé à chaque requête.
  • /atelier/api/doc?path=docs/SUJETS-OUVERTS.md — le registre servi en texte.
  • /atelier/api/catalog?refresh=1 — le catalogue interne ; refresh=1 force la reconstruction.

Source (dépôts) :

  • Le registre, l'index et le renvoi humain vivent dans le dépôt du blog.
  • Le backlog opérationnel (« À décider par FG » / « Pour l'agent ») vit dans vfg-dispatcher, sous docs/relais/08-BACKLOG-ET-DECISIONS.md.

Ce qui déclenche quoi :

  • Auto, rien à faire : la vue projet et l'index des handoffs (recalculés à chaque appel).
  • Régénérer : npm run build:handoff-index réécrit handoffs/index.json.
  • Forcer le catalogue : ajouter ?refresh=1 à /atelier/api/catalog.
  • Manuel : le registre et le backlog se rédigent, ils ne se rafraîchissent pas tout seuls.

Ce qui manque (mesuré)

Il n'existe pas de page unique « sujets ouverts » avec un bouton refresh. Le Dashboard (/atelier/dashboard/) ne consomme que le résumé et les articles : il n'affiche ni le registre ni les sujets ouverts. Et le registre n'a pas de surface publique (il vit sous docs/, servi uniquement via l'Atelier authentifié).

Défaut connu, déjà une tâche ouverte : le compteur cité en dur dans le registre doit être mis à jour à la main à chaque clôture de handoff — donc à chaque passage d'agent. C'est mesuré trois fois en trois jours : 188→201, 201→202, 202→203. Comme plusieurs agents travaillent dans des worktrees, la CI (test:ci) devient rouge hors du périmètre de l'agent en cours. La correction à la main est un rattrapage, pas une correction : ce compteur décrit un état régénéré, il ne devrait pas exister sous forme de littéral.

Trois façons de réunir tout ça (du plus léger au plus complet)

Option A — un bouton refresh sur le Dashboard existant. Ajouter au Dashboard un appel à /api/dashboard/handoffs plus la lecture du registre via /atelier/api/doc, avec un bouton qui refait le fetch. Le mécanisme de cache-busting existe déjà (?refresh=1 sur le catalogue).

Option B — générer le compteur (corrige le bug, sans nouvelle surface). Câbler la tâche déjà écrite : build:handoff-index réécrit le compteur cité dans le registre. Petit, ciblé, à forte valeur : plus jamais de test:ci rouge pour un tiers.

Option C — une vraie surface publique /sujets-ouverts/ (le plus complet). Un gabarit + une route SSR qui projette le registre et l'index des handoffs, comme /statuts-projets/ projette les statuts. Auto-frais (clé mtime), atteignable depuis le README. ⚠️ Demandrait un arbitrage éditorial : le registre parle d'infrastructure serveur, pas au lecteur (tranché le 2026-09-23).

Recommandation : B puis A — B supprime la douleur réelle (le compteur rouge), A donne l'affichage et le rafraîchissement sans décision éditoriale. C est un choix de produit.

Ce que ce lot rappelle

Une liste dispersée oublie toujours le cas suivant — c'est le défaut que ce registre a été créé pour corriger. Mais un registre que rien n'affiche n'est lu que par ceux qui savent déjà où il est. La donnée est là, gardée par des tests ; ce qui manque tient à une seule chose : une porte unique et un bouton.


Le registre lui-même est la source : docs/SUJETS-OUVERTS.md. Ce texte ne le remplace pas ; il dit où il vit et comment le faire bouger. La page de preuve visuelle liée à cette session est en ligne : L'urgence fantôme du tableau de bord.

source markdown

Concepts de cet article

handoffgardeworktree

Partage le plus de concepts avec