Files
IdeA/.ideai/tickets/197/carnet.md

17 lines
2.3 KiB
Markdown

---
issueRef: "#197"
version: 9
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1786712736077
---
2026-08-14 Main
- Ticket créé suite au bug utilisateur sur la dernière AppImage: même avec toutes les permissions accordées dans le menu IdeA, les agents ne peuvent pas écrire dans le root du projet.
- Aucun ticket ouvert correspondant trouvé.
- Architect: RCA principale = split de contrat entre projection générique Codex et launch structuré des agents. Le chemin structuré ne propage que des racines Git en writable_roots au lieu des write grants effectifs du menu, donc le root projet n'est jamais accordé à Codex même quand il devrait l'être. RCA secondaire = sélection sandbox_mode trop dépendante du fallback posture au lieu des write grants effectifs. Inverse bug lié côté ticket assistant = sur-grant whole project root hardcodé.
- Git: branche locale préparée `fix/197-sandbox-permissions-match-menu` depuis `develop` @ `6a98752c`.
- DevBackend a livré le fix backend sans commit: ajout d'un compilateur canonique de permissions Codex partagé par le launch structuré et ticket assistant; writable_roots dérivés des grants effectifs; sandbox_mode dérivé des writable_roots effectifs; tests ciblés verts sur agent_lifecycle et ticket_assistant.
- QA a d'abord donné `PASS WITH RISK` à cause d'un risque d'overgrant si une policy autorise large puis refuse un sous-chemin.
- DevBackend a confirmé le finding, corrigé en fail-closed la traduction Codex quand un deny d'écriture n'est pas représentable par `--add-dir`, et ajouté des tests de régression couvrant broad allow + subpath deny, fallback-wide write + subpath deny, disjoint explicit allow + unrelated deny, et ticket assistant.
- QA verdict final `PASS`: le symptôme exact est couvert et le contrat fort est respecté côté runtime/source. Quand la policy est représentable, les writable_roots correspondent aux grants; sinon le système fail-close en read-only. Verdict crédible: le fix doit fonctionner après rebuild d'un nouveau binaire.
- Limite assumée: la dernière AppImage déjà buildée n'a pas été revalidée et ne peut pas être modifiée sans rebuild; la validation a été faite depuis les sources/runtime local et les tests exécutés.