fix(sandbox-poc): regenerate api_key when the existing one is garbage + note platform backup gaps #35

Merged
arcodange merged 1 commits from claude/poc-apikey-regen into main 2026-06-30 22:45:08 +02:00
Owner

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

## 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)
arcodange added 1 commit 2026-06-30 22:45:01 +02:00
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]>
arcodange merged commit 3045d50626 into main 2026-06-30 22:45:08 +02:00
arcodange deleted branch claude/poc-apikey-regen 2026-06-30 22:45:08 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/erp#35