wiki : les deux forges servent le meme wiki (origin rattrape)

CE QUE JE DISAIS ETAIT FAUX. « Il n y a rien sur origin » — le DEPOT y
est, et a jour, exactement notre HEAD. C est le WIKI qui etait vide. Je
l avais recopie d une session precedente sans le remesurer.

LA GARDE AVAIT RAISON DE REFUSER, ET TORT DE S ARRETER LA. wiki-publier
refuse un wiki vide parce que publier y inventerait un nom de branche.
Son message renvoyait a l interface Forgejo — injoignable depuis ce poste,
et ce n est pas une panne : la forge du site n accepte le 443 que des
machines qui declarent le flux.

Forgejo DECLARE pourtant la reponse : wiki_branch, dans son API. Interroge
depuis ops-01 — machine qui a le flux — il repond main. On ne devinait
pas : on ne demandait pas. WIKI_BRANCHE= ajoute a la recette, le refus
reste le defaut. Les deux cotes eprouves.

Resultat : 26 pages sur les deux forges, contenu identique au fichier pres.

LECON D INSTRUMENT. Trois sondes fausses avant la bonne : connect() direct
rend TimeoutError (politique, pas route manquante) ; un tunnel par la
frontiere ne repondait pas ; et git ls-remote fonctionnait tres bien, parce
que ~/.ssh/config passe par un ProxyJump que la sonde ignorait.

make prouver : CONFORME, 62 OK, 0 echec, 1 saute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
Daniel Allaire 2026-09-09 13:50:06 -04:00
parent 2d9dc866a9
commit 36aba37200
4 changed files with 63 additions and 9 deletions

View file

@ -1,5 +1,45 @@
# CHANGELOG — Set-OPS
## 2026-09-09 (2) — Le wiki d'`origin` : une garde qui bloquait au lieu de proteger
**Les deux forges servent desormais le meme wiki**, 26 pages, contenu identique au fichier
pres (`diff -rq` : aucune difference).
### Ce que je disais, et qui etait faux
« Il n'y a rien sur `origin` » — non. **Le depot y est, et a jour** : `git ls-remote` rend
exactement notre HEAD. C'est le WIKI qui etait vide. L'ecart entre « le depot est absent »
et « son wiki n'a pas de branche » est tout l'ecart entre une panne et une formalite, et je
l'avais recopie d'une session precedente sans le remesurer.
### La garde avait raison de refuser, et tort de s'arreter la
`make wiki-publier` refuse un wiki VIDE : sans commit il n'a aucune branche, et publier en
inventerait une — `master` sur ce poste, alors que le wiki en service vit sur `main`. Le
message disait « creer une premiere page dans l'interface Forgejo ». Or l'interface n'est
pas joignable depuis ce poste, et ce n'est pas une panne : la forge du site n'accepte le
443 que des machines qui DECLARENT le flux.
**Forgejo declare pourtant la reponse.** `GET /api/v1/repos/genome/set-ops-public` rend
`wiki_branch`. Interroge depuis `ops-01` — une machine qui a le flux — il repond `main`.
On ne devinait donc pas : on ne demandait pas.
`WIKI_BRANCHE=` a ete ajoute a la recette. Le refus reste le DEFAUT ; qui a la reponse peut
la donner. Les deux cotes sont eprouves : un wiki vide sans la variable est refuse, avec
`WIKI_BRANCHE=main` il est initialise sur `main` exactement.
### Au passage, une lecon d'instrument
Trois sondes fausses avant la bonne. Un `connect()` direct sur `10.0.33.11:443` depuis le
poste rend `TimeoutError` — route presente, paquets avales : une POLITIQUE, pas une route
manquante. Un tunnel par la frontiere ne repondait pas davantage. Et pendant ce temps
`git ls-remote` fonctionnait tres bien, parce que `~/.ssh/config` passe par un
`ProxyJump ansible@10.17.0.1` que la sonde ignorait.
L'instrument juste etait `ops-01` : la machine dont le flux vers la forge est DECLARE. Elle
repond `HTTP 200` en 443, et 22 muet — l'exact inverse du poste. *Verifier d'ou l'instrument
mesure*, encore une fois.
## 2026-09-09 — cloud-init nait avec la VM et ne lui survit pas
**63 preuves (P01-P63). `make prouver` : CONFORME, 62 OK, 0 echec, 1 saute.**

View file

