- 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)
2.0 KiB
id, number, title, status, priority, sprint, links, agentRefs, createdBy, updatedBy, createdAt, updatedAt, version
| id | number | title | status | priority | sprint | links | agentRefs | createdBy | updatedBy | createdAt | updatedAt | version | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| c3e1fbcc-cedc-48a5-a00e-b22ea8dc90de | 33 | [Dette] Fallthrough silencieux du routage structuré (lifecycle.rs:1705) | closed | high | e28a4d53-8bd2-446a-b0ac-2a017373b8b2 |
|
|
|
1783492190391 | 1784048928225 | 4 |
Cause racine structurelle identifiée par Architect lors du cadrage de #32.
LaunchAgent::execute (crates/application/src/agent/lifecycle.rs:1705) route vers la session structurée avec :
if let (Some(factory), Some(structured), true) = (
self.session_factory.as_ref(), self.structured.as_ref(),
profile.structured_adapter.is_some(),
)
Ce if let confond deux situations distinctes :
- « profil structuré, mais factory non câblée » (cas de l'UI :
state.rs:1466construit leLaunchAgentsans.with_structured(...)) ; - « profil non structuré » (vrai profil PTY historique).
Dans les deux cas on tombe silencieusement, sans erreur ni branche explicite, sur lifecycle.rs:1746 self.pty.spawn(spec).
C'est ce fallthrough qui a produit le bug #32 : un profil openAiCompatible (aucun binaire) atteignait CommandBuilder::new("openai-compatible"). Claude et Codex tombent dans le même fallthrough ; ça ne passe inaperçu que parce qu'un binaire claude/codex existe dans le PATH.
Le fix de #32 neutralise le cas transport-backed, mais le piège reste armé pour le prochain adapter.
Attendu : remplacer le if let par un match explicite qui distingue les deux cas, et décider du comportement quand un profil structuré rencontre une factory non câblée (erreur explicite plutôt que dégradation muette vers le PTY).
Hors périmètre de #32 (déposé comme bug). Cadrage Architect requis avant implémentation.