37/37 mouvements appariés à la date et au montant sur les trois comptes. Le
manifeste décrit l'exercice exactement comme la banque le connaît, et la banque
est le seul référent qu'on ne peut pas réécrire : Qonto et Wise sont hors de
Dolibarr. C'est le test qui compte, et il passe.
L'appariement se fait sur (date, montant) et SUR RIEN D'AUTRE. Le libellé n'y
participe pas — c'est précisément ce que le rejeu corrige, il ne peut pas servir
à valider.
Les corrections sont DÉCLARATIVES : chacune nomme le défaut, sa cause, son
remède et sa portée. Une correction sans cause écrite est une réécriture
silencieuse, et c'est ce qu'un repreneur lira pour comprendre pourquoi le livre
reconstruit diffère de l'ancien.
- 20 des 37 mouvements portent un libellé Dolibarr générique, illisible au
grand livre ;
- les 7 indemnités ne se journalisent pas faute de compte auxiliaire — le
correctif (455110) est vérifié en sandbox ;
- la TVA d'OVH est réclamée en déduction alors que la facture est au nom
personnel du fondateur : 7,30 TTC au taux 0, déductible 353,76 → 352,54.
Aucune déclaration déposée (CA12 annuelle), la correction est gratuite.
CE QUI RESTE BLOQUÉ, et ce n'est pas un détail d'implémentation : un rejeu EN
ÉCRITURE exige une instance VIERGE. sandbox-lifecycle.sh ne sait que
refresh-from-prod — un re-seed iso-prod, qui réimporte précisément les défauts
qu'on veut corriger. Écrire le rejeu sans cette capacité produirait des
doublons, pas une reconstruction. Le mode vierge est le préalable.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
ERP
CLI — bin/arcodange
Read-only operational CLI for the Arcodange Dolibarr at erp.arcodange.lab. One entry point, subcommands per domain:
bin/arcodange ping # Dolibarr version + liveness
bin/arcodange whoami # confirm auth as ai_agent
bin/arcodange invoice list # KissMetrics invoices with payment state
bin/arcodange invoice audit 12 # JSON facts + PDF mandatory-mention audit
bin/arcodange payments state # per-invoice TTC vs payments reconciliation
bin/arcodange payments timeline --year 2026 # cash receipts with cumulative balance
bin/arcodange tva summary # CA3-ready collectée − déductible per month
bin/arcodange thirdparty audit-all # completeness audit, country-aware
bin/arcodange templates inspect 1 # recurring template health (frequency, next fire, …)
bin/arcodange snapshot --out /tmp/erp.json # full state dump with content_hash
bin/arcodange help # full command tree
Read-only by design. The underlying API key (ai_agent) has no write permissions; corrections go through the Dolibarr UI.
Credentials. Reads .claude/skills/dolibarr/.env (mode 600, gitignored). Setup instructions: .claude/skills/dolibarr/README.md.
Source of behaviour. Each subcommand delegates to a script under .claude/skills/<skill>/scripts/. The skills' SKILL.md files document the business logic and are also discoverable by Claude Code via skill triggers.
Dolibarr
Premiers démarrages
Si l'application log au démarrage l'erreur suivante:
Importing custom SQL from update_table_ownership.sql ...
sed: couldn't open temporary file /var/www/scripts/before-starting.d/sedwHcRlQ: Read-only file system
Il faudra prendre la main du shell du pod et executer:
kubectl exec -n erp `kubectl get pod -n erp -l app.kubernetes.io/name=erp -o=name` -c erp -- sh -c 'PGPASSWORD=${DOLI_DB_PASSWORD} psql -U ${DOLI_DB_USER} -h ${DOLI_DB_HOST} -p ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} \
-f /var/www/scripts/before-starting.d/update_table_ownership.sql'
Sous peine de ne plus avoir les droits de consulter la base de données une fois les crédentials mis à jour par vault. Dans ce cas executer la commande mais avec les credentials d'admin postgres.