Après un refresh iso-prod, le DOLI_INSTANCE_UNIQUE_ID change → une api_key chiffrée avec l'ancien id n'est plus déchiffrable → Dolibarr affiche des octets non-UTF-8 dans le champ. La generateApiKey du POC réutilisait toute valeur non-vide → elle recopiait ce binaire dans test/.ai_agent_sandbox.key (clé corrompue, 401).
Fix : ne réutiliser que si la valeur est une vraie clé propre (^[A-Za-z0-9_-]{24,}$) ; sinon vider le champ + régénérer. Donc checkpoint provision après un refresh produit une clé neuve et fonctionnelle.
(En parallèle j'ai déjà vidé la clé cassée en base + supprimé les fichiers corrompus côté live, donc une simple ré-exécution du POC suffit maintenant.)
## Le bug de la clé API (ton blocage)
Après un **refresh iso-prod**, le `DOLI_INSTANCE_UNIQUE_ID` change → une `api_key` chiffrée avec l'**ancien** id n'est plus déchiffrable → Dolibarr affiche des octets non-UTF-8 dans le champ. La `generateApiKey` du POC **réutilisait** toute valeur non-vide → elle recopiait ce binaire dans `test/.ai_agent_sandbox.key` (clé corrompue, 401).
**Fix :** ne réutiliser que si la valeur est une **vraie clé propre** (`^[A-Za-z0-9_-]{24,}$`) ; sinon vider le champ + régénérer. Donc `checkpoint provision` après un refresh produit une clé **neuve et fonctionnelle**.
(En parallèle j'ai déjà vidé la clé cassée en base + supprimé les fichiers corrompus côté live, donc une simple ré-exécution du POC suffit maintenant.)
## Note plateforme (ta demande : trouvable au prochain coup d'œil backup)
`ops/backup/README.md` documente désormais les **suites plateforme (hors erp)** ouvertes :
1. le groupe Longhorn `default` orphelin → **les autres volumes du cluster n'ont aucun backup offsite** (à corriger côté factory) ;
2. vérifier que le cron `pg_dumpall` de factory tourne vraiment sur l'hôte.
Et le statut de l'automatisation passe à **LIVE** (CronJob quotidien actif depuis le 2026-06-30).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
After an iso-prod refresh the instance unique-id changes, so an api_key encrypted
with the OLD id can't be decrypted — Dolibarr renders non-UTF-8 bytes in the field.
The POC's generateApiKey reused any non-empty value, so it copied that garbage into
test/.ai_agent_sandbox.key (corrupt key, 401s). Now it reuses ONLY a clean key
(^[A-Za-z0-9_-]{24,}$); otherwise it clears the field and regenerates. So
`checkpoint provision` after a refresh yields a fresh, working key.
Also documents the open PLATFORM follow-ups in ops/backup/README.md (easy to find
when revisiting ERP backups): the orphaned Longhorn `default` recurring-job group
(other cluster volumes have no offsite backup), and verifying the factory
pg_dumpall host cron.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Le bug de la clé API (ton blocage)
Après un refresh iso-prod, le
DOLI_INSTANCE_UNIQUE_IDchange → uneapi_keychiffrée avec l'ancien id n'est plus déchiffrable → Dolibarr affiche des octets non-UTF-8 dans le champ. LagenerateApiKeydu POC réutilisait toute valeur non-vide → elle recopiait ce binaire danstest/.ai_agent_sandbox.key(clé corrompue, 401).Fix : ne réutiliser que si la valeur est une vraie clé propre (
^[A-Za-z0-9_-]{24,}$) ; sinon vider le champ + régénérer. Donccheckpoint provisionaprès un refresh produit une clé neuve et fonctionnelle.(En parallèle j'ai déjà vidé la clé cassée en base + supprimé les fichiers corrompus côté live, donc une simple ré-exécution du POC suffit maintenant.)
Note plateforme (ta demande : trouvable au prochain coup d'œil backup)
ops/backup/README.mddocumente désormais les suites plateforme (hors erp) ouvertes :defaultorphelin → les autres volumes du cluster n'ont aucun backup offsite (à corriger côté factory) ;pg_dumpallde factory tourne vraiment sur l'hôte.Et le statut de l'automatisation passe à LIVE (CronJob quotidien actif depuis le 2026-06-30).
🤖 Generated with Claude Code
After an iso-prod refresh the instance unique-id changes, so an api_key encrypted with the OLD id can't be decrypted — Dolibarr renders non-UTF-8 bytes in the field. The POC's generateApiKey reused any non-empty value, so it copied that garbage into test/.ai_agent_sandbox.key (corrupt key, 401s). Now it reuses ONLY a clean key (^[A-Za-z0-9_-]{24,}$); otherwise it clears the field and regenerates. So `checkpoint provision` after a refresh yields a fresh, working key. Also documents the open PLATFORM follow-ups in ops/backup/README.md (easy to find when revisiting ERP backups): the orphaned Longhorn `default` recurring-job group (other cluster volumes have no offsite backup), and verifying the factory pg_dumpall host cron. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>