chore: réconcilier le trunk avec main, et corriger la note du mode vierge
DEUX CHOSES.
1. RÉCONCILIATION. Le trunk accusait 49 commits de retard, 0 d'avance : tout son
delta vivait dans l'arbre de travail, mélange d'améliorations réelles et d'état
périmé. Il est remis sur origin/main, et son état est préservé sur la branche
trunk-snapshot-20260814. Ce qui méritait d'être porté l'est ici :
- test/main.ts : chemin Work/ au lieu de Desktop/ (l'ancien n'existe plus) et
module TIERS activé. L'URL par défaut reste corrigée par la garde d'hôte ;
- ansible README : la commande du playbook recurrentBackup ;
- company.json : siteWeb arcodange.fr et email @arcodange.fr — le trunk était
à jour sur ces deux champs quand main portait encore duckdns et gmail.
NE SONT PAS PORTÉS, délibérément :
- le .gitignore du trunk, qui avait PERDU les règles replay-packs ;
- company.json SAS / 6201Z, périmé — main porte SARL / 6201Z depuis le PR #77 ;
- un console.log de débogage dans forms.ts ;
- createEphemeralAgent + permissions.ts + orchestratorExample.ts : travail
cohérent mais qui DOUBLE le modèle de scopes durables (scopes.ts +
provisionAiUser.ts) effectivement livré. Deux conceptions concurrentes de la
même chose ne se portent pas en silence — arbitrage opérateur.
2. LA NOTE DU MODE VIERGE ÉTAIT FAUSSE. Elle annonçait qu'il manquait un « golden
empty ». Rien ne manquait : la chaîne existe en entier dans test/, et c'est
main.ts qui pilote l'installeur. J'avais proposé de construire ce qui était déjà
là, faute d'avoir regardé — exactement le contrôle inscrit dans AGENTS.md le
matin même. La note décrit désormais la chaîne réelle :
blank --yes -> main.ts -> install.lock -> provisionSandbox.ts
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
# Ansible Collection - arcodange.erp
|
# Ansible Collection - arcodange.erp
|
||||||
|
|
||||||
Documentation for the collection.
|
Documentation for the collection.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ansible-playbook playbooks/recurrentBackup.yml -i ~/.ansible/collections/ansible_collections/arcodange/factory/inventory -vv
|
||||||
|
```
|
||||||
@@ -182,25 +182,19 @@ sync_documents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# --- mode vierge -------------------------------------------------------------
|
# --- mode vierge -------------------------------------------------------------
|
||||||
# ÉTAT : INCOMPLET. La purge fonctionne, l'instance ne se reconstruit PAS.
|
# Vide la base du bac à sable pour qu'un rejeu d'exercice reparte de zéro.
|
||||||
|
# `refresh-from-prod` réimporterait précisément les défauts que le rejeu doit
|
||||||
|
# corriger : reconstruire suppose donc une base vide, pas iso-prod.
|
||||||
#
|
#
|
||||||
# Vérifié le 2026-08-14 : après DROP OWNED et retrait de install.lock, Dolibarr
|
# CETTE COMMANDE N'EST QU'UNE ÉTAPE. Seule, elle laisse le bac à sable sans
|
||||||
# sert une page de login sur un schéma à ZÉRO table et l'API répond « Module Api
|
# schéma — Dolibarr sert alors une page de login sur une base vide. La chaîne
|
||||||
# must be enabled ». L'entrypoint de l'image NE LANCE PAS d'installation
|
# complète, déjà outillée dans test/ :
|
||||||
# automatique — retirer le verrou ne suffit pas.
|
|
||||||
#
|
#
|
||||||
# CE QU'IL MANQUE : un « golden empty », c'est-à-dire un pg_dump d'une instance
|
# 1. sandbox-lifecycle.sh blank --yes purge la base, retire install.lock
|
||||||
# Dolibarr fraîchement installée — schéma + données de référence (dictionnaires,
|
# 2. cd test && deno run -A main.ts pilote l'installeur (/install/), la
|
||||||
# pays, plan comptable) — sans aucune donnée métier. `blank` restaurerait ce dump
|
# société, l'affichage et les modules
|
||||||
# au lieu de laisser la base vide, exactement comme `refresh-from-prod` restaure
|
# 3. touch install.lock dans le pod reverrouille (recette du test/README.md)
|
||||||
# le dump de production. Seule la source change.
|
# 4. deno run -A provisionSandbox.ts agent d'écriture, droits, clé API
|
||||||
#
|
|
||||||
# En l'état, `blank` laisse le bac à sable INUTILISABLE : ne l'employer que suivi
|
|
||||||
# de `refresh-from-prod`, ou une fois le golden empty constitué.
|
|
||||||
#
|
|
||||||
# Vide la base du bac à sable SANS rien restaurer, pour qu'un rejeu d'exercice
|
|
||||||
# reparte de zéro. `refresh-from-prod` réimporterait précisément les défauts que
|
|
||||||
# le rejeu doit corriger : reconstruire suppose donc une base vide, pas iso-prod.
|
|
||||||
#
|
#
|
||||||
# CE QUI REND L'OPÉRATION SÛRE : elle est ANNULABLE. `refresh-from-prod` restaure
|
# CE QUI REND L'OPÉRATION SÛRE : elle est ANNULABLE. `refresh-from-prod` restaure
|
||||||
# un bac à sable iso-prod en trois minutes. On peut donc casser sans regret — et
|
# un bac à sable iso-prod en trois minutes. On peut donc casser sans regret — et
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
"ville": "Evry Courcouronnes",
|
"ville": "Evry Courcouronnes",
|
||||||
"pays": "France (FR)",
|
"pays": "France (FR)",
|
||||||
"telephonePortable": "0664574539",
|
"telephonePortable": "0664574539",
|
||||||
"siteWeb": "gitea.arcodange.duckdns.org",
|
"siteWeb": "arcodange.fr",
|
||||||
"email": "[email protected]",
|
"email": "[email protected]",
|
||||||
"logoFilePath": "$IMG/logo512.png"
|
"logoFilePath": "$IMG/logo512.png"
|
||||||
},
|
},
|
||||||
"ID": {
|
"ID": {
|
||||||
@@ -22,5 +22,5 @@
|
|||||||
"numTva": "FR00999657455",
|
"numTva": "FR00999657455",
|
||||||
"rcs_rm": "R.C.S. Évry",
|
"rcs_rm": "R.C.S. Évry",
|
||||||
"moisDebutExercice": "Janvier"
|
"moisDebutExercice": "Janvier"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -27,7 +27,7 @@ const adminCredentials = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const rootFolderPath = Deno.env.get("ROOT_FOLDER") ||
|
const rootFolderPath = Deno.env.get("ROOT_FOLDER") ||
|
||||||
"/Users/gabrielradureau/Desktop/ARCODANGE/erp";
|
"/Users/gabrielradureau/Work/Arcodange/erp";
|
||||||
const imgFolderPath = Deno.env.get("IMG_FOLDER") ||
|
const imgFolderPath = Deno.env.get("IMG_FOLDER") ||
|
||||||
path.join(rootFolderPath, "static/img");
|
path.join(rootFolderPath, "static/img");
|
||||||
const configFolderPath = Deno.env.get("CONFIG_FOLDER") ||
|
const configFolderPath = Deno.env.get("CONFIG_FOLDER") ||
|
||||||
@@ -78,7 +78,7 @@ const globalCtx = {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// await displaySetup.setupDisplay(globalCtx);
|
// await displaySetup.setupDisplay(globalCtx);
|
||||||
await moduleSetup.configureModule(globalCtx, {moduleName: 'TIERS' ,enabled: false, onConfiguration: async () => {
|
await moduleSetup.configureModule(globalCtx, {moduleName: 'TIERS' , enabled: true, onConfiguration: async () => {
|
||||||
await globalCtx.page.screenshot({path: 'save.png'})
|
await globalCtx.page.screenshot({path: 'save.png'})
|
||||||
}});
|
}});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user