STATUS — cotejardin-site
Article généré automatiquement depuis le STATUS.md de cotejardin-site — 2026-10-11. Les chemins locaux, les hôtes internes et les noms de variables ont été neutralisés.
STATUS — Côté Jardin
État vivant du projet : où on en est, ce qui reste ouvert, ce qui bloque.
| Dernière MAJ | 2026-08-18 (correction responsive mobile déployée) |
| Archive historique | docs/archive/status/STATUS-historique-jusqua-2026-08-15.md |
| Reprise session | docs/plan/REPRISE.md |
| Matrice de concurrence | docs/plan/00-index.md |
Lire l’archive pour le journal détaillé. Une tâche terminée met à jour ce tableau dans le même commit.
Où en est le site
| Production | Oui — cotejardin.pizza, Vague 6 déployée le 15/08/2026 (CMS thèmes + admin apparence + interactions ; code lot I sur main) |
| Indexation | 🔒 robots.txt → Disallow: / (délibéré jusqu’à la bascule SEO) |
| HTTPS | ✅ Certificat valide (www compris), revérifié 15/08/2026 |
| Design | Proposition C — « Grand & clair » |
| Carte publique | Masquée temporairement (T-096) ; données internes conservées |
| Annonce braderie 15 août | Désactivée (textes.annonce.actif: false) |
| Admin OVH | Ouverte — https://cotejardin.pizza/admin/ (ADR-002) |
| ADR-003 archi | ✅ acceptée (16/08) — revue baseline corrigée |
| ADR-004 runtime | ✅ acceptée (16/08) — autorité runtime, sync-app préserve la runtime |
| T-090 + T-111 | ✅ fait, mergé sur main — PR #6, commit 4d4c104 (17/08) |
| Données Yann (B3, B6, allergènes, avis, photos, GPS) | Hors plan technique par décision FG (17/08) — saisie directe en admin, pas de développement à prévoir. Écrans déjà livrés (lot D). Détail : § En attente chez Yann |
| Bloquants levés | B1, B2, B4, B5, B7, B8 |
Synthèse des lots
| Lot | État |
|---|---|
| A–F | ✅ terminés |
| G — Déploiement | ✅ T-060, T-062, T-063 · T-061 ⬜ |
| H — Bascule SEO | 🔴 attend la saisie admin des données Yann (plus une tâche de dev — § En attente chez Yann) |
| I — CMS natif | ✅ clos — T-097…T-107 · Vague 6 déployée 15/08 |
| J — Finalisation qualité | ✅ clos (vagues 0–4, 16/08) — T-120…T-148 · baseline 18/4 🟠 · JS 6060/6144 · plan PLAN-lot-J-ultime-2026-08-16.md |
| K — Portes qualité | ✅ clos (16/08) — T-150…T-155 · plan PLAN-lot-K-portes-qualite-2026-08-16.md · pas de deploy OVH |
| Cascade runtime portable | 🔄 en cours — T-110 ✅, T-090 ✅, T-111 ✅ (PR #6) · T-112 ✅ recadrée (PR #7) · T-113 ✅ fait, corrige un bug ADR-004 (17/08, PR en attente) · T-114…T-115 ⬜ GO séparé — objectif v1 stable |
Détail : 00-index.md · lots clos : archive.
Tâches encore ouvertes
Lot I — CMS natif — clos
Presets : carnet-village, comptoir, maison-images ; fete-locale
événements. Priorité : événement actif > thème visiteur > carnet-village.
ADR-003 reportée. Recette : cms-recette.md.
| # | Tâche | Statut | Fiche |
|---|---|---|---|
| T-097 | Cadrage CMS / thèmes | ✅ | T-097-cadrage-cms-themes.md |
| T-100 | Modèle / schéma CMS | ✅ | T-100-modele-cms.md |
| T-103 | Conditions + expiration | ✅ | T-103-conditions-expiration.md |
| T-098 | Thème visiteur mémorisé | ✅ | T-098-themes-visiteur.md |
| T-101 | Rendu + thèmes + pastille | ✅ | T-101-rendu-themes.md |
| T-102 | Admin Apparence / Événements | ✅ | T-102-admin-apercu-cms.md |
| T-104 | Micro-interactions sûres | ✅ | T-104-micro-interactions.md |
| T-105 | Tests + clôture CMS | ✅ | T-105-tests-cloture-cms.md |
| T-106 | Allowlist thème visiteur | ✅ | T-106-allowlist-theme-visiteur.md |
| T-107 | Retirer CSS mort .gros-texte | ✅ | T-107-retire-gros-texte-css.md |
Vague 6 faite (15/08) : deploy + sync-app après verifier.php 11/4 🟠.
robots.txt inchangé (Disallow: /). MDP admin conservé.
Le code lot I est sur main ; les mentions « pas de commit » du 15/08
désignaient l'absence de commit de clôture dédié au moment du deploy, pas
l'absence du code sur la branche.
Lot J — Finalisation qualité — ✅ clos (vagues 0–4, 16/08)
Plan : PLAN-lot-J-ultime-2026-08-16.md.
Vague 1 mergée (16/08) : T-120, 121, 122, 123, 125, 126, 127, 128, 138, 146 → main.
Vague 2 mergée (16/08) : T-124, 129, 130, 131, 132, 133, 142, 143, 144, 145 → main.
Vague 3 mergée (16/08) : T-134, 135, 136, 137, 139, 147, 148 → main.
Vague 4 mergée (16/08) : T-140, T-141 → main. Lot J clos — paliers humains : REPRISE.md §3.
Matrice : 00-index.md § Lot J · DISPATCH.md § Lot J.
T-044 absorbé par T-128 ✅.
| # | Tâche | Statut |
|---|---|---|
| T-120 | Retirer djpizza accueil | ✅ |
| T-121 | Lanceur tests/tous.php | ✅ |
| T-122 | Garde-fou renforcé | ✅ |
| T-123 | Schéma carte + filtres | ✅ |
| T-125 | Auth admin durci | ✅ |
| T-126 | Publication verrou | ✅ |
| T-127 | API mesure atomique | ✅ |
| T-128 | Purge audience + doc cron | ✅ |
| T-138 | Deploy wrappers sync | ✅ |
| T-146 | Guide admin Apparence | ✅ |
| T-124 | CI GitHub verification | ✅ |
| T-129 | Accueil LCP + meta | ✅ |
| T-130 | Carte noindex + sitemap | ✅ |
| T-131 | Pages légales alignées | ✅ |
| T-132 | JSON-LD Restaurant | ✅ |
| T-133 | Apparence defer + budget | ✅ |
| T-134 | CSS polices contraste | ✅ |
| T-135 | Backups rotation | ✅ |
| T-136 | .htaccess sécurité + cache | ✅ |
| T-137 | Verifier baseline 18/4 | ✅ |
| T-139 | Aperçu CSP / mbstring signal | ✅ |
| T-148 | Doc garde sync-app | ✅ |
| T-142 | Hygiène handoff 08 | ✅ |
| T-143 | Tuto admin Apparence | ✅ |
| T-144 | Recette CMS → tous.php | ✅ |
| T-145 | README lot I | ✅ |
| T-147 | Budget JS CMS commentaires | ✅ |
| T-140 | Instantanés régénération | ✅ |
| T-141 | Restauration scénarios doc | ✅ |
Instantanés : tests/rendu/instantanes.test.php 32/32 (T-140).
Lot K — Portes qualité — ✅ clos (16/08)
Plan : PLAN-lot-K-portes-qualite-2026-08-16.md.
Guide : portes-qualite-workflow.md.
Handoff : 11-portes-qualite-session-2026-08-16.md.
Preflight : preflight-deploy.md.
Aucun deploy OVH dans ce lot.
| # | Tâche | Statut |
|---|---|---|
| T-150 | Vague 0 docs + fiches | ✅ |
| T-151 | Baseline machine + CI | ✅ |
| T-152 | Vérifier Possède vs diff | ✅ |
| T-153 | Hooks Cursor + /.tmp/ | ✅ |
| T-154 | Preflight deploy | ✅ |
| T-155 | Hygiène docs + CI | ✅ |
Autres ouvertes
| # | Tâche | Statut | Note |
|---|---|---|---|
| T-061 | Mise en ligne noindex | ⬜ | Disallow: / déjà en place |
| T-070…T-072 | Bascule SEO | 🔴 | Attendent Yann — chemin de fiche |
| T-080 | MySQL OVH | 💡 | Pas de GO |
| T-110 | Autorité runtime + ADR-004 | ✅ | ADR-004 rédigée ; handoffs + CLAUDE.md réconciliés |
| T-090 | Squelette archi (cascade) | ✅ | Mergé sur main (PR #6, commit 4d4c104, 17/08) |
| T-111 | Moteurs appelables (cascade) | ✅ | Mergé sur main (PR #6) ; moteurs appelables 17/17 ; tests/tous.php 32/33 (33/33 hors pitfall encodage Windows console — non-régression) |
| T-112 | Géométrie runtime OVH | ✅ recadrée | Objectif déjà en prod (T-138) ; recentrée sur les tests manquants — voir fiche § Constat |
| T-113 | Publication transactionnelle | ✅ fait, PR en attente | Corrige un bug ADR-004 réel (publier() écrasait la graine) — voir fiche § Constat |
| T-114…T-115 | Suite runtime portable | ⬜ | Prochain GO |
Clos récemment (ne pas redispatcher)
| # | Note |
|---|---|
| T-149 | ✅ comparatif modèles Lot J livré : docs/reference/comparatif-modeles-lot-J-2026-08-16.md (post-Lot J documentaire) |
| T-090…T-092 | Architecture / miroir / mouvement |
| T-093 | ✅ via T-095 (regex class="avis") |
| T-095 | ✅ corrections post-audit |
| T-096 | ✅ carte masquée |
| T-094 | ✅ instantanés T-101/T-104 ; instantanes.test.php 32/32 |
| T-105 | ✅ recette Vague 5 ; Vague 6 déployée 15/08 (code sur main) |
| T-106 | ✅ allowlist cotejardin-theme-visiteur ; Gros texte retiré |
| T-107 | ✅ CSS mort .gros-texte retiré de styles.css |
Lot L — Audit croisé (19/08/2026)
Audit croisé multi-agents sur SHA 8a7ee98 : 7 lentilles indépendantes, en aveugle
les unes des autres, 74 findings. Rapport complet :
docs/reference/audit-croise-2026-08-19.md.
11 fiches ouvertes, T-160 … T-170 (bloc T-160…T-179 réservé).
Plan d'action : docs/plan/PLAN-lot-L-audit-2026-08-20.md
— 6 décisions FG bloquent le dispatch de 4 fiches sur 11.
Trois S0 — ils bloquent le jalon noindex T-061. Tous rejoués sur copie hors dépôt :
- A-LEG-03 — les 9 champs
legal.*mis à"-"éteignent l'alerte 🟠 « bloquant B3 » (4 → 3) et font disparaître du HTML publié la bannière « ne pas mettre en ligne » (0 occurrence). C'est le geste le plus naturel de l'écran : faire taire la pastille 🔴. - A-LEG-01 —
carte.publiee = trueavec 24 plats sans allergènes → 18 verts, exit 0.tests/tous.phpattraperait, mais nicmd_deploynipreflight_deploy.phpne le lancent : le filet existe et n'est branché sur aucun chemin de déploiement. - A-LEG-02 — cocher les allergènes éteint le 🟠 alors qu'aucun gabarit ne les rend.
Deux motifs de fond, chacun confirmé par plusieurs lentilles aveugles :
- Un contrôle mesure la forme de la donnée, jamais l'effet publié.
src/inc/validation.phpne lit jamaisdist/. - ADR-004 a été écrite, jamais propagée.
sync-appécrase la runtime de production (ftp_deploy.py:816) contre la règle 2 de l'ADR — redécouvert indépendamment par L3 (code) et L7 (docs), et la commande a déjà tourné en réel (voir §Dernières vérifications). Les règles Cursor l'ignorent, aucun test ne la protège, sa soupapefetch-runtimen'a jamais été ouverte en fiche.
7 mutations vérifiées passent la barrière au vert, dont robots.txt Disallow: /
→ Allow: /, Options -Indexes → +Indexes, et deux chiffres inversés dans le
téléphone. Supprimer tests/legal/legaux.test.php en entier laisse Baseline conforme.
Réserve de fiabilité : la phase de réfutation croisée n'a pas eu lieu (limite de session). 11 findings parmi les plus lourds ont été contre-vérifiés par le coordinateur, dont 2 requalifiés — soit ~18 % de correction sur l'échantillon. Les S0 et S1 sont sûrs, tous rejoués ; les S3 et au-dessous sont solides mais non garantis.
Correction de mesure : tests/tous.php n'a pas un résultat unique. Le verdict a
basculé pendant l'audit, sans qu'une ligne de code change : 34/35 exit 1 pendant les
heures d'ouverture, 35/35 exit 0 après 22 h Paris. instantanes.test.php compare un
instantané figé à data-cms-ouvert="0" avec une génération fraîche. Toute mesure
publiée doit désormais porter son heure (T-164, T-169).
Piège associé : sous Git Bash Windows, TZ=Europe/Paris date n'applique pas le fuseau —
relever l'heure avec PHP et DateTimeZone("Europe/Paris").
Palier humain prioritaire : vérifier si un sync-app a déjà détruit une saisie de
Yann, en comparant la runtime OVH aux sauvegardes site-*.json.
En attente chez Yann
Bloquent le lot H. Décision FG (17/08) : ce lot de données sort du
plan technique — plus une entrée de backlog dev à suivre agent par
agent. Les écrans admin qui permettent de les saisir existent déjà
(lot D : legal.php, carte.php, avis.php, horaires.php…) ; la
suite se fait en ligne, par Yann ou FG, pas par un agent qui
« corrigerait » du code pour ça. Conservé ici comme mémo de contenu,
pas comme tâche à dispatcher.
| Attendu | |
|---|---|
| 🔴 | 9 infos légales — saisissables dans l’admin |
| 🔴 | Allergènes par pizza · modalités sans gluten |
| 🟠 | Avis · réservation / terrasse / congés · fériés |
| 🟠 | Autorisation photos — docs/handoff/autorisation-droit-image.md |
| 🟡 | GPS relevés sur place |
Relance : docs/handoff/questions-yann-telegram.md.
Dernières vérifications (18/08/2026)
php tests/tous.php→ 35/35 au vert (43 découverts, 8 relayés CMS)php bin/preflight_deploy.php --generer→ OK (verifier 18/4 🟠 attendu, génération dist 4 pages / 33 ressources)- deploy OVH exécuté en réel :
python scripts/ftp_deploy.py deploy(37 fichiers envoyés, sans miroir) - sync applicatif/runtime exécuté en réel :
python scripts/ftp_deploy.py sync-app(136 fichiers envoyés +cotejardin-donnees/site.json) - wrappers admin/api régénérés en réel :
python scripts/ftp_deploy.py symlink-admin(11 wrappers admin +api/mesure.php) - contrôles post-deploy :
python scripts/ftp_deploy.py lsOK ;curl.exe -I https://cotejardin.pizza/200,curl.exe -I https://cotejardin.pizza/admin/200,curl.exe -I https://cotejardin.pizza/api/mesure.php200 - Paliers humains restants : cron purge (T-128) · drill T-141 ·
GO T-112 (suite cascade runtime) · Lot H (attend saisie admin, hors dev)
—
REPRISE.md§3
Ambiguïtés restantes
- Collisions de chemins — lot H portable ; toujours cibler le fichier
(
00-index§ collisions). Anciens numéros CMS T-064…T-069 → T-100…T-105 ; cascade runtime → T-110…T-115. - Allowlist localStorage — T-106 :
legaux.test.phpautorisecotejardin-theme-visiteuretcotejardin-guide-admin-v1.cotejardin-gros-texten’est plus whitelistée (bouton retiré T-101).
Journal
Historique 13–15/08 gelé dans l’archive. Entrées courtes ici :
2026-08-18 — Correction responsive mobile : le bandeau animé de l'accueil créait un scroll horizontal sur petit écran malgré le rognage de
body. Ajout deoverflow-x: clipsurhtmldanssrc/assets/styles.css. Génération et vérification OK (18/4 🟠), déploiement réel de 37 fichiers. Contrôle production à 390 px : scroll horizontal à 0 sur accueil ; tablette, PC et pages légales sans débordement détecté.2026-08-18 — Déploiement v1 exécuté + filière génération directe : extraction des helpers légaux dans
src/inc/gabarits-legaux.phppour supprimer les collisions de fonctions au second rendu ; bascule de la publication et de l'aperçu CMS versgenerer_site()en appel direct (plus de sous-processus sur cette filière), avec restauration explicite deCOTEJARDIN_SITE_JSONen fin d'appel. Tests adaptés (legaux.test.phpcopie désormaisgabarits-legaux.phpdans son bac ; preuve de mutationconditions-cms.test.phprendue robuste aux warnings PHP de démarrage). Vérifications avant release :tests/tous.php35/35, preflight OK. Déploiement réel exécuté :deploy(37 fichiers),sync-app(136 fichiers + runtime),symlink-admin(wrappers admin/api). Contrôles post-deploy : webroot listé en SFTP, endpoints publics/admin/api en 200.2026-08-17 — T-113 publication transactionnelle (corrige un bug ADR-004) : en lisant
publication.phpavant d'écrire du code, découverte que l'ancienpublier()copiait le candidat admin surdonnees/site.jsondu dépôt avant validation/génération, et ne restaurait jamais cette copie sur succès — chaque publication réussie écrasait silencieusement la graine versionnée. Exactement le piège que l'ADR-004 documente, resté ouvert faute de mise à jour depublier()après son acceptation. Corrigé : le candidat admin (déjà hors webroot, déjà l'autorité runtime par construction ADR-001/002) est validé directement viavalider_site()(T-111) sans jamais toucherdonnees/site.jsondu dépôt — preuve directe : le dépôt renommé de côté pendant tout un appelpublier(), qui réussit quand même. Deuxième découverte en écrivant le test :generer_site()(T-111) n'est appelable qu'une fois par processus PHP (fonctions globales des gabarits légaux qui collisionnent) — un appel direct aurait planté chaque worker FPM à sa deuxième publication. Recentré : validation directe, génération encore en sous-processus (horsPossède,src/gabarits/**) avecCOTEJARDIN_SITE_JSONinjecté explicitement. Promotion release simplifiée :dist/n'est mis de côté qu'au tout dernier moment (staging séparé), pas pendant toute la génération. Nouveau hook de preuveCOTEJARDIN_TEST_EXCEPTION_PROMOTION(rollback entre les deux promotions, jamais testé avant).verifier.php18/4 🟠 inchangé ;tests/tous.php35/35 ;persistance.test.php,publication-verrou.test.php,publication-cms.test.php(T-029/T-126/ T-102, horsPossède) toujours verts sans modification. Pas de merge versmain: PR ouverte pour relecture FG.2026-08-17 — T-112 recadrée (géométrie runtime OVH) : à l'ouverture, constat que l'objectif principal de la fiche (webroot séparé de l'application privée, ADR-002) est déjà en production depuis T-138 (16/08, commande
symlink-admindansscripts/ftp_deploy.py) — créerpublic/admin/index.php/public/api/mesure.phpversionnés aurait dupliqué ce mécanisme plutôt que de le tester. Recentrée sur le trou réel : aucune preuve automatisée queADMIN_WRAPPERSreste synchronisé avecsrc/admin/*.php(dérive = 404 silencieux en prod), ni que le générateur de wrapper reste inerte hors SFTP. Livré :tests/technique/geometrie-runtime.test.py(23 contrôles, dont deux preuves négatives — injection dans une cible piégée, écran ajouté hors liste) ; petit refactor pur deftp_deploy.py(contenu_wrapper()extrait, comportement identique,symlink-admin --essairevérifié).verifier.php18/4 🟠 inchangé ;tests/tous.php34/34. Fiche T-112 mise à jour avec le constat et les critères recentrés. Pas de merge versmain: PR ouverte pour relecture FG.2026-08-17 — PR #6 mergée sur
main+ cap v1 stable : revue des 6 points de relecture du handoff 12 (autoloadersrc/amorce.php, garde-fou d'architecture avec preuve négative,profil_runtime()refuse source/cible vide,validerCible()appelé avanteffacer()dansgeneration.php, adaptateurs CLIbin/verifier.php/bin/generer.phpminces, preuve négative § 8 demoteurs-appelables.test.phpdétectée en appel direct et en sous-processus CLI) — tout conforme à ce qu'annonçait la PR. Merge confirmé par FG (commit4d4c104).verifier.php18/4 🟠 inchangé ;tests/tous.php32/33 en environnement Bash Windows par défaut, 33/33 avecPYTHONUTF8=1(le seul échec est un pitfall d'encodage console cp1252 sur l'emoji 🟠 dansverifier_baseline.test.py, pas une régression PR #6). WorktreeT-090-T-111-squelette-moteursdésinscrit de Git (branche locale supprimée) ; dossier physique verrouillé par un process tiers, à nettoyer manuellement. Décision FG : les données Yann (B3, B6, allergènes, avis, photos, GPS) sortent du plan technique — saisie admin directe (écrans lot D déjà livrés), plus une tâche de dev à suivre. Cap : v1 release stable — prochaine étape technique = cascade runtime portable T-112…T-115.2026-08-17 — T-090 + T-111 commités (worktree, PR en attente) : squelette 4 couches (
src/Domaine,src/Application+ 4 portsDepotSite/DepotMesures/Journal/ReferenceOpposable,src/Infrastructure,src/Presentation) + autoloader PSR-4 maison (src/amorce.php, sans autoload Composer) + garde-fou d'architecturetests/architecture/dependances.test.php(pattern maison, 2/2 dont preuve négative). Moteurs extraits :valider_site()(src/inc/validation.php) etgenerer_site()(src/inc/generation.php) — appelables deux fois dans le même processus sans collision ni exit ; profilsprofil_depot()/profil_runtime()(src/inc/profils-execution.php), ce dernier refuse source/cible vide avant suppression (fiche T-111 § Piège).bin/*.phpdeviennent adaptateurs CLI minces.dist/byte-pour-byte identique à main ;verifier.php18/4 🟠 ;tests/tous.php32/33 (instantanes.test.php— 4 "zéro diff" pré-existants sur main, pas une régression) ;moteurs-appelables.test.php17/17 ;verifier-invariants.test.php9/9. Limitation documentée :generer_site()appelable une fois par processus (gabaritsmentions-legales.php/confidentialite.phpdéclarent des fonctions globales qui collisionnent au second rendu — nettoyage T-095, hors périmètre). Handoff12-relecture-T-090-T-111-2026-08-17.md. Pas de merge versmain: FG relit puis décide.2026-08-16 — ADR-003 acceptée + ADR-004 rédigée : revue de l'ADR-003 (baseline corrigée 18 323 lignes / 65 fichiers au 16/08, ~32 tests à migrer au lieu de 7, doublon
chemin_donnees_dir()ajouté,const RACINEétendue aux tests, taille réelle des écrans admin ~267 lignes, statutproposée→acceptée, renvoi vers ADR-004 pour l'autorité runtime). ADR-004 « Autorité runtime » créée — contrat à 4 niveaux (graine / copie dépôt / runtime / release), 8 règles opposables,sync-apppréserve la runtime (inverse05 §3 ligne 167), alerte humaine périodique pour 04 vs runtime,ReferenceOpposablelu par agents/dev seuls. Handoffs 03/04/05/08 +CLAUDE.mdréconciliés (T-110).verifier.php18/4 🟠 inchangé. Worktree T-090 + T-111 ouvert (pas de merge versmain). VoirADR-003etADR-004.2026-08-16 — Lot K clos : portes qualité T-150…T-155 livrées (baseline pinnée, Possède, hooks Cursor, preflight, hygiène docs).
verifier.php18/4 🟠 ;verifier_baseline.pyconforme (instantanés en ignore horaire). Pas de deploy OVH.2026-08-16 — Lot K Vague 0 : handoff 11 + guide portes qualité + PLAN
PLAN-lot-K-portes-qualite-2026-08-16.md- fiches T-150…T-155. Objectif : portes mécaniques (baseline, Possède, hooks Cursor, preflight, hygiène docs). Pas de deploy OVH.
2026-08-16 — T-149 : création fiche
docs/plan/taches/T-149-comparatif-modeles-lot-J.mdet livrabledocs/reference/comparatif-modeles-lot-J-2026-08-16.md. Comparatif Cursor / Ollama / Opus produit selon handoff 10 (6 axes + avis sur fusion), sans reouverture Lot J ni dettes connues.verifier.phpconserve la baseline 18/4 🟠. Pas de commit.2026-08-16 — Relecture Lot J : relecture lecture seule post-swarm.
verifier.php18/4 🟠 (conforme) ;tests/tous.php27/28 (écart vs 28/28 annoncé —instantanes.test.php/data-cms-ouvert, point #5 du handoff 09, pas une régression). Conformités T-126/T-127/T-136/T-137/T-138/ T-139/T-140 vérifiées sur le code. Livrabledocs/reference/rapport-relecture-lot-J-2026-08-16.md; handoff10-relecture-lot-J-2026-08-16.md(mission : retour comparatif forces/faiblesses des 3 modèles). Pas de commit.2026-08-16 — Lot J Vague 3 : merge coordinateur T-134…148 sur
main(conflit STATUS résolu ;POLICES_REQUISESaligné post-T-134).verifier.php18/4 🟠 ;budgets.test.php35/35 (6060/6144) ;htaccess.test.php12/12 ;tests/tous.php27/28 (instantanes.test.php— T-140). Dette D1contenu.php:123notée REPRISE §4. Pas de push.2026-08-16 — T-137 : erifier.php durci — schéma, assets, pizzas vs 04 (compte dynamique), accès gardés. Baseline 18/4 🟠 documentée ; erifier-invariants.test.php 9/9. Pas de push.
2026-08-16 — T-147 : budgets gzip documentés dans les 3 JS CMS (6060/6144, marge 84 o) ; en-tête evenements.js condensé ; commentaires seuls. udgets.test.php 35/35 ; baseline verifier 18/4 🟠. Worktree ache/T-147, pas de push.
2026-08-16 — Lot J Vague 1 : merge coordinateur T-120…146 sur
main(0 conflit).verifier.php11/4 🟠 ;tests/tous.php25/26 (instantanes.test.php4 diffs — T-140). Pas de push.2026-08-16 — Lot J Vague 0 : plan fusionné
PLAN-lot-J-ultime-2026-08-16.md; fiches T-120…T-148 créées ; T-044 réintégré Lot E (absorbé → T-128) ; STATUS/REPRISE/index/DISPATCH alignés. Vague 1 prête (10 worktrees, pas de dispatch).2026-08-15 — Vague 6 : mise en ligne contrôlée.
verifier.php11/4 🟠 ;generer.php4 pages / 38 ressources ; essais à blanc puisdeploy(42 fichiers) etsync-app(263 fichiers). Prod : thèmes + pastille + interactions ; carte masquée ; admin connexion ;robots.txtDisallow: /inchangé. Pas de commit de clôture dédié ce jour-là ; code lot I surmain.2026-08-15 — T-105 : recette Vague 5 rejouée. Contrastes AA verts (T-101) ; instantanés 32/32 (T-094) ; T-107 CSS mort retiré. Batterie
tests/cms/*+ rendu + légaux +verifier.php11/4 🟠. GO Vague 6. Pas de commit, pas de deploy.2026-08-15 — T-107 : règles CSS mortes
.gros-texteretirées desrc/assets/styles.css(bouton et clé déjà partis T-101/T-106).styles-mouvement.test.php3/3 ;verifier.php11 verts / 4 🟠. Pas de commit.2026-08-15 — T-094 : 4 instantanés régénérés (T-101/T-104). Diff = chrome CMS uniquement (pastille
aria-label, anti-flash localStorage,interactions.css/js). Aucun fait commercial ajouté.instantanes.test.php32/32 sans MAJ ;verifier.php11 verts / 4 🟠. Pas de commit.2026-08-15 — T-105 : recette Vague 5.
tests/cms/**+docs/reference/cms-recette.md. Matrice 36/36. T-102 et T-104 confirmés verts (STATUS était resté ⬜). 2 contrastes AA → T-101 ; instantanés 4 diffs → T-094. NO-GO Vague 6. Pas de commit.2026-08-15 — T-106 : allowlist légale =
cotejardin-theme-visiteurcotejardin-guide-admin-v1;cotejardin-gros-texteretiré (plus d’usage danssrc/hors commentaire).legaux.test.php102/102. Fiche + index commités.
2026-08-15 — T-101 : 4 gabarits +
apparence.php/apparence.css. Presetscarnet-village/comptoir/maison-images; pastille pizza ; anti-flashamorcer(); Gros texte retiré. Tests 130/130 + rendu 47/47. Pas de commit. Suite : T-102 ∥ T-104. Allowlist légale et instantanés T-094 restent hors Possède.2026-08-15 — T-103 : évaluateur Paris (
conditions.php+evenements.js), fixtures partagées, 34/34 PHP et 59/59 JS (preuves mutation en bac). Pas de commit. Suite : T-101.2026-08-15 — T-098 :
themes-visiteur.js+ tests JS 41/41, PHP 22/22. Replicarnet-village, cycle 5 activations, clécotejardin-theme-visiteur. Pas de commit. Suite : T-103 puis T-101.2026-08-15 — T-100 : schéma CMS + exemple +
schema-cms.test.php(25/25). Suite : T-103 ∥ T-098.2026-08-15 — index : lot I = T-100…T-105 ; runtime = T-110…T-115 ; T-093 ✅ ; T-095 ✅ ; T-094 reste ⬜.
2026-08-15 — horaires : confirmation écrite assumée par FG pour Yann (11 h–22 h, fermé mardi) —
docs/handoff/04§2 ; congés / fériés restent 🟠.