blog.vfg.lol

STATUS — JahMessenger-admin-v2-a — 2026-10-07

STATUS — JahMessenger-admin-v2-a

Article généré automatiquement depuis le STATUS.md de JahMessenger-admin-v2-a — 2026-10-07. Les chemins locaux, les hôtes internes et les noms de variables ont été neutralisés.

STATUS

Session

06/10 ~02:30 — 4.0.24 EN LIVE : hotfix papillon déployée à la main, vu de ses yeux. Handoff. Chaîne hors CI (runners off) : release 4.0.24 (#348 fusionnée) + #347 (trace) → image ghcr.io/fgdidou/jahmessenger:4.0.24 @ sha256:445cb5ab…, construite sur le VPS (le poste n'a pas Docker), poussée GHCR (PAT FG write:packages), sondée à l'écart (/readyz 4.0.24) puis bash deploy.sh jah 4.0.24 --backup : backup jah-20261006-001959, voile posé avant l'arrêt, hub Healthy, /readyz 4.0.24, repli armé vers 4.0.23. Sonde externe : /readyz 4.0.24, /ws 401, RestartCount=0, LogConfig json-file/10m/3 (OPS-09). Maintenance posée/levée en live pour la mue (chenille → cocon → papillon). Issue #343 fermée. Notif didou + Telegram envoyée (ingress, notify_telegram:true, relais VFGate confirmé). Article 4.0.24 : déployer à la main, et voir le papillon (catalogue 736). ⚠️ PAT FG à révoquer (passé par le chat).

06/10 ~01:50 — Suite du dispatch : preuve BUG-PAPILLON sur le clone, AUDIT-QG clos, worktrees qualifiés, BLOG-01/02 publiés. Handoff. BUG-PAPILLON (#344 déjà sur main) : preuve visuelle sur le clone prod — chenille → cocon → papillon pendant un arrêt de maintenance, et bandeau « Reconnexion… » sans overlay hors maintenance ; chemin réel server.close() → realtime.shutdown() exercé (les signaux n'aboutissent pas par TerminateProcess sous Windows → harnais local). Captures 1280×800 + 390×844 → handoffs/captures/2026-10-06/ + preuve-papillon.json ; issue #343 prête à fermer. AUDIT-QG : P-04 clos (0 dead-export, cliquet à zéro) ; P-06 confirmé (11 lectures / 0 écriture) ; batterie unité+intégration rejouée Node 24.19 — 1068 tests, 1066 ✓, 0 ✗, 2 skip ; addendum daté dans REGISTRE + SYNTHESE. Worktrees : inventaire corrigé (le merged du 05/10 testait le HEAD du dépôt, toujours « oui ») → 10 worktrees à commits uniques, décision proposée (retirer 13, conserver t1b+L08+racine) ; 2 worktrees non protégés sauvés par refs. Retrait = action FG (§14). BLOG-01/02 publiés : ciblé ≠ FULL + Retours — catalogue 735, flux 476, pages HTTP 200 ; RAPPORT 0/0 (divergence levée).

06/10 ~01:27 — Ordonnanceur : sync propre, BUG-PAPILLON livré (PR #344), HYGIENE fait. Handoff. V0 sync : local divergé 19/1 et 17 fichiers sales → 0/0 propre sur origin/main (6339f4d) ; hybride (restes jah-tools + skills) mis de côté en stash, rien d'unique perdu. BUG-PAPILLON : cause = shutdown() fermait toujours reason:'restart' ; rouge d'abord (actual 'restart' / expected 'maintenance') puis correctif src/realtime/realtime.mjs ; porte PR verte (1068 tests, 0 échec, 2 skip env) ; PR #344 (issue #343), CI non exécutée (workflows off). HYGIENE : worktrees 48 → 17, branches 89 → 27 (63 purgées) ; L08 préservé ; pièges ignorés (.metrics, .claude, logs) sauvés dans ../_hygiene-preserved-1006/ ; .tools (133 Mo Node portable) non copié (re-téléchargeable). Reste : fusionner #344, qualifier les 15 worktrees non fusionnés. Clôture (06/10 ~01:29) : #344 fusionnée par FG pendant la session (merge fd3111a, correctif sur main, pas encore déployé) ; #345 CLEAN, en attente de fusion FG ; issue #343 à fermer après vérification ; article possible inscrit au handoff (pas de mandat).

06/10 ~01:00 — Clôture session (outillage visuel + blog + dispatch). Handoff. Résumé : plan dispatchable (#333, file 4.1.0 remise vraie) ; hub + matrices de priorités + nav partagée + instantané régénérable (#334–#338) ; D1 tranché = GitHub privé → dépôt dédié jah-tools (#339, pointeur #340) ; article publié Le worktree était un détour. 0 PR ouverte. Prochaine action : dispatcher les P0 BUG-PAPILLON ∥ HYGIENE.

06/10 — Outillage visuel sorti vers un dépôt dédié (jah-tools). Décision FG D1 = GitHub privé. L'outillage d'organisation (hub, matrices de priorités, kanban des lots, « où on bute », état des vues STAB) vit désormais dans jah-tools (https://github.com/FGDidou/jah-tools, privé ; dépôt voisin) — retiré de JahMessenger par #339. Ici : pointeur docs/plans/outillage-deplace.md + npm run tools. Écrire dans jah-tools désormais : npm run boards (instantané), npm run metrics, npm run stab-vues. JahStyle (design) rejoint le même espace de travail VS Code (JahMessenger.code-workspace) pour homogénéiser l'aspect.

06/10 — Outillage agents : deux séances « hors voie normale » outillées (hors produit). Ajout de deux paires skill + agent découvrables (skill .agents/skills/<nom>/SKILL.md, agent .github/agents/<nom>.agent.md), sans aucun code produit ni dépendance (§12). clone-prod-local (+ agent Jah Cloneur Prod) : monte un Jah local sur une copie jetable des données de prod (village PTR « à la main ») — mesure, copie lecture seule du backup + files de jah-hub-1, mot de passe local, piège CRLF des migrations, démarrage sur data/clone-prod/, sonde /readyz, connexion, destruction. Prouvé en réel le 06/10 : Jah 4.0.23 local sur backup jah-20261005-215910-142.db, connexion fg@jah OK, vrais contacts/salons visibles. local-player (+ agent Jah Joueur Local) : joue dans l'interface locale à la place de FG via les outils navigateur (cliquer, écrire, naviguer, capturer), local seulement, sans secret, un geste vérifié à la fois, bug = reproduction (pas correctif). Indexés dans .agents/README.md, CLAUDE.md, AGENTS.md, .cursor/rules/jah-core.mdc. PR #337 (brouillon, base main, mode CI affected). Lint vert (1363 fichiers). Handoff.

Plan dispatchable (05/10) : docs/plans/plan-2026-10-05-dispatch-parallele.md — lots priorisés pour agents parallèles. Constat : 48 worktrees pour ~4 chantiers utiles ; 21 branches déjà fusionnées ; la file 4.1.0 marquait pret 7 lots déjà live (corrigés en livre ce jour). P0 = BUG-PAPILLON (overlay de maintenance, test rouge d'abord) ∥ HYGIENE (recycler worktrees/branches). Gelé : train 4.1.0 (L07/L08/L09/L10) et portes humaines. PR #332 = superseded (à fermer). Un agent = un lot = un worktree réutilisé.

Consigne FG du 05/10 — ménage : quota Actions de 2000 minutes épuisé ; les dix workflows sont désactivés manuellement (état GitHub vérifié). FG effectue toutes les fusions de cette passe. L’agent prépare les lots et preuves locales, sans réactiver les workflows, lancer un run, créer un tag ou déployer. Aucun vert local ne vaut préprod runner. Nouvelle instruction FG : issues CI/CD et métriques de runs mises de côté pendant cet arrêt.

Avancement : PR #326 documentaire fusionnée par FG (06ff944) ; sauvegardes vérifiées. Reprises de releases immutables intégrées par #327 (df64a81). Archives intégrées par #329 (7c263b7). Concurrence et garde d’état reprises dans une PR locale regroupée, avec bilan du ménage. Porte locale sur la reprise finale : 602 unitaires réussis, zéro échec, deux contrôles Docker non exécutés ; lint/audit verts en 38,8 s. Restitution des 16 worktrees modifiés et 35 fichiers vérifiée. #317 fermé sur preuve existante. 33 worktrees et 31 branches retirés après preuve ; 48 worktrees conservés. Root sale et L08 inchangés ; junctions et fichiers ignorés non qualifiés conservés. Handoff de reprise. Répartition local/cloud proposée : local récupération/M3/ménage, cloud C1/C2 intégré par #330, scopes exclusifs ; compression des PR cohérentes autorisée par FG, une PR à la fois. #230/#312/#313 réconciliées et fermées ; #316 clôturée ; #318 ouverte jusqu’à fusion M3 ; #319 ouverte pour Q-I différé, Q-G cloud intégré par #330.

05/10 — Issues CI-flux / préprod en pause (#312–#315) : label pause:ci-minutes, fermées not_planned (runners off). PAT cloud documenté dans docs/plans/cloud-pat-droits.md (Issues R/W prouvé ; Actions pas encore). Attente plan agent « Bilan » pour travail parallèle hors CI.

05/10 — Outillage : skill hotfix-hors-ci déposé (hors produit). Séance d'hotfix prod sans CI/CD documentée en skill complet (.agents/skills/hotfix-hors-ci/SKILL.md) : autorisation FG (porte §14 serveur), mesure d'état, gate locale, image sondée à la main, deploy.sh jah <v> --backup, /readyz, retour arrière. Aucun déploiement effectué à ce stade (4.0.23 déployée juste après, cf. entrée ci-dessous). Handoff. Lint vert (1352 fichiers).

05/10 ~23:43 — hotfix-hors-ci Track A exécutée : 4.0.23 en live (deploy manuel, runners off). Autorisation FG (« déploie à la main »). Mesures : live 4.0.22, hub jah-hub-1 healthy, jah.deployed=4.0.22 (repli), image 4.0.23 absente du serveur, GHCR privé (unauthorized). compose.yml serveur sans OPS-09 → scp des 5 fichiers ops/* (5 empreintes SHA256 serveur = locales). docker login ghcr.io (jeton gh read:packages, piped) → bash deploy.sh jah 4.0.23 --backup : pull digest sha256:6a625e5f… (= manifeste), backup jah-20261005-214254-588.db, voile, hub Healthy, /readyz 4.0.23, re-up → docker logout. Sonde externe : /readyz 4.0.23, /ws+Origin 401, CSP conforme ; RestartCount=0, pas de boucle. OPS-09 désormais appliqué en prod (json-file/10m/3). Repli = bash deploy.sh jah 4.0.22. Handoff.

05/10 — À VÉRIFIER (mandat du relais, non tranché) : l'overlay « papillon » de maintenance ne s'affiche pas pendant une mise à jour. Constat par lecture du source (pas une mesure) : un deploy.sh pose le voile par la CLI (processus séparé, hub non notifié) puis redémarre (reason: 'restart') ; côté client, events.mjs:197 ne montre l'overlay que si reason === 'maintenance', et realtime.mjs:130 met reconnecting (bandeau) pour un restart — comportement voulu pour un arrêt propre (testé). Donc l'habitant voit « Reconnexion… », jamais chenille → cocon → papillon. Chemin complet + pistes A/B/C dans le handoff. Prochaine action : test rouge d'abord (scénario pose CLI + restart), ticket bug-prod. Ne pas livrer de correctif sans rouge reproduit.

05/10 ~23:59 — Agent Jah Déployeur Hors-CI testé en réel ; 4.0.24 bloquée (jeton GHCR read-only). Agent créé (.github/agents/jah-deployeur-hors-ci.agent.md). Test : aller-retour 4.0.23 → 4.0.22 → 4.0.23 vert sur jah.vfg.lol (retour arrière prouvé, EXIT=0 chaque étape) ; garde fail-closed prouvée (deploy.sh jah 4.0.24 → unauthorized, EXIT=1, prod intacte). 4.0.24 non déployée : elle n'existe pas — pas de bump, pas de tag, pas d'image. Et publier une nouvelle image est impossible : le jeton gh n'a que read:packages (sonde docker push → permission_denied). Un vrai test 4.0.24 exige write:packages (décision FG, §14) + un contenu de version. Live inchangé 4.0.23. Article publié (blog vfjah, catalogue 730, dérive 0/0). Ping Telegram : non envoyé — aucun jeton dans la session (TELEGRAM_NOTIFY_* absent, VFGate 401, FG_Pulse 4330 éteint) → repli fichier _ssot/monitoring-events.jsonl (rattrapable). Handoff.

Porte machineLive 4.0.24 (06/10, deploy manuel hors CI) : correctif BUG-PAPILLON promu à la main. /readyz 4.0.24 ; image ghcr.io/fgdidou/jahmessenger:4.0.24 @ sha256:445cb5ab…. Backup jah-20261006-001959 ; repli deploy.sh jah 4.0.23. OPS-09 appliqué (json-file / 10m / 3). Campagne STAB 13/13 en 4.0.22. TodoStatut : BLOG-01/02 publiés ; issue #343 fermée. #246 reste ouverte pour OPS-02 (sauvegardes hors serveur).
Porte V2Post-STAB autonome terminé : quatre PR #322–#325 fusionnées ; tag v4.0.23 sur main, FULL 1332/1332, zéro skip, image préprod publiée sous hold. Preuve, run. Aucun deploy CI ; promue en live par deploy manuel (05/10) ; live 4.0.23. OPS-09 vérifié runner puis appliqué en prod.
Livev4.0.24 (06/10 : correctif BUG-PAPILLON, deploy manuel) — /readyz 4.0.24. Précédents : 4.0.23, 4.0.22, 4.0.21, 4.0.20.
File machine (agents)STAB prod 13/13 tous livre en live (00–10). Vague 5 file 4.1.0 : OPS-09 livre (deploy manuel 05/10) ; L08 wip-local (ne pas toucher).
Hors liveL08 (JahMessenger-L08) ; stash AUDIT. PRs dormantes fermées : #262, #264, #278. Canal Telegram agent→FG à réparer (jetons locaux 401 ; §14).
Pont opsGate appliqué ; #172 en main ; preuve DM Telegram→Jah = Lot 2 (auto) ; rotator token reporté (rappel ci-dessous, non bloquant) — docs/plans/fond-2026-10-01.md
Humain dormant (pas de ping ; agent gère rappels)Rappel rotator bot (ordre FG 01/10 : FG un jour) ; rappel vote DA V5 avatars A/B/C (gelé) ; œil 4.0.8 ; R2 / soirée / cutover ; allumages Lundi/Bal/Crieur/push restent off jusqu’à phrase « allume X » (pas de sollicitation) ; Boum allumée (0021) ; F1–F11 / Q9-05 / Q10

05/10 — Campagne STAB 13/13 en live 4.0.22. STAB-10 métriques (#305) : modes CI, coût des relances, lots campagne ; viewer docs/metrics/etat.html ; fix main rouge tags (fetch-tags). FULL eb6592e vert → release v4.0.22 (preuve parent FULL) → deploy 37266429140. /readyz 4.0.22. REGISTRE anomalies STAB → ferme. Relais : handoffs/2026-10-05-0510-cloture-stab10-live-4022.md.

05/10 — Audit + captures clôture (Cursor Cloud). Instantané stab-vues 4.0.22 / 13/13, métriques strict, kanban, PNG sous handoffs/captures/2026-10-05/. Audit global qualité / exécution / agentique : [chemin local] (réservé version locale). Handoff : handoffs/2026-10-05-0720-audit-cloture-campagne-stab.md. Blog public /jah-stab-vues encore à republier (hors porte).

05/10 — STAB-09 en live 4.0.21. Mesure d'abord (HUD 250 ms travaillant onglet caché) → correctif (#298) → FULL e7456e8 vert → release --ci-verified. Deux rouges préexistants qualifiés au passage (stab-vues environnement-dépendant, .catch d'un test d'appels). Live 4.0.21. Suite : STAB-10 (cloud) — fait en 4.0.22.

05/10 — PR-B en live 4.0.20 (handoff interrompu). #287 fusionnée ; FULL vert 74be1aa ; release --ci-verified ; deploy Release 37254532148 success ; /readyz 4.0.20. Leçon agents #291. Relais : handoffs/2026-10-05-0215-prb-release-interrompu.md.

05/10 — Chantier CI flux (hors porte STAB). Plan SSOT docs/plans/ci-flux-preprod-light.md (lots 1–8) — lot 0 livré : #301 fusionnée (fbf85ae). Clôture session handoffs/2026-10-05-0652-cloture-session-ci-flux-preprod-light.md. Relais remplacé par V2 : aucune collecte de stabilité ni skip dans FULL ; voir le plan de récupération et ménage du 05/10.

05/10 — TodoStatut blog a-publier. Articles prêts dans Jah (branche cursor/article-cible-ne-vaut-pas-full-da50) : méthode ciblé ≠ FULL + produit Retours ; brouillon CI flux 2026-10-05-jah-ci-flux-preprod-light.md. Prochaine passe : node scripts/post.mjs … --live depuis RAPPORT (sans push auto).

05/10 ~03:40 — clôture session (outillage visu + lecture). Hors porte machine, aucun code produit. Page publique blog.vfg.lol/jah-stab-vues scindée en état live (régénérable, npm run stab-vues) + instantané 04/10 conservé (vues 1–8). scripts/stab-vues.mjs + 6 tests verts. Dépôt local resynchronisé : main était divergé (ahead 1 périmé / behind 34) → réaligné sur origin/main 19a7287, sauvegarde sur backup/main-99d3b6a-2026-10-05 ; remote fantôme cloud-agent-notes purgé. Inventaire du travail laissé en worktree : 74 worktrees, 24 avec du travail, 14 avec commits non fusionnés, 10 branches au remote supprimé — audit rejouable [chemin local]. Aucun nettoyage fait (§14). Relais : handoffs/2026-10-05-0340-cloture-stab-vues-inventaire.md.

05/10 ~20:30 — PÉRIMÈTRE OUTILLAGE VISUEL (hors produit), clôture WIP. À lire comme une zone à part du dev produit Jah : ce lot ne touche que les vues d'avancement. Générateurs : npm run stab-vues (état live + compteurs CI + instantané daté 05/10 : tags réels × lots par version) et npm run chantier-lots (kanban depuis les files). Blog à jour : /jah-stab-vues (instant 05/10, 04/10 archivé), /jah-lots, hub + carte de l'outillage /prototypes/apercus/2026-10-05-cartographie-outillage-visuel.html. Constat : 3 « chantier des lots » dont 2 manuels jamais mis à jour → un dépôt parallèle dédié est la réponse. PR #304 (instantané + carte, diff additif). Prochain handoff : créer le repo parallèle dédié à ces outils et y déplacer scripts/{stab-vues,chantier-lots,metrics*} + pages + tests ; JahMessenger ne garde qu'un pointeur. Relais : handoffs/2026-10-05-2030-cloture-wip-outillage-visuel.md.

Qualité : Q0 #69, Q1 #72, Q2 #73, Q3 #70, Q4 #71, Q5 #74, Q6 via #78 (#77 fermée), Q7 #78, Q8 #75, Q9 #76, J6-05 #80, lint Q5 #81.

Qualité : Q0 #69, Q1 #72, Q2 #73, Q3 #70, Q4 #71, Q5 #74, Q6 via #78 (#77 fermée), Q7 #78, Q8 #75, Q9 #76, J6-05 #80, lint Q5 #81.

Session post-STAB V2 — autonome, production retenue

Instruction FG : plan V2. V2 clôturée : #322–#325 fusionnées, tag v4.0.23, FULL et image verts au premier essai ; prod retenue en 4.0.22 à la clôture V2, promue ensuite en live par deploy manuel (4.0.23 le 05/10, 4.0.24 le 06/10 — bandeau Session, handoff 0230). Live actuel = 4.0.24. V1 archivée ; aucune porte humaine ajoutée.

LotBesoinReprésentationContrainteActionPreuveRécompense
A (Vérifié préprod)PR moins coûteusesPlan CI/jobsFULL tag main ; holdAdapter outils/règlesContrats rouges puis verts + runnerFusion courte fiable
B (Vérifié préprod)Logs bornésCompose hubAucun serveur modifiéRotation 10m × 3Résolu + inspect runtimeStockage borné après promotion
C (Prouvé)Parcours démontréTag/SHA/digest/runsMême artefact ; live 4.0.22 à la clôture V2Préparer, fusionner, taguerFULL + image préprod + manifestePreuve récupérable sans FG

Périmètre A : scripts check/ci-plan/release/tag-proof, workflows CI/release/image/promotion/deploy, tests de contrat et règles associées. Aucun code produit ni nouvelle dépendance. A : #323 fusionnée, run 37284420072 court + préprod verts, FULL skipped. Périmètre B : ops/compose.yml, preuve avant/après, notes et relais ; aucun serveur modifié. Critère B : logging résolu et effectivement appliqué à json-file / 10m / 3 sur runner. #246 reste ouverte jusqu’à production.

Live

https://jah.vfg.lol/readyz = 4.0.24 (06/10 : correctif BUG-PAPILLON, deploy manuel hors CI — handoff). Image ghcr.io/fgdidou/jahmessenger:4.0.24 @ sha256:445cb5ab…. Backup jah-20261006-001959 ; repli deploy.sh jah 4.0.23. OPS-09 (json-file / 10m / 3). Précédents : 4.0.23, 4.0.22, 4.0.21, 4.0.20. Histoire : CHANGELOG.md, CHANGELOG-USER.md, docs/plans/archive/2026-09/.

Portes ouvertes

PorteÉtat
Machine (produit)Néant : S0–S19 machine en prod (S11 inclus). Restent S15-03/04 et S16 sur ordre FG
R2 phases 4–6Humain, après usage réel (compteurs Admin → Portes R2)
Soirée test / cutoverHumain (README)
QualitéQ0–Q9 machine fusionnés ; Q9-05 / Q10 / F1–F11 hors scope

Mécaniques du §10 (six maillons)

Tous les maillons ci-dessous sont Livré sauf mention. Aucun « Concept ». F7 (déplacer hors STATUS) : décision FG.

MécaniqueBesoinReprésentationContrainteActionPreuveRécompense
Wizz / duel (§10.2)Signe à distanceFenêtre, ⚡, comboSecousse ; silence heures calmesRendre en 2 minServeur marque renduDUEL ; styles/badges
Accueil Wizz (Ann. B)Se sentir attendudidou + WizzUn geste montréRendre à didouUne fois / compteSouvenir + toast
Fou rire (§10.3)Rire ensemblePuces + badge3 rieurs / 10 minRéagir 😂Compte distinctPluie + souvenir
GIFothèque (§10.3)Blagues du cercleOnglet ♥Village seulementPartager / garderAccès voisinFans
Amitié (§10.1)Lien sans compterPousse / jardinRéciprocité, plafondSe répondreServeur, plafondsPalier + Lulu
Styles Wizz (§10.2)Jouer, pas harcelerMenu ▾ / badgesDéblocage renduRendreStyles refusés sinonEmotes
Clins d'œil / Lulu (§10.4)Geste sans écrireAnim 2–3 sPaliersEnvoyerServeurLulu à deux
Monde (§10.7)Se retrouverPlace, maisonsVillage honnêteMarcher, bulleAutorité serveurCroiser les siens
Ondes / fils / jardinVie sans spyOnde, fil, planteDouble accordÉcrire / montrer filTrames inspectéesFil / jardin
Gestes syncTope-làInvite + étincelles2 cases, 2 sTope-là, câlin, danseDistance + fenêtreAmitié
Bonne nuit / papillonPartir sans frein🌙, chenilleRésumé, pas reprocheBonne nuitSession closePapillon
Quêtes IRL (§10.11)S'entraider IRLTableauPas de pushConfirmer croiséMembres seulsObjet + étincelles
Rituels (§10.6)RDV sans pressionKiosque, carteCaché jusqu'à l'heureRépondre / signerHorloge simuléeRévélation
RassemblementTrace collectiveCercle 📸≥3, 60 sEntrer le cercleServeur comptePhoto + cadre
Le LundiSourire lundiNuageDissipe au 10ᵉ momentVivre ; rangerHorlogeÉteint (admin)
Boîte à idéesEnrichir banques#quete…10/j ; FG rangeÉcrire à didouÉtiquette + auteurMerci privé
Robot CrieurNouvelles voisinesTricorne / #gazetteSource + 280 car.Lire / taireSources FGÉteint (admin)
Talents (§10.12)Reconnu sans score🌟 / ailesRéciprocitéVivre momentstalent_logTitre + S12
Étincelles / chantiersBut communTerrainsPas de solde persoMoments + voteTrace momentLieu ouvert
Objets-souvenirsGarder momentsChambreVisiteur = membrePoser / offrirServeurCadeau = moment
Activités (§10.5)Rire à deuxMenu / ArcadeBornes griséesInviter / jouerTours vérifiésCarte-souvenir
Perles / capsules / fantômesHistoireMusée, coffresAccord / date / seulProposer / scellerMuet avantCérémonie
Bal masqué (ph. 8)DevinettesMasques 30 min≥3 ; 1/jOuvrir / devinerGarde hubÉteint (admin)
Jam ScèneMusique à plusieursMicro + notesSilence 20 s → reposJouerDébit / blocagePartition
Boum vendrediSoirée récurrenteDisco 21–23 hAllumée 0021Danser / rangerHeure + villageAllumée
LacMoment d'il y a 1 anPontonÀ deuxPêcherTiers exclusCarte
CinémaAlbum ensembleÉcranProjectionnistecinema.slideSchéma + fuzzingRire
SerreAmitiés anciennesFleursÀ soi ; ≥1 anVisiterTiers exclusFleurs

Appels (§11 ph. 7) : six maillons Livré (besoin → récompense) — voir CHANGELOG ph. 7.

Critères d'acceptation finaux (SPEC §15)

#Critère (résumé)MachineFG
1Deux téléphones + PC : invitation → appels, push, PWAE2E phases 1–7 ; live alpha.13Soirée réelle
2Monde honnête (bulles, ondes, fils, village endormi)monde*.test, E2E ph. 4Feeling village vide
3Village : étincelles, chantier, objetsvillage.test, E2E ph. 5Premier chantier R2
4Quête IRL confirmée croiséequetes.test, E2E ph. 65 quêtes R2
5Import legacy + « Il y a un an »import / bascule (tests)Cutover données réelles
6Bonne nuit ; pas de push jeuintégration + E2ECompteur R2 Bonne nuit
7Redémarrage sans perte / vague toastsops / backup / E2EConstat live
8Checklist §8 + npm audit sans hauteCI FULL—
9Charte §2 couvertetable §2 ci-dessous + tests—
10Tags v4.x.0 GHCR réversiblesrelease → GHCRTags stables S15-04
11Look MSN + monde (captures)artefacts PRŒil produit

Charte de jeu (§2)

RègleOù c'est tenu
1 RéciprocitéWizz rendus ; amitié = réponses ; styles au rendu
2 Rien ne se perdScores / paliers / déblocages ne baissent pas ; plante s'endort
3 Pas de classementAucun score affiché ; palier privé au fil
4 Pas de pression lecturechat.read → ses appareils seulement
5 Consentement à deuxGIF / fil : double accord
6 Calme par défautHeures calmes ; Occupé coupe le son Wizz
7 Tous les âgesGrand confort partout (monde compris)
8 Toujours une sortieJeux rangeables ; messagerie reste
9 Pull par défautPush seulement DM / Wizz / @ / appel adressés
10 Session terminableBonne nuit ; assoupissement 30 min
11 Jamais de faux vivantHors ligne = hors ligne ; démo assumée
12 Loot plutôt que karmaPas de monnaie ; étincelles collectives
PréambuleToast MDP hérité non bloquant ; Nouveautés à la demande

Couverture checklist §8

PointÉtat
1–7Livré (XSS/CSP/sessions/CSRF/mdp/invitations/autorisations) — tests + E2E
2 CSPÉcart validé : trusted-types jah-sw (pas 'none')
8 EntréesPlafonds ph. 1–6 ; rituel 280 (pas 500 du SPEC)
9–12Fichiers, GIF sans SSRF, fuzzing, fermé par défaut
13 Vie privéeLogs sans contenu ; export/suppression ; Q1 #72 : file ponts, rétention, pouls/capsules vs bloqués ; GC fichiers réel depuis 4.0.6 (DQ11 levé, #183)
14–20Backups, CI/préprod, autorité monde, frontières, blocage monde, preuves quête, bulles

Actions humaines requises (FG)

Détail des préparations machine : docs/plans/suite.md §5 et fiches S15/S16 (actives) ; closes en archive/2026-09/.

  1. Secrets serveur / DEPLOY_* : posé (27/09). Ponts : README › Brancher les ponts.
  2. DNS jah : fait. jah-pre reporté.
  3. Coturn / STUN : prêt éteint — README › Allumer le TURN (S10).
  4. Relire banques (quêtes, questions, Lundi, Crieur, bal) et allumer ou non.
  5. Dessin Lulu (5 PNG) ; recalibrage après un mois (S15-03).
  6. Tags stables v4.x.0 (S15-04) ; S16 sur ordre.
  7. Copie backups hors serveur (hebdo) ; restore-check mensuel.
  8. Veille prod : configurée (#64), workflow désactivé avec les autres sur consigne FG du 05/10.
  9. Boum : allumée (0021) ; éteindre via Admin si besoin.
  10. Qualité (§5 qualite.md) — décisions FG du 29/09 :
    • CN-04B : on accepte — un diff de docs reste en mode lint ; le job « Lint seul » couvre déjà les liens et les chemins cités. Ne pas modifier ci-plan.mjs.
    • Exports morts (W3) : les 148 avertissements du 29/09 sont une mesure historique. Lint du 05/10 : 1351 fichiers vérifiés, aucun constat ; ne pas reprendre ce compteur comme dette active.
    • Node 24 : poste vérifié en 24.19.0 le 05/10 ; cloud C1/C2 en 24.21.0.
    • Teaser : on le garde (docs/teaser/, hors image Docker).
    • R4 (branches/worktrees morts) : fait le 29/09.
    • F1 [variable d'environnement] ; F2 erratum SPEC (docs/plans/qualite-spec-erratum.md) ; F3 docs/runbooks/ vs README long ; F5 typescript en dev (Q9-05) ; F6 qui fusionne ; F7 six maillons hors STATUS ; F8–F11 (Q10) : villages client, retirer message, démo prod, rôle visiteur.
    • Contenus : FG relit au fur et à mesure ; un mode interne de validation des textes proposés est à prévoir (à cadrer — nouvelle fonctionnalité, donc Q10).
  11. Q9-05 / Q10 / §7 : listés dans qualite.md — pas démarrés ici. Ce qui reste côté machine (R2 sur décision « on nettoie », R3 et R4 faits, R5 sur accord Node 24, R6, doubles) : docs/plans/archive/2026-09-30/suite-2026-09-29.md (R1–R6, archivé) ; version sans jargon : archive/2026-09-30/reprendre-en-simple.md.

Liste de mise en service (jah.vfg.lol)

Un seul hôte (décision FG 26/09). Caddy → loopback :5240. Live = v4.0.24 (06/10 ; correctif BUG-PAPILLON, deploy manuel hors CI — handoff). Cutover : README › Cutover. Soirée test : README › Soirée test.

Plans

Relais produit 04/10 (STAB live 4.0.18) : handoffs/2026-10-04-2315-cloture-session-jah-stab.md. Relais outillage visu : handoffs/2026-10-04-2316-cloture-outil-visu-avancement.md. Pack agentique : handoffs/2026-10-04-2108-pack-agentique-local.md. Relais du 03/10 : handoffs/2026-10-03-1805-cloture-v4.0.16-tipis.md (tipis en 4.0.16 ; article Place en tipis). File 4.1.0 : docs/plans/plan-2026-10-03-suite.md ; état : docs/plans/lots/file-4.1.0.json (vague 5 : OPS-09). File STAB : docs/plans/lots/file-stabilisation-4.0.x.json (alignée live 4.0.18 à la reprise 05/10). V5 / JahStyle : clôture integrate handoff-2026-10-01-2326-cloture-kimi-v5.md (relais 0706) — JahStyle ; porte humaine : vote DA V5 étape 3 (ouverte). File prioritaire : STAB reprise 05/10 ; train 4.1.0 reporté pendant stabilisation : docs/plans/plan-2026-10-03-suite.md (état : docs/plans/lots/file-4.1.0.json) ; fond-2026-10-01.md ne garde que la vague C (VFGate). Périmés le 01/10 : docs/plans/archive/2026-10-01/fond-2026-09-30.md, docs/plans/hotfix-2026-09-30.md. Méthode : docs/plans/discipline-livraison.md. Relais ponts : docs/plans/handoff-2026-10-01-ponts-identifiants.md (H1). Actifs : docs/plans/lots/, docs/plans/README.md, suite.md, suite-S15.md, suite-S16.md, qualite.md, ci-tests.md. Closes : docs/plans/archive/2026-09/, archive/2026-09-30/, archive/2026-10-01/.

Méga-dossier des audits, revues et rapports : [chemin local] (index (réservé version locale)). Campagne audit v2 (docs, SHA 408d8e8) : [chemin local] — PR #85 fusionnée ; re-vérification livrée : contre-revue/RAPPORT-REVERIFY.md. Cadres #84 (analyse) et #82 (revue croisée V) fusionnés ; teaser vidéo PR #79 fusionnée (scripts/teaser/, hors image). Restent ouverts côté FG : N-01 CN-04B (ci:full vs diff docs) et runtime Node ≥24. Note CI : deux flakes E2E sous charge (S12-02, R7-07) — R7-07 corrigé (#87), S12-02 non reproduit.

05/10 — Clôture V2 : handoff. SHA edf06586c622dc10fedfb388c7f8134ecb7e3c0c ; digest sha256:6a625e5fb4e3d47de82b4e54320f377b6650e1bc7bf1c57459874db179feebf2. Compose résolu et Docker effectif : json-file / 10m / 3. Publication de preuve en prerelease ; production non déployée, aucune action FG requise pour la V2.

05/10 — Récupération et ménage autorisés, en cours. Plan, inventaire sauvegardé (réservé version locale). Production retenue ; aucun nouveau tag.

source markdown

Concepts de cet article

handoffworktreegardeVFGategateLes OndesdériveSSOTPulseVPSCaddy

Partage le plus de concepts avec