chore(tickets): synchro du store local — création #254 (rendez-vous OpenCode/GLM NoReply sporadique) + #244 passage en QA (validation live v0.35.0)
This commit is contained in:
@ -1,14 +1,26 @@
|
|||||||
---
|
---
|
||||||
issueRef: "#244"
|
issueRef: "#244"
|
||||||
version: 7
|
version: 9
|
||||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
updatedAt: 1787564256353
|
updatedAt: 1787564815023
|
||||||
---
|
---
|
||||||
2026-08-24
|
2026-08-24
|
||||||
- Repro QA confirmée sur le ticket #244.
|
- Repro QA confirmée sur le ticket #244.
|
||||||
- Scénario minimal: ouvrir Templates, éditer un template, cocher une permission MCP (ex. `idea_ticket_read`), sauvegarder, fermer, rouvrir: la case est de nouveau décochée.
|
- Scénario minimal: ouvrir Templates, éditer un template, cocher une permission MCP (ex. `idea_ticket_read`), sauvegarder, fermer, rouvrir: la case est de nouveau décochée.
|
||||||
- QA a démontré que le bug ne vient pas du pur UI local: le test frontend de réouverture avec `MockTemplateGateway` passe.
|
- QA a démontré que le bug ne vient pas du pur UI local: le test frontend de réouverture avec `MockTemplateGateway` passe.
|
||||||
- QA a isolé une rouge backend de contrat: `update_template` ne désérialise pas actuellement la clé frontend `mcpToolPermissions`; le DTO backend n'accepte que `defaultMcpToolPermissions` / `defaultMcpToolPolicy`.
|
- QA a isolé une rouge backend de contrat: `update_template` ne désérialise pas actuellement la clé frontend `mcpToolPermissions`; le DTO backend n'accepte que `defaultMcpToolPermissions` / `defaultMcpToolPolicy`.
|
||||||
- Test rouge de référence: `cargo test -p app-tauri --test dto_templates update_template_request_does_not_currently_deserialise_frontend_mcp_tool_permissions_key -- --exact`.
|
- Test rouge de référence initial: `cargo test -p app-tauri --test dto_templates update_template_request_does_not_currently_deserialise_frontend_mcp_tool_permissions_key -- --exact`.
|
||||||
- Conclusion de reprise: traiter ce ticket comme un correctif backend de contrat/persistance, puis faire revalider frontend+backend par QA.
|
- Architect a cadré le fix minimal: backend pur au niveau DTO request, avec `mcpToolPermissions` comme entrée canonique et tolérance d'alias legacy en entrée.
|
||||||
- Prochaine étape: cadrage Architect, décision Git, implémentation DevBackend, revalidation QA, intégration Git.
|
- Git a ouvert la branche `fix/244-mcp-tool-permissions-dto` depuis `develop` @ `592f248`.
|
||||||
|
- DevBackend a implémenté le fix dans `crates/backend/src/dto.rs`: désérialisation manuelle `CreateTemplateRequestDto` et `UpdateTemplateRequestDto` pour accepter `mcpToolPermissions` en priorité puis `defaultMcpToolPermissions` et `defaultMcpToolPolicy`; mapping interne conservé vers `default_mcp_tool_policy`.
|
||||||
|
- DevBackend a aussi ajouté/ajusté les garde-fous dans `crates/app-tauri/tests/dto_templates.rs` et conservé le test frontend `frontend/src/features/templates/templates.test.tsx`.
|
||||||
|
- QA a revalidé en vert:
|
||||||
|
- `cargo test -p app-tauri --test dto_templates update_template_request_does_not_currently_deserialise_frontend_mcp_tool_permissions_key -- --exact` → **1 passed**
|
||||||
|
- `cargo test -p app-tauri --test dto_templates` → **22 passed**
|
||||||
|
- `cd frontend && npm test -- --run src/features/templates/templates.test.tsx -t "reopening an edited template preserves saved MCP tool permissions in the editor"` → **1 passed**
|
||||||
|
- Git a intégré localement:
|
||||||
|
- commit fix `69129a9`
|
||||||
|
- commit miroir `a6a97fd`
|
||||||
|
- merge local vers `develop` `7f445cb`
|
||||||
|
- aucun push.
|
||||||
|
- Statut décidé: ticket remis en **QA**. La preuve automatisée est verte et le fix est mergé localement dans `develop`; la prochaine preuve finale attendue est la validation live du parcours édition/sauvegarde/réouverture d'un template avec permissions MCP.
|
||||||
@ -2,7 +2,7 @@
|
|||||||
id: "d1fa2322-1fec-4a1e-b1d4-4b9af19a2ffc"
|
id: "d1fa2322-1fec-4a1e-b1d4-4b9af19a2ffc"
|
||||||
number: 244
|
number: 244
|
||||||
title: "Corriger la non-persistance des permissions de templates et réaligner les templates globaux"
|
title: "Corriger la non-persistance des permissions de templates et réaligner les templates globaux"
|
||||||
status: "inProgress"
|
status: "qa"
|
||||||
priority: "high"
|
priority: "high"
|
||||||
sprint: null
|
sprint: null
|
||||||
links: []
|
links: []
|
||||||
@ -11,7 +11,7 @@ attachments: []
|
|||||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
createdAt: 1787480706836
|
createdAt: 1787480706836
|
||||||
updatedAt: 1787564256353
|
updatedAt: 1787564815023
|
||||||
version: 7
|
version: 9
|
||||||
---
|
---
|
||||||
Les permissions MCP/system définies sur les templates ne semblent pas être sauvegardées correctement. Vérifier la persistance, puis remettre les permissions des templates existants pour qu'elles correspondent aux permissions effectives des agents du projet courant (Git, Architect, DevBackend, DevFrontend, QA, UX, Main, Context).
|
Les permissions MCP/system définies sur les templates ne semblent pas être sauvegardées correctement. Vérifier la persistance, puis remettre les permissions des templates existants pour qu'elles correspondent aux permissions effectives des agents du projet courant (Git, Architect, DevBackend, DevFrontend, QA, UX, Main, Context).
|
||||||
18
.ideai/tickets/254/carnet.md
Normal file
18
.ideai/tickets/254/carnet.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
issueRef: "#254"
|
||||||
|
version: 2
|
||||||
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
|
updatedAt: 1787566369625
|
||||||
|
---
|
||||||
|
2026-08-24
|
||||||
|
- Reprise du ticket par cycle complet.
|
||||||
|
- Investigation strictement centrée sur les artefacts du projet ReadaBook: les profils agents Git/Architect/QA pointent bien sur ReadaBook via OpenCode/GLM; les permissions projet sont larges (`read/write/delete/executeBash`, fallback allow).
|
||||||
|
- QA a isolé la vraie classe de bug: rendez-vous `idea_ask_agent` vers cible structured/headless qui termine sans `Final` inline exploitable; cela remonte en `TARGET_RETURNED_NO_REPLY` / `NoReply: agent ... finished without a structured Final response`.
|
||||||
|
- QA a validé par exécution réelle des tests existants IdeA:
|
||||||
|
- `cargo test -p infrastructure --test orchestrator_watcher ask_request_no_reply_persists_failed_rendezvous_task -- --exact` -> ok
|
||||||
|
- `cargo test -p application ask_target_returns_to_prompt_without_reply_is_a_typed_error -- --exact` -> ok
|
||||||
|
- `cargo test -p application structured_opencode_decode_without_final_is_a_typed_no_reply_error -- --exact` -> ok
|
||||||
|
- `cargo test -p application ask_structured_closed_stream_without_final_returns_inline_no_reply_error -- --exact` -> ok
|
||||||
|
- `cargo test -p application ask_structured_session_error_surfaces_process_message_not_no_reply -- --exact` -> ok
|
||||||
|
- Conclusion QA: la fragilité observée est la capture/corrélation d'une `Final` textuelle exploitable sur OpenCode/GLM, pas une permission MCP globalement absente.
|
||||||
|
- Prochaine étape: cadrage Architect sur le plus petit correctif sûr (capture Final / fallback / classification), décision Git, implémentation DevBackend, revalidation QA, puis rebuild AppImage.
|
||||||
17
.ideai/tickets/254/issue.md
Normal file
17
.ideai/tickets/254/issue.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
id: "c77c66e2-5a81-4998-bcf5-c939be68b006"
|
||||||
|
number: 254
|
||||||
|
title: "Stabiliser les rendez-vous inter-agents OpenCode/GLM et éliminer les faux NoReply/perms sur projets externes"
|
||||||
|
status: "inProgress"
|
||||||
|
priority: "high"
|
||||||
|
sprint: null
|
||||||
|
links: []
|
||||||
|
agentRefs: []
|
||||||
|
attachments: []
|
||||||
|
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||||
|
createdAt: 1787565563009
|
||||||
|
updatedAt: 1787566369625
|
||||||
|
version: 2
|
||||||
|
---
|
||||||
|
Enquête à partir du projet ReadaBook: des délégations Main -> Git/Architect/QA via profils OpenCode/GLM échouent encore sporadiquement avec `NoReply: agent ... finished without a structured Final response`, alors que les mêmes agents réussissent sur d'autres prompts. Les logs montrent aussi un vieux mélange de contexte où des agents Git/QA répondaient depuis le projet IdeA au lieu de ReadaBook et accusaient à tort des refus de permissions sur `/home/anthony/Documents/Projects/ReadaBook`. Il faut distinguer et corriger: 1) les vrais rendez-vous headless qui finissent sans Final capturée; 2) les cas de mauvais contexte/projet qui produisent de faux diagnostics de permissions. Périmètre probable: orchestration rendezvous/final-capture + projection d'état/live-state + messages d'erreur/réessai.
|
||||||
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"nextNumber": 254
|
"nextNumber": 255
|
||||||
}
|
}
|
||||||
@ -3285,7 +3285,7 @@
|
|||||||
"issueRef": "#244",
|
"issueRef": "#244",
|
||||||
"path": "244",
|
"path": "244",
|
||||||
"title": "Corriger la non-persistance des permissions de templates et réaligner les templates globaux",
|
"title": "Corriger la non-persistance des permissions de templates et réaligner les templates globaux",
|
||||||
"status": "inProgress",
|
"status": "qa",
|
||||||
"priority": "high",
|
"priority": "high",
|
||||||
"sprint": null,
|
"sprint": null,
|
||||||
"assignedAgentIds": [],
|
"assignedAgentIds": [],
|
||||||
@ -3293,7 +3293,7 @@
|
|||||||
"kind": "agent",
|
"kind": "agent",
|
||||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||||
},
|
},
|
||||||
"updatedAt": 1787564256353
|
"updatedAt": 1787564815023
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"issueRef": "#245",
|
"issueRef": "#245",
|
||||||
@ -3420,6 +3420,20 @@
|
|||||||
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||||
},
|
},
|
||||||
"updatedAt": 1787552434207
|
"updatedAt": 1787552434207
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issueRef": "#254",
|
||||||
|
"path": "254",
|
||||||
|
"title": "Stabiliser les rendez-vous inter-agents OpenCode/GLM et éliminer les faux NoReply/perms sur projets externes",
|
||||||
|
"status": "inProgress",
|
||||||
|
"priority": "high",
|
||||||
|
"sprint": null,
|
||||||
|
"assignedAgentIds": [],
|
||||||
|
"createdBy": {
|
||||||
|
"kind": "agent",
|
||||||
|
"agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d"
|
||||||
|
},
|
||||||
|
"updatedAt": 1787566369625
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user