@ -825,13 +825,27 @@ wiki-publier: ## Publie le wiki (wiki/) vers la forge
: ' de branche etait DEVINE, et il divergeait d une forge a l autre.'; \
: ' On refuse donc plutot que de choisir a la place de Forgejo : creer une premiere'; \
: ' page dans son interface initialise le wiki avec LA branche qu il attend.'; \
: ' ON NE DEVINE PAS — ON DEMANDE. Forgejo DECLARE la branche qu il attend, dans'; \
: ' `wiki_branch` de son API : GET /api/v1/repos/<proprio>/<depot>. Mesure du'; \
: ' 2026-09-09 sur forge.genese.internal : `wiki_branch = main`. Le refus ci-dessous'; \
: ' reste le DEFAUT — depuis ce poste l API n est pas joignable (la forge du site'; \
: ' n accepte le 443 que des machines qui declarent le flux) — mais qui a la reponse'; \
: ' peut la donner, au lieu de passer par l interface web :'; \
: ' make wiki-publier WIKI_REMOTE=... WIKI_BRANCHE=main'; \
: ' C est la difference entre une garde qui protege et une garde qui bloque.'; \
if ! git -C "$$tmp/wiki" rev-parse --verify --quiet HEAD >/dev/null; then \
printf '%s\n' 'Refus: ce wiki est VIDE (aucun commit).' \
'Publier ici inventerait un nom de branche — sur ce poste `master`, alors que' \
'le wiki deja en service vit sur `main`. Creer une premiere page dans' \
"l interface Forgejo de $(WIKI_REMOTE), puis relancer :" \
' make wiki-publier WIKI_REMOTE=...'; \
exit 2; \
if [[ -n "$(WIKI_BRANCHE)" ]]; then \
printf '%s\n' "Wiki vide : initialisation sur la branche declaree « $(WIKI_BRANCHE) »."; \
git -C "$$tmp/wiki" checkout -q -b "$(WIKI_BRANCHE)"; \
else \
printf '%s\n' 'Refus: ce wiki est VIDE (aucun commit).' \
'Publier ici inventerait un nom de branche — sur ce poste `master`, alors que' \
'le wiki deja en service vit sur `main`. Deux issues :' \
' - demander a Forgejo : GET /api/v1/repos/<proprio>/<depot> -> `wiki_branch`,' \
' puis make wiki-publier WIKI_REMOTE=... WIKI_BRANCHE=<cette valeur>' \
" - ou creer une premiere page dans l interface Forgejo de $(WIKI_REMOTE)"; \
exit 2; \
fi; \
fi; \
find "$$tmp/wiki" -maxdepth 1 -name '*.md' -delete; \
for f in "$$src"/*.md; do \

View file

@ -72,7 +72,7 @@
| P57 | Comptes en prose : les chiffres du depot sur lui-meme | — | ✅ OK | Les comptes ecrits en prose correspondent a la mesure (63 preuves, 66 roles, 40 groupes). |
| P58 | Habilitations : chaque service dit a quel GROUPE, et par quoi | — | ✅ OK | 8 habilitation(s) declarees, toutes nommant un groupe, un mecanisme connu et une raison ; les `role-realm` sont projetees. |
| P59 | Enumerations annoncees : le nombre correspond a ce qui suit | — | ✅ OK | 2 enumeration(s) annoncee(s) correspondent a ce qu'elles annoncent (formes non ambigues seulement). |
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `f89b097` (publie le 2026-09-09). |
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `2d9dc86` (publie le 2026-09-09). |
| P61 | Schema du plan : il decrit tout ce que les plans contiennent | AFF-033 | ✅ OK | Le schema decrit 47 champ(s) sur 6 registres ; il couvre tout ce que les plans reels contiennent, et la FORME de chaque champ (scalaire / objet / table) corresp |
| P62 | Schema du plan : il decrit tout ce que le MOTEUR accepte | AFF-033 | ✅ OK | Les 4 validateurs n'acceptent aucun champ que le schema ignore (applications:8, bases_donnees:4, domaines_publics:5, serveurs:3 champ(s) lus par validateur). |
| P63 | cloud-init nait avec la VM et ne lui survit pas | — | ✅ OK | cloud-init est au gabarit (la premiere seconde), absent du socle (pas de va-et-vient), et retire par le durcissement — avec la garde qui verifie que le reseau s |

View file

@ -1,5 +1,5 @@
---
# Ecrit par `make wiki-publier`, lu par la preuve P60. Ne pas editer a la main.
remote: ssh://git@eregion.chezlepro.ca:2222/Alliance-Boreale/Set-OPS-Public.wiki.git
source: f89b097
remote: ssh://git@forge.genese.internal/genome/set-ops-public.wiki.git
source: 2d9dc86
date: 2026-09-09