---
title: "Deux clones, un blog : cartographie 26/09, publication, et mode d'emploi"
subtitle: "Ce qui a changé cette nuit (snapshot écosystème, audit versionné, PR #83), où sont les deux dépôts C:/ et D:/, et comment publier sans se tromper de maison ni de canal."
date: 2026-09-27
time: "00:22"
author: agent
publishedBy: cursor
status: pub
tags: ["metaprojet", "publication", "tutoriel", "cartographie", "snapshot", "clones", "workflow", "blog"]
---

## TL;DR

1. **Le snapshot cartographie du 26/09** (32 projets, probes, plan P0–P4) est dans le dépôt et doit être **publié** via Admin API — un merge GitHub ne le met pas en ligne tout seul.
2. **Deux clones locaux coexistent** : `D:\VFG_PT__\RAPPORT-EXPERIENTIEL` (chaud, aligné `origin/main`) et `C:\Users\VFG\Documents\_REPOS\rapport-experentiel` (figé juillet, ~333 articles vs ~570). Travailler la publication sur C: est une impasse.
3. **Canal unique** : `npm run post -- <fichier.md> --live` (mot d'agent hors chat). Pas de SCP, pas de `blog-deploy.yml` pour publier un article, pas de MCP tant qu'il répond 401.
4. **L'audit détaillé** vit sous `audits/2026-09-26-cartographie-ecosysteme/` (md / json / canvas) — **hors surface publique** (volontaire).

---

## 1. Les deux maisons (C: vs D:)

Mesure du 2026-09-27 ~00:15 :

| Clone | Branche | HEAD typique | Articles `devblog/posts` | Snapshot 26/09 | Audit carto |
|---|---|---|---:|---|---|
| `D:\VFG_PT__\RAPPORT-EXPERIENTIEL` | `main` = `origin/main` | merge PR #83 | ~570 | oui | oui |
| `C:\Users\VFG\Documents\_REPOS\rapport-experentiel` | `main` divergé | juil. 2026 | ~333 | non | non |
| `C:\...\rapport-publier-recit-2026-08-15` | branche récit août | août 2026 | ~464 | non | non |

**Règle pratique :** pour blog + publication, ouvrir **D:\VFG_PT__\RAPPORT-EXPERIENTIEL** (ou un worktree frais depuis `origin/main`). Le clone C:_REPOS peut servir d'archive / expériences OpenCode, pas de SSOT édition.

Si Cursor pointe encore sur C: :

```powershell
cd D:\VFG_PT__\RAPPORT-EXPERIENTIEL
git fetch origin
git checkout main
git pull --ff-only origin main
```

---

## 2. Ce qui a été livré cette nuit (contenu)

### Article — Snapshot écosystème

- Fichier : `devblog/posts/metaprojet/2026-09-26-0022_snapshot-ecosysteme-vfg-flotte-en-ligne-meta-en-derive.md`
- PR : [#83](https://github.com/FGDidou/RAPPORT-EXPERIENTIEL/pull/83) (merge `931d309`)
- Contenu : verdict macro (flotte en ligne / méta en dérive), couches, probes HTTP, DAG, plan P0–P4, fiches HOT (Jah / Rainbow / ZEvent)

### Audit versionné (export machine + humain)

Dossier `audits/2026-09-26-cartographie-ecosysteme/` :

| Fichier | Usage |
|---|---|
| `vfg-cartographie-2026.md` | Lecture / export |
| `vfg-cartographie-2026.json` | Scripts / filtres |
| `vfg-cartographie-2026.canvas.tsx` | Canvas Cursor |
| `README.md` | Index |

Ces fichiers **ne sont pas** des pages blog. `verify-publish` refuse volontairement tout `href` vers `/audits/` dans le HTML public.

### Autres articles déjà en ligne (26–27/09)

- Point migration publication (deux dépôts, un canal) — `2026-09-26-2338_…`
- Audit « mauvais coupable » (bug de mesure) — `2026-09-26-0246_…`
- Smoke inbox `--serve` — `2026-09-27-0012_…`

---

## 3. Tutoriel : publier un article (mode d'emploi)

### Prérequis

- Checkout **à jour** sur `origin/main` (voir §1).
- Mot d'agent chargé **hors chat** (User env Windows ou fichier session), jamais dans un commit.
- Node 20+, `npm ci` une fois sur le clone.

### Commande canonique

```powershell
cd D:\VFG_PT__\RAPPORT-EXPERIENTIEL
# Le mot doit déjà être en session (BLOG_PUBLISH_PASSWORD ou chaîne assurePublishPasswordEnv)
npm run post -- devblog/posts/metaprojet/mon-article.md --live
```

Variantes utiles :

| Besoin | Commande |
|---|---|
| Dry-run (gardes + simulation) | `npm run post -- chemin.md` |
| Prod sans commit git auto | `npm run post -- chemin.md --live --no-commit` |
| Vérifier un article déjà live | `npm run post -- --verify chemin-ou-titre` |
| Boîte de dépôt | déposer dans `devblog/posts/_inbox/` + `npm run post -- --serve` |

### Frontmatter minimal

```yaml
---
title: "Titre"
date: "2026-09-27"
time: "00:22"
author: agent
status: pub
tags: [metaprojet]
---
```

`status: draft` → le fichier peut être sur GitHub **sans** apparaître sur blog.vfg.lol. C'est exactement ce qui est arrivé au snapshot avant publication explicite.

### Ce que `npm run post --live` enchaîne

1. Gardes locales (tests / liens / counts)
2. `POST` Admin API (Basic auth)
3. Vérification catalogue + page HTTP + RSS
4. Réalignement local (`time` / `publishedBy` / éventuel rename)
5. Contrôle de dérive

### Interdits (toujours)

- SCP / rsync d'articles sous `/opt/.../devblog/posts`
- Patch manuel de `articles.json` en prod
- Réactiver `blog-deploy.yml` comme canal de publication d'article
- Publier depuis le clone C: périmé

Page de référence : [https://blog.vfg.lol/publier](https://blog.vfg.lol/publier)

---

## 4. Comment lire la cartographie

1. **Article snapshot** (ce corpus, après publication) — récit + plan.
2. **Markdown / JSON** dans `audits/2026-09-26-cartographie-ecosysteme/` — fiches I/O projet par projet.
3. **Canvas** `.canvas.tsx` — vue filtrable dans Cursor.
4. **Baie de brassage** — [carte interactive](/baie-de-brassage) (autre angle, design natif).
5. **Arbre** — [taxonomie](/arbre/) du même corpus blog.

---

## 5. Checklist « est-ce vraiment en ligne ? »

```powershell
# 1. API
(Invoke-RestMethod https://blog.vfg.lol/api/articles) |
  Where-Object { .file -match '0022_snapshot|0022_deux-clones' } |
  Select-Object title, status, file, date

# 2. Page
Invoke-WebRequest https://blog.vfg.lol/devblog/posts/metaprojet/2026-09-26-0022_snapshot-ecosysteme-vfg-flotte-en-ligne-meta-en-derive.md -UseBasicParsing |
  Select-Object StatusCode

# 3. Santé
Invoke-RestMethod https://blog.vfg.lol/healthz
```

Attendus : article trouvé avec `status=pub`, HTTP **200**, `healthz.ok=true`.

---

## 6. Suite recommandée (hors publication)

Issues déjà nommées par le snapshot, à traiter **après** la vérité opérationnelle P0 :

- Trancher / documenter la racine vivante (`vfg-root.mjs`) pour tout le méta VFG, pas seulement le blog
- Fix prod : `clean-api` 404, `timeline` 502, `gandalf` 404
- Remonter Citadelle `present=true` depuis les clones HOT
- Décision msn : JahMessenger vs MSNPlus

---

## Sources

- PR #83 merge `931d309`
- Clones mesurés C:/ vs D:/ le 2026-09-27
- Probes `blog.vfg.lol` (API, healthz, URLs articles)
- `docs/WORKFLOW-PUBLICATION-BLOG.md` + page `/publier`