diff --git a/docs/superpowers/plans/2026-07-09-bus-axer-workspace.md b/docs/superpowers/plans/2026-07-09-bus-axer-workspace.md index ceac6df..d325f0c 100644 --- a/docs/superpowers/plans/2026-07-09-bus-axer-workspace.md +++ b/docs/superpowers/plans/2026-07-09-bus-axer-workspace.md @@ -11,7 +11,8 @@ ## Global Constraints - Docs de contenu en **français** ; commits en **anglais**, sujet ≤ 50 chars, corps ≤ 72 cols, **pas d'attribution IA**, pas de `--no-verify`. -- Remote Gitea en **HTTPS + token** : `https://electron@git.saillant.cc/electron-rare/bus-axer.git` (le `electron@` échappe à la règle globale `insteadOf` → ne PAS l'omettre ; SSH :2222 cassé). +- Remote Gitea en **SSH** : `git@git.saillant.cc:electron-rare/bus-axer.git` (SSH :2222 **réparé le 2026-07-09**, alias `~/.ssh/config` → Tower `100.78.6.122:2222`, validé e2e). Fallback HTTPS+token : `https://electron@git.saillant.cc/electron-rare/bus-axer.git` (le `electron@` échappe à la règle globale `insteadOf`). +- **MAJ infra 2026-07-09** : la forge Gitea tourne sur **Tower** (container `gitea`, HTTP `100.78.6.122:3001`) ; `git.saillant.cc` est routé **tunnel CF (ES) → Traefik ES** via `dynamic/git-cutover.yml` sur electron-server. - Politique supply-chain : pas de thème Hugo en submodule/upstream flottant (thème custom écrit dans le repo) ; image Docker pinnée par digest. - Répertoire de travail : `/Users/electron/Documents/BUS` (git déjà initialisé, branche `main`, `.gitignore` + spec déjà committés). - Hôtes : Tower = `clems@192.168.0.120` (Tailscale `100.78.6.122`) ; electron-server = `electron@100.78.191.52`. SSH sans mot de passe. @@ -747,16 +748,31 @@ Expected: JSON avec `"full_name":"electron-rare/bus-axer"`. Si HTTP 409, le repo ```bash cd /Users/electron/Documents/BUS -git remote add origin https://electron@git.saillant.cc/electron-rare/bus-axer.git +git remote add origin git@git.saillant.cc:electron-rare/bus-axer.git git push -u origin main ``` -Expected: push accepté (le `electron@` dans l'URL évite la réécriture `insteadOf` vers SSH). +Expected: push accepté (SSH :2222 réparé 2026-07-09, alias `git.saillant.cc` → Tower). Si l'auth SSH échoue malgré tout, fallback : `git remote set-url origin https://electron@git.saillant.cc/electron-rare/bus-axer.git` puis re-push. -- [ ] **Step 3: Vérifier** +- [ ] **Step 3: Mettre à jour la section Git de `CLAUDE.md`** -Run: `git ls-remote origin main` -Expected: une ligne avec le SHA du dernier commit local (`git rev-parse main` identique). +Remplacer dans `CLAUDE.md` (racine du repo) la section `## Git` par : + +```markdown +## Git + +- Remote : `git@git.saillant.cc:electron-rare/bus-axer.git` (SSH :2222, + forge Gitea sur Tower). Fallback HTTPS + token : + `https://electron@git.saillant.cc/electron-rare/bus-axer.git` + (garder le `electron@` — il échappe à la règle globale `insteadOf`). +``` + +Puis : `git add CLAUDE.md && git commit -m "docs: update remote URL to repaired SSH"` + +- [ ] **Step 4: Vérifier** + +Run: `git ls-remote origin main && git push` +Expected: une ligne avec le SHA du dernier commit local (`git rev-parse main` identique) après le push final. --- @@ -1014,15 +1030,17 @@ Expected: commit créé, `blog/public/` absent du commit (gitignoré). - [ ] **Step 1: Investiguer l'infra de routage `*.saillant.cc`** +Prior connu (MAJ 2026-07-09) : `git.saillant.cc` passe par **tunnel CF sur electron-server → Traefik ES** (fichier dynamique `dynamic/git-cutover.yml` dans `/home/electron/edge/`) → backend Tower. Le chemin probable pour `bus.saillant.cc` est donc : entrée DNS/ingress CF → Traefik ES → fichier dynamique `dynamic/bus-blog.yml` → Tower `:8090`. + ```bash # Mémoires de référence (routage actuel, tunnel cloudflared, état edge) -ls ~/.claude/projects/-Users-electron/memory/ | grep -Ei 'cloudflared|git_saillant' +ls ~/.claude/projects/-Users-electron/memory/ | grep -Ei 'cloudflared|git_saillant|gitea_migrated' cat ~/.claude/projects/-Users-electron/memory/reference_cloudflared_tunnel_saillant.md # État réel sur electron-server (Traefik edge + cloudflared ?) -ssh electron@100.78.191.52 'docker ps --format "table {{.Names}}\t{{.Ports}}" | grep -Ei "traefik|cloudflared" ; ls /home/electron/edge/' +ssh electron@100.78.191.52 'docker ps --format "table {{.Names}}\t{{.Ports}}" | grep -Ei "traefik|cloudflared" ; ls /home/electron/edge/ /home/electron/edge/dynamic/ 2>/dev/null ; cat /home/electron/edge/dynamic/git-cutover.yml 2>/dev/null' ``` -Expected: identifier si `*.saillant.cc` passe par le tunnel cloudflared (ingress à modifier via API CF) ou par Traefik 3 (`/home/electron/edge/docker-compose.yml` + DNS). Noter le mécanisme retenu dans `DECISIONS.md` (entrée « Exposition bus.saillant.cc »). +Expected: confirmer le chemin réel (tunnel CF → Traefik ES → Tower) et récupérer le pattern exact du routeur `git.saillant.cc` (`git-cutover.yml`) à répliquer. Noter le mécanisme retenu dans `DECISIONS.md` (entrée « Exposition bus.saillant.cc »). - [ ] **Step 2: Vérifier Docker et le port 8090 sur Tower**