---
title: "Ports et topologie : la carte locale autour de Fil :4477"
subtitle: "Chronos 4344, VFGate 5191, Pulse 4330, collision Vite, et le lien Rainbow 0.6 — faits d'exécution, pas de légende"
date: 2026-09-30
time: "20:00"
author: VFG / Fil (Chronowflow)
publishedBy: code
status: pub
tags: ["fil", "chronowflow", "devblog", "ports", "topologie", "vfgate", "chronos", "rainbowpiano"]
---

Un Fil vide est presque toujours un **amont éteint** — ou un port qui ne parle pas à qui l'on croit. Ce billet fixe la topologie locale documentée le 15 septembre 2026, les collisions déjà rencontrées, et ce qui reste une action hors dépôt Fil (dont l'alignement Playwright RainbowPiano).

## La chaîne en une image mentale

```
Agents (Cursor, Claude, …)
        │
        ▼
   VFGate API :5191  (+ admin :5190)
        │
        ▼
   relay-vfgate.mjs  (poll ~500 ms)     ← maillon fragile
        │
        ▼
   FG_Chronos :4344                     ← seul ledger durable
        │  lecture seule
        ▼
   Fil (Chronowflow) :4477

Sources parallèles vers Fil :
   Pulse :4330 · git locaux · blog.vfg.lol
```

Points structurants (`docs/DEV-ENVIRONNEMENT.md`) :

- **Fil lit, il n'écrit pas** le ledger Chronos.
- Sans **relay**, VFGate peut « tourner » et Fil rester vide.
- Chronowflow vit dans `D:\GitRepos\Chronowflow` — **hors** du meta-repo `D:\VFG_PT__`.

## Table des ports utiles

| Service | Port | Rôle pour Fil |
| --- | --- | --- |
| **Fil** | **4477** | UI Next.js + proxies lecture |
| **FG_Chronos** | **4344** | Ledger (`agent.turn`, `act`, `presence`) |
| **VFGate API** | **5191** | Hub événements / présence |
| **VFGate Admin** | **5190** | Admin hub |
| **FG_Pulse** | **4330** | 2ᵉ source live recommandée |
| **Ollama** | 11434 | optionnel |
| **ai-usage-hub** | 11435 | optionnel |
| MCP `vfg-docs` | **4340** | **pas** Chronos (historique collision) |

### Migration Chronos `:4340` → `:4344`

Le 15 septembre 2026 (ADR 0005) : FG_Chronos, dernier arrivé, a cédé `:4340` au MCP `vfg-docs` (occupant depuis 2026-06-12) et s'est installé sur **`:4344`**. Un outil ou POC encore calé sur `4340` produit un **faux négatif** d'ingestion — vécu par `vfg-gate-trigger` (1 558 ms d'attente inutile → **17 ms** après correctif ; rejeu VERIFICATION : ingestion **4 233 ms**, chaîne OK).

`:4477` n'était pas dans la SSOT → corrigé le même jour (`_ssot/ports.json` + manifeste).

## Collision documentée : Vite vs VFGate sur `:5191`

Constat d'exécution (POC / ARTICLE / README) :

| Binding | Processus | Effet pour `127.0.0.1` |
| --- | --- | --- |
| `127.0.0.1:5191` | Vite (`--strictPort`) | Gagne → HTML / 404 |
| `0.0.0.0:5191` | `node src/server.js` (VFGate) | Invisible depuis localhost si Vite est là |

Origine du défaut Vite : **RainbowPiano** `playwright.capture.config.ts` — défaut `5191`, alors que `playwright.config.ts` utilise déjà **`5183`**.

### Action 0.6 (RainbowPiano)

Aligner le défaut capture Playwright : **`5191` → `5183`**. Le [`STATUS.md`](https://github.com/FGDidou/Chronowflow/blob/main/STATUS.md) Fil du 15 septembre consigne **0.6 comme fait** côté RainbowPiano (`playwright.capture.config.ts` aligné sur `playwright.config.ts`).

**Non rejoué depuis ce billet** : re-probe de collision Vite vs VFGate sur le poste après le patch. **Hypothèse** : la collision disparaît tant qu'aucun autre outil ne reprend `5191`.

## Ce que le POC a prouvé sur cette topologie

Session `VERIFICATION.md` (révision `c662246`, ~16:36–16:38) :

| Probe | HTTP | Note |
| --- | --- | --- |
| VFGate health | **200** | 6 adaptateurs |
| Chronos `:4344` healthz | **200** | |
| Fil `/api/chronos` | **200** | ~1,3 Mo |
| Dry | verdict **`mock-only`** | rien injecté |
| Live `--presence` | chaîne **PASS** | Fil session trouvée `active` + Stop `completed` |

Un Fil qui répond `200` sur `/api/chronos` **ne prouve pas** que VFGate a livré ailleurs — seulement que la lecture Chronos côté Fil fonctionne.

## Pièges d'opérateur (déjà rencontrés)

| Symptôme | Cause typique | Réflexe |
| --- | --- | --- |
| UI Fil ne change pas après edit | Ancien `node` sur **4477** (lanceur = build prod) | `Get-NetTCPConnection -LocalPort 4477` · `npm run build` + restart, ou `npm run dev` |
| Présence absente, hubs « ok » | Relay éteint | Relancer `relay-vfgate.mjs` |
| Commits git « du mauvais dépôt » | `git -C` sous-dossier | Exiger `rev-parse --show-toplevel` |
| Badge dégradé alors que tout est calme | `empty` pris pour `down` | Seuls `down` / `stale` dégradent |
| Nouveau test « vert » mais inutile | Oublié de la liste `package.json` `test` | Ajouter le fichier explicitement |

## Chemins disque (rappel)

| Composant | Chemin typique |
| --- | --- |
| Fil | `D:\GitRepos\Chronowflow` |
| Chronos | `D:\VFG_PT__\FG_Chronos` |
| VFGate | `D:\VFG_PT__\BDDBridgePOC` |
| Pulse | `D:\VFG_PT__\FG_Pulse` |
| POC observation | `Chronowflow/vfg-gate-trigger/` |

## Preuves vs non exécuté

### Preuve

- Topologie et ports : `docs/DEV-ENVIRONNEMENT.md` (version docs `0.5.0`).
- Probes + dry/live : `vfg-gate-trigger/VERIFICATION.md`.
- Collision Vite / défaut Playwright : README + AUDIT du POC.

### Non exécuté

- Re-probe collision `:5191` après le patch Rainbow 0.6 (STATUS dit fait ; non rejoué ici).
- Redémarrage VFGate depuis `main` (0.5).
- Cartographie runtime complète de *tous* les processus du poste au moment de la rédaction.
- Preuve que `:4477` SSOT est synchronisée sur toutes les machines hors poste d'auteur (**non mesuré**).

## Une phrase pour la suite

La topologie de Fil tient en quatre numéros — **4477 / 4344 / 5191 / 4330** — et la plupart des « bugs Fil » sont des **ports qui mentent** ou un relay absent ; garder `5183` côté Playwright Rainbow évite de rouvrir la porte la plus bête sur `5191`.

---

*Sources : `docs/DEV-ENVIRONNEMENT.md`, `vfg-gate-trigger/VERIFICATION.md`, `README.md`, `HANDOFF.md`, `STATUS.md`, `DERNIERE-INFO.md`. Billet lié : `2026-09-15-vfg-gate-trigger-chaine-presence.md`. Miroir : `Chronowflow/docs/devblog/`.*