Reproduire la campagne du 10 octobre 2026 Les scripts sont les sources effectivement exécutées. Les chemins du client, de la cible, le port et les identifiants Git sont explicites dans le code ; les adapter à l’environnement de reproduction. 1. Sur la cible, créer un worktree isolé au commit 4207dfbe5e7d1709dbbd2efdd2cff8c1e6619dc1, dans /srv/www/pmacontrol-worktrees/bench-architecture-20261010. Exécuter php dev/worktree-install.php --no-trust-dev-keys --no-tmp-file-tmpfs. Aucun daemon n’est lancé dans ce worktree. 2. Préparer /tmp/bench-architecture-20261010/after.php depuis ce worktree et before.php avec git show 366b200703ff7550ec01d33e2c7d49c0b570ab15:App/Library/Dot3LatestGeneration.php. 3. Utiliser un compte temporaire ReadOnly et créer, sur le client, private-auth.json contenant les clés login et password, chmod 600. Aucun secret n’est fourni dans les pièces publiques. 4. Démarrer le serveur HTTPS avec la configuration fournie, sous www-data ; définir XDG_CONFIG_HOME et XDG_DATA_HOME sur des répertoires temporaires appartenant à www-data pour la CA TLS locale. 5. Démarrer Chromium avec --headless --no-sandbox --disable-gpu --no-first-run --ignore-certificate-errors --remote-debugging-address=127.0.0.1 --remote-debugging-port=19310 et un profil temporaire dédié. 6. Enregistrer les scripts téléchargés avec leurs noms locaux measure-browser.mjs et measure-http.py dans le répertoire du client défini par le script. Exécuter node measure-browser.mjs. Le script mesure dix visites avant/après après chauffe, exporte les cookies dans un fichier privé et appelle le contrôle curl avec le même User-Agent. Les erreurs de navigation, d’authentification et de statut HTTP provoquent un arrêt. 7. Copier le script SQL sur la cible et exécuter php measure-sql.php. Le script compare dix paires alternées dans le même instantané transactionnel READ ONLY et enregistre EXPLAIN / ANALYZE. query_cache_type=OFF et max_statement_time=30 sont limités à cette session. 8. Résumer les médianes à partir des lignes individuelles ; vérifier l’unicité du SHA-256 des graphes pour chaque campagne. Les médianes par étape ne sont pas additionnées pour calculer la médiane totale. 9. Arrêter les serveurs et Chromium temporaires, révoquer/supprimer le compte de mesure et ses sessions, vérifier que les scripts sont conservés, restaurer le seul fichier de comparaison et supprimer le worktree propre avec git worktree remove, puis git worktree prune. Pièces publiques : uniquement les colonnes numériques et les empreintes des chargements navigateur, les mesures curl, le SQL et les plans. Les cookies, mots de passe et corps de page ne sont pas publiés. Le relevé de 13 h 29 sur l’instance à 61 graphes est fourni par l’utilisateur et demeure une campagne distincte de cette reproduction sur 30 graphes.