STATUS — VFG_Cockpit
_Article généré automatiquement depuis le STATUS.md de VFG_Cockpit — 2026-10-03. Les chemins locaux, les hôtes internes et les noms de variables ont été neutralisés._
STATUS — VFG_Cockpit
Dernière mise à jour : 2026-07-18 (heure Paris).
État : Phase 1.1 en prod sur https://cockpit.vfg.lol — smoke Windows + WSL2 + VPS OK ; correctifs PWA (manifest hors Basic Auth) et SSE (Content-Type: text/event-stream via reply.hijack). Validation esthétique CRT FG toujours ouverte. Citadelle VPS encore en 401 ([variable d'environnement]).
Ce qui existe
- Scaffold complet :
.gitignore,package.json,.env.example,config/*.config.json(upstreams, seuils, flotte), CI,check-secrets,genere-pin-hash,bff/lib/paris-time.mjs. - Contrat d'état mock :
demo/mock-etat.mjs(schéma1, scénario animé 120 s, déterministe) + tests contrat. Sections : upstreams, flotte, projets, ordres, blog, messages, ondes, jeux, vfgate, cerveau (IdeaPit), workflow (handoffs + bus agents), vie (rythme/équilibre), alertes, ticker. - Design system rétro-futuriste :
public/css/crt.css(palette phosphore, scanlines, mode nuit) +composants.css(LED, jauges, compteurs 7-seg, interrupteurs/capot aviation, cadres à rivets, ticker, sparklines) +public/js/pictos.js+demo/styleguide.html. - Hub navigable :
#/= grille 12×8 (Surface, inchangée ≥ 1200 px) + 7 sous-pages (#/projets,#/flotte,#/publication,#/comms,#/jeux,#/cerveau,#/workflow) viarouteur.js(hash SPA, client d'état unique) +nav.js(rail haut, barre basse mobile, pouls global). Tap sur un instrument → sa sous-page. - KPIs calculés :
public/js/derive.js(pur, testé) — pouls du Royaume 0-100, latences, cadence de publication, âge dernier message, flux d'idées, heure de pointe… - Responsive :
responsive.css— Surface/desktop sans scroll, tablette 6 colonnes, mobile colonne unique + nav basse 44 px. - PWA :
manifest.webmanifest(+crossorigin=use-credentials), icônes SVG,sw.jsréseau-d'abord. Sur Caddy prod, manifest / icônes / sw.js hors Basic Auth (sinon fetch manifest → 401). - Démo autoportante :
npm run cockpit:demo→demo/cockpit-demo.html, un seul fichier HTML offline (modules bundlés esbuild + CSS + polices inlinés, zéro réseau, ouvrable au double-clic). Généré, non versionné (gitignore). - BFF Phase 1 + 1.1 :
poller.mjs,sse-hub.mjs,server.mjs(Fastify 5 +@fastify/static) —GET /api/etat,GET /api/events(SSE). Clients réels : citadelle, vfgate, blog, msn, flotte, jeux (hero+matrice), ideas, bus. Blog défaut = local:5195(prod viaBLOG_URL). Aggregator dériveupstreams.hero/upstreams.matricedepuis la tranchejeux. Arrêt propre SIGINT/SIGTERM. - SSE :
/api/eventsutilisereply.hijack()+writeHeadavecContent-Type: text/event-stream(sinon headers absents → EventSource abort). - Front :
sourceReseauen prod (:5230) ; mock uniquement via import dynamique si port 5231 ou?mock=1(évite 404/demo/mock-etat.mjshorspublic/). scripts/dev-static.mjs: serveur statique de dev.- Déploiement :
deploy/vfg-cockpit.service,deploy/cockpit.caddy(PWA public +flush_interval -1pour SSE),deploy/deploy-vps.sh→cockpit.vfg.lol. Install VPS actuelle : sync fichiers +.deployed-sha(pas encore de clone git propre sous[chemin serveur]). - 113/113 tests verts,
check:secretsvert. - Smoke Windows + WSL2 Debian + VPS faits (2026-07-17/18).
Lancement
npm run cockpit→http://[hôte interne]/- Mock front :
node scripts/dev-static.mjs→http://[hôte interne]/public/index.html - Navigation : onglets du rail (ou barre basse mobile), tap sur un instrument, bouton ‹ pour revenir au hub.
- Prod :
https://cockpit.vfg.lol(Basic Auth admin) — SSH fallbackssh -F NUL -i ~/.ssh/id_ed25519 debian@51.77.244.222si ACL~/.ssh/config.
Points techniques à surveiller
- VFGate « 0 adaptateur — la porte attend » : volontaire, ne pas « fixer ».
- Boutons Phase 2 : marqués Phase 2, ne pas les câbler.
- Validation esthétique FG : toujours ouverte (CRT non retouché sans GO).
- MSN
derniers: vide sans session user (historique privé) — hub + services OK. - Blog prod
articles.jsonpeut répondre 403 ; blog local:5195ouBLOG_URL. - Citadelle VPS :
degrade/ HTTP 401 tant que[variable d'environnement]non aligné dans[chemin serveur]. - Caddy : admin API
:2019off →systemctl restart caddy(pasreload). - Publication blog éditoriale : Admin API (
POST /admin/api/articles), pas ungit pushseul — voir guide Anneau /publish-local.mjs.
Ensuite
- Aligner
[variable d'environnement](+ éventuellementBLOG_URL) sur le VPS. - Clone git propre
[chemin serveur]+ deploy key (remplacer sync tar). - Validation esthétique CRT par FG.
- Phase 2 : écritures gates R1/R2 (boutons actuellement factices).
Historique
- 2026-07-18 : Hotfix prod — PWA hors Basic Auth ; mock import dynamique ;
SSE
hijack+writeHead+ Caddyflush_interval -1. Smoke post-fix OK. Article blog : cockpit Phase 1.1 + hotfixes. - 2026-07-17/18 : Reprise validation — pull
f594997, smoke Windows + WSL2, alignement VPS (tar faute de git remote), article blog Phase 1.1 publié. - 2026-07-17 : Phase 1.1 + deploy VPS — clients msn/flotte/jeux/ideas/bus, blog local :5195, systemd+Caddy, fix aggregator degrade+donnees, 113 tests.
- 2026-07-17 : Phase 1 BFF — poller + sse-hub + server.mjs, clients citadelle/vfgate/blog, front sourceReseau (PR #5).
- 2026-07-10 : détails niveau 2 dans les sous-pages (voir
handoffs/2026-07-10-handoff-details-niveau-2.md). - 2026-07-09 : hub navigable v2 (voir
handoffs/2026-07-09-handoff-hub-navigable-v2.md). - 2026-07-08 : Phase 0 démo + amorce Phase 1 (voir
handoffs/2026-07-08-handoff-phase0-demo-et-amorce-phase1.md).