diff --git a/docs/CONFIG-ENV.md b/docs/CONFIG-ENV.md
index 6b4e508..7f39fdc 100644
--- a/docs/CONFIG-ENV.md
+++ b/docs/CONFIG-ENV.md
@@ -10,6 +10,15 @@ Si un seul de ces 3 paramètres est faux → on obtient :
- 404 / redirect login inattendu
- ou un repo/owner incorrect
+
+# Diagnostic — “Proposer” (résumé)
+
+**Symptôme :** clic “Proposer” → 404 / login / mauvais repo
+**Cause la plus fréquente :** `PUBLIC_GITEA_OWNER` (casse sensible) ou `PUBLIC_GITEA_REPO` faux.
+
+➡️ Procédure complète (pas-à-pas + commandes) : voir `docs/TROUBLESHOOTING.md#proposer-404`.
+
+
## 1) Variables utilisées (publique, côté build Astro)
- `PUBLIC_GITEA_BASE`
diff --git a/docs/DEPLOY_PROD_SYNOLOGY_DS220.md b/docs/DEPLOY_PROD_SYNOLOGY_DS220.md
index c19ad03..87c5858 100644
--- a/docs/DEPLOY_PROD_SYNOLOGY_DS220.md
+++ b/docs/DEPLOY_PROD_SYNOLOGY_DS220.md
@@ -83,6 +83,17 @@ for f in .env .env.local .env.production .env.production.local; do
[ -f "$f" ] && echo "---- $f" && grep -nE '^PUBLIC_GITEA_(BASE|OWNER|REPO)=' "$f" || true
done
+En cas d’échec :
+- 404 / login loop / mauvais repo → `docs/TROUBLESHOOTING.md#proposer-404`
+- double onglet → `docs/TROUBLESHOOTING.md#proposer-double-onglet`
+
+## Diagnostic — “Proposer” (résumé)
+
+**Symptôme :** clic “Proposer” → 404 / login / mauvais repo
+**Cause la plus fréquente :** `PUBLIC_GITEA_OWNER` (casse sensible) ou `PUBLIC_GITEA_REPO` faux.
+
+➡️ Procédure complète (pas-à-pas + commandes) : voir `docs/TROUBLESHOOTING.md#proposer-404`.
+
## 5) Reverse Proxy DSM (le point clé)
### DSM 7.3 :
diff --git a/docs/FEATURE-PROPOSER.md b/docs/FEATURE-PROPOSER.md
index a95721c..8197cc5 100644
--- a/docs/FEATURE-PROPOSER.md
+++ b/docs/FEATURE-PROPOSER.md
@@ -43,61 +43,15 @@ Le flow ne doit jamais ouvrir deux onglets.
- un seul `a.target="_blank"` (ou équivalent) déclenché
- sur click : handler doit neutraliser les propagations parasites
-### Vérification (NAS)
-en sh :
-curl -fsS http://127.0.0.1:8082/archicratie/archicrat-ia/chapitre-4/ > /tmp/page.html
-grep -n "window.open" /tmp/page.html | head
+## Diagnostic (canonique)
-Doit retourner 0 ligne.
+Le diagnostic détaillé est centralisé dans `docs/TROUBLESHOOTING.md` pour éviter les doublons.
-## 3) Diagnostic “trace ouverture onglet” (navigateur)
+- 404 / non autorisé / redirect login :
+ - voir : `TROUBLESHOOTING.md#proposer-404`
+ - cause la plus fréquente : `PUBLIC_GITEA_OWNER/REPO` faux (souvent casse)
-Dans la console, tu peux surcharger temporairement les mécanismes d’ouverture pour tracer :
+- Double onglet :
+ - voir : `TROUBLESHOOTING.md#proposer-double-onglet`
+ - cause la plus fréquente : double handler (bubbling) ou `window.open` + `a.click()`
-si un window.open survient,
-
-ou si un a.click target _blank est appelé.
-
-But : prouver qu’il n’y a qu’un seul événement d’ouverture.
-
-## 4) URL attendue (forme)
-
-L’onglet doit ressembler à :
-
-{PUBLIC_GITEA_BASE}/{OWNER}/{REPO}/issues/new?title=...&body=...
-
-Important : owner et repo doivent être exactement ceux du repo canonique.
-
-## 5) Pré-requis d’accès
-
-L’utilisateur doit être loggé sur Gitea pour accéder à /issues/new
-
-Si non loggé : redirect vers /user/login (comportement normal)
-
-## 6) Tests fonctionnels (checklist)
-
-Ouvrir une page chapitre (ex chapitre 4)
-
-Clic Proposer (sur un paragraphe)
-
-Choix 1 puis choix 2
-
-Vérifier :
-
-1 seul onglet
-
-URL du repo correct
-
-formulaire new issue visible
-
-title/body pré-remplis (chemin + ancre + texte actuel)
-
-Créer l’issue → vérifier le traitement CI/runner
-
-## 7) Pannes typiques + causes
-
-404 sur issue/new : PUBLIC_GITEA_OWNER/REPO faux (souvent casse)
-
-2 onglets : double handler (bubbling + ouverture multiple)
-
-pas de favicon : cache ou absence dans public/ → rebuild
diff --git a/docs/OPS-DEPLOYMENT.md b/docs/OPS-DEPLOYMENT.md
index fb37871..f5bfd3a 100644
--- a/docs/OPS-DEPLOYMENT.md
+++ b/docs/OPS-DEPLOYMENT.md
@@ -11,6 +11,36 @@ Objectif : déployer une nouvelle version du site sur le NAS (DS220+) sans jamai
> Si tu lis ceci pour déployer : stop → ouvre le canonique.
+> ⚠️ LEGACY — Ne pas suivre pour déployer.
+> Doc conservé pour historique.
+> Canon : `DEPLOY_PROD_SYNOLOGY_DS220.md` + `OPS-SYNC-TRIPLE-SOURCE.md`.
+
+## Pourquoi ce doc existe encore
+
+- Historique : il capture des repères (domaines, ports, logique blue/green) tels qu’ils ont été consolidés pendant la phase d’implémentation.
+- Sécurité : éviter la divergence documentaire (un seul pas-à-pas officiel).
+- Maintenance : si tu dois déployer, tu suis le canonique ; ici tu ne viens que pour comprendre “d’où ça vient”.
+
+## Ce qu’il faut faire aujourd’hui (canonique)
+
+➡️ Déploiement = `docs/DEPLOY_PROD_SYNOLOGY_DS220.md` (procédure détaillée, à jour).
+
+## Schéma (résumé, sans commandes)
+
+- Ne jamais toucher au slot live.
+- Construire/tester sur l’autre slot.
+- Smoke test.
+- Bascule DSM Reverse Proxy (8081 ↔ 8082).
+- Rollback DSM si besoin.
+
+
+
+> 🚫 NE PAS UTILISER POUR PROD — ARCHIVE UNIQUEMENT
+
+Archive — ancien pas-à-pas (NE PAS SUIVRE)
+
+> ⚠️ Archive. Ce contenu est conservé pour mémoire.
+
## 0) Repères essentiels
Noms & domaines
• Site public (prod) : https://archicratie.trans-hands.synology.me
@@ -393,3 +423,5 @@ Fix standard (dans le vrai dossier site/) :
rm -rf node_modules .astro dist
npm ci
npm run dev
+
+
diff --git a/docs/OPS-REFERENCE.md b/docs/OPS-REFERENCE.md
index 274d7b9..de9b451 100644
--- a/docs/OPS-REFERENCE.md
+++ b/docs/OPS-REFERENCE.md
@@ -4,7 +4,7 @@ Document “pivot” : liens, invariants, conventions, commandes réflexes.
## 0) Invariants (à ne pas casser)
-- **Source de vérité Git** : `origin/main` sur :contentReference[oaicite:0]{index=0}.
+- **Source de vérité Git** : origin/main (repo Archicratia/archicratie-edition sur Gitea).
- **Prod** : conteneur `archicratie-web-*` (nginx) derrière reverse proxy DSM.
- **Config “Proposer”** : dépend de `PUBLIC_GITEA_BASE`, `PUBLIC_GITEA_OWNER`, `PUBLIC_GITEA_REPO` injectés au build.
- **Branches** : `main` = travail ; `master` = legacy/compat (alignée mais protégée).
diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md
index e29c713..2fa6dd3 100644
--- a/docs/TROUBLESHOOTING.md
+++ b/docs/TROUBLESHOOTING.md
@@ -15,6 +15,7 @@ Toujours isoler : **Local**, **Gitea**, **NAS**, **Navigateur**.
---
+
## 1) “Proposer” ouvre Gitea mais retourne 404 / non autorisé
### Symptôme
@@ -38,6 +39,7 @@ Puis rebuild + restart du container + smoke.
---
+
## 2) Double onglet à la validation du flow “Proposer”
### Symptôme
@@ -64,7 +66,9 @@ garder un seul mécanisme d’ouverture
sur click : preventDefault() + stopImmediatePropagation()
+
## 3) Favicon 504 / erreurs console sur favicon
+
# Symptôme
Console navigateur : GET /favicon.ico 504
diff --git a/docs/anchors.md b/docs/anchors.md
index 019a3dd..e457d08 100644
--- a/docs/anchors.md
+++ b/docs/anchors.md
@@ -63,7 +63,7 @@ Si l’ID exact n’existe plus :
But : éviter les “liens morts” historiques quand une régénération d’IDs a eu lieu.
Limite : c’est un fallback de dernier recours (moins déterministe qu’un alias explicite).
-Le mécanisme recommandé reste : `docs/anchor-aliases.json` + injection au build.
+Le mécanisme recommandé reste : `src/anchors/anchor-aliases.json` + injection au build.
_______________________________________
@@ -87,7 +87,7 @@ Les IDs d’ancres générés (ou dérivés) peuvent changer :
## 2) Le mapping d’alias
-- Fichier versionné (ex) : `docs/anchor-aliases.json`
+- Fichier versionné (ex) : `src/anchors/anchor-aliases.json`
- Format : `oldId -> newId` par page
Ex en json :