main.ts pilote l'ASSISTANT D'INSTALLATION de Dolibarr (initialSetup.ts va sur
/install/). C'est le script le plus destructeur du dépôt, et il était le seul
des scripts UI à n'avoir aucune garde d'hôte — alors que la docstring de
guard.ts nomme précisément le danger : « test/.env ships DOLIBARR_ADDRESS
pointing at PRODUCTION, so a script run with the ambient environment would
drive the real ERP ».
Pointé sur la production avec l'environnement ambiant, il relançait l'installeur
sur l'ERP réel. assertSandbox() n'autorise désormais que le bac à sable, sauf
double opt-in explicite (ARCO_ALLOW_PRODUCTION + ARCO_PROD_CONFIRM) — que
l'installation initiale d'un nouvel environnement justifie, et qui reste un
geste d'opérateur.
Vérifié : DOLIBARR_ADDRESS=https://erp.arcodange.lab est refusé.
Ceci clôt le mode vierge, qui n'avait rien à inventer. La chaîne existait déjà
en entier :
sandbox-lifecycle.sh blank --yes purge la base, retire install.lock
test/main.ts pilote l'installeur, société, affichage, modules
touch install.lock reverrouille (procédure du README)
test/provisionSandbox.ts agent d'écriture, droits, clé API
Le « golden empty » proposé au commit précédent était une invention pour un
problème résolu : je n'avais pas regardé test/. C'est exactement le contrôle
inscrit dans AGENTS.md le matin même — lire l'existant avant de modéliser.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>