- Restaure .ideai/tickets/ depuis 851f1f8^ (167 tickets + index.json + counter.json) - Enlève les ignore rules .ideai/tickets/ dans .gitignore (ligne 51 et 75) - Permet le suivi durable du store tickets futur - Ne touche pas sdk/ (reste untracked)
1.7 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||
|---|---|---|---|---|---|
| #25 | 11 |
|
1783491435654 |
Root cause
OpenTicketAssistant::execute fabriquait un plan OS-sandbox bespoke via SandboxPlan::project_read_only (grant RO sur project_root, posture Deny). Sous Landlock, un grant RO fait handle la classe read/exec (AccessFs::from_read(V1) inclut Execute). Le binaire CLI (codex/claude) vit hors du project root ⇒ execve refusé ⇒ EACCES (os error 13) au spawn sandboxé. Indépendant de la CLI. Les agents workspace n'ont pas le bug (plan no-op sous posture Allow).
Correctif (backend-pur, zéro port/DTO)
Décision Main : option fallback None. La surface assistant de ticket passe désormais None en 5e arg de factory.start (aligné sur les agents workspace). Garde-fous restants : policy MCP idea_ticket_read/update* + advisory LP3. Helper ticket_assistant_sandbox et preset SandboxPlan::project_read_only supprimés (plus aucun appelant).
Fichiers : crates/application/src/ticket_assistant.rs (+tests), crates/domain/src/sandbox.rs.
Validation
cargo test --workspaceVERT (app-tauri 63, application 80, infrastructure 254, domain OK).- Test ciblé :
factory.startreçoitSessionPlan::None+sandbox.is_none(). - Tests Landlock infra verts sur la machine.
- RÉSERVE : repro live Codex+Claude non exécutée — nécessite rebuild + swap de l'AppImage active + relance IdeA (interrompt la session).
Git
Commit 961a2ca → merge --no-ff cb20fab dans develop. Local only, pas de push.
Reste à faire
Repro live après rebuild AppImage pour clôture définitive. Dette différée : write-fence OS uniforme sur toutes les surfaces (cf. cadrage Architect) si l'on veut une clôture write-OS.