TL;DR
On m'a demandé de lancer Rainbow Journey. Le premier piège était sous la main : le port 5173 — celui que tout le monde essaie par défaut — servait déjà un autre monde (« Le Jardin des Mondes »). Le jeu a donc été lancé sur un port isolé, 5186, exactement comme le documente le dépôt. Puis, en clôture, cette session a produit une carte méta : l'état des lieux mesuré du workspace VFG (dépôts, tiers, dettes) et un moyen de s'en souvenir — un skill et une règle, plus ce texte.
Le piège du port 5173
Rainbow Journey est une application Vite : par défaut, elle veut le port 5173. Réflexe naturel, donc. Sauf que la vérification avant lancement a montré que quelque chose écoutait déjà sur ce port — et ce n'était pas le piano mais un musée interactif, le portail d'un tout autre projet du royaume.
C'est un piège connu et documenté du dépôt : la doc interne rappelle qu'un ancien essai avait été trompé par un autre projet installé sur 5173, et qu'il faut désormais cibler un port dédié. Le dépôt fixe même une convention : le jeu sur un port isolé, l'E2E Playwright sur un autre encore, pour ne jamais croiser deux serveurs.
La bonne commande, donc :
Set-Location 'D:\GitRepos\RainbowPiano'
node node_modules/vite/bin/vite.js --host 0.0.0.0 --port 5186 --strictPort
--strictPort est la ceinture de sécurité : si le port est pris, Vite échoue au lieu de glisser silencieusement ailleurs — on ne découvre pas trois minutes plus tard qu'on regardait le mauvais site.
Résultat mesuré :
VITE v6.4.3 ready in 1948 ms
➜ Local: http://localhost:5186/
➜ Network: http://192.168.1.13:5186/
La page affiche bien le dialogue « Bienvenue dans Rainbow Journey », le clavier arc-en-ciel et la vallée 3D au fond. Et la vérification réseau confirme l'écoute :
Get-NetTCPConnection -LocalPort 5186 -State Listen
# 0.0.0.0:5186 → PID 6000
Leçon : « lancer un projet » n'est pas une commande, c'est une vérification suivie d'une commande. Un serveur qui répond ne prouve pas que c'est le bon serveur.
Pourquoi Rainbow Journey n'est pas dans le manifeste
Détail qui compte pour la suite : Rainbow Journey (FGDidou/RainbowJourney, package rainbowjourney) vit sous D:\GitRepos\RainbowPiano, hors du workspace actif D:\VFG_PT__. Ce n'est donc pas une entrée du manifeste des tiers — ce qui explique qu'un agent qui ne consulte que le manifeste ne le trouve pas.
flowchart LR
A["Demande : lancer Rainbow Journey"] --> B{"Manifeste des tiers ?"}
B -- non --> C["Chercher hors tiers<br/>D:\\GitRepos\\RainbowPiano"]
B -- oui --> D["Chemin canonique du manifeste"]
C --> E{"Port 5173 libre ?"}
E -- non --> F["Port isolé :5186<br/>--strictPort"]
E -- oui --> G["5173, mais vérifier l'app"]
L'état des lieux, mesuré
L'état du workspace VFG vient d'une seule commande rejouable, pas d'une lecture d'article :
Set-Location 'D:\VFG_PT__'
node _scripts/dev-meta.mjs status
Ce qu'elle rend, ce jour-là :
| Tier | Repos notables | Écarts |
|---|---|---|
| live | VFG_Hero, VFGate, CleanDaMatrix, Grimoire, IdeaPit, Pulse, Cockpit | Hero : 11 commits d'avance, 1 fichier modifié |
| dev | VFVFGPT, VFJah_Messenger, GandalfIdle, ai-usage-hub | VFVFGPT BEHIND 2, Jah BEHIND 6 — tous deux sales |
| prod | vps-rescue-scripts | absent (optionnel) |
| site | FGDidou.github.io, Matachigot | quiz-fg, visualisations absents (optionnels) |
| doc | VFG-Kit, RAPPORT-EXPERIENTIEL, LaboHub | — |
| archived | VFG-UnifiedPOC, Lucien, ____Currently_Archived | no-touch |
Trois dettes ressortent de la mesure :
- Deux dépôts en retard sur leur remote (VFVFGPT, VFJah_Messenger) avec un arbre de travail non propre — à traiter avant toute reprise dessus.
- Une collision de port documentée :
:5210est partagé entre l'ancien et le nouveau messenger ; les deux ne tournent pas ensemble. - Une divergence de convention sur les handoffs : la règle impose
handoffs/à la racine du méta-dépôt, mais le méta-dépôt n'a en réalité quedocs/handoffs/. Deux règles, deux emplacements — à trancher, pas à contourner par un troisième.
La carte méta : se souvenir sans relire
Un état des lieux ne sert que s'il survit à la session. Deux artefacts ont donc été posés :
- un skill
.cursor/skills/dev-meta-carte/SKILL.md— la carte des racines, des tiers, des ports, des points de vérité et des pièges de mesure ; - une règle
.cursor/rules/vfg-carte-meta.mdc— un pointeur always-on vers ce skill.
Le principe est celui qu'on retrouve partout dans le royaume : mesurer avant de déduire. Chaque constat d'état porte sa date et la commande qui le reproduit. Un article décrit un état daté, jamais l'état présent.
Ce que cette session n'a pas fait
Par honnêteté de clôture :
- aucun
git push— un push est une décision distincte (il peut déclencher un déploiement) ; les commits restent locaux ; - aucune modification du code du jeu — la demande était de lancer, pas de changer ;
- aucune mesure GPU / piano physique — ce sont des validations humaines.
Pour reprendre
Get-NetTCPConnection -LocalPort 5186 -State Listen -ErrorAction SilentlyContinue
Set-Location 'D:\GitRepos\RainbowPiano'
node node_modules/vite/bin/vite.js --host 0.0.0.0 --port 5186 --strictPort
# puis ouvrir http://localhost:5186/ (bouton Demo pour jouer sans piano MIDI)
Et avant toute intervention multi-repo, charger la carte méta. La mémoire d'un système n'est pas ce qu'on en a écrit une fois : c'est ce qu'on peut re-mesurer à tout moment.