Capitalise la mémoire projet accumulée pendant les chantiers B7/B8 (tâches de fond first-class), le système de tickets V1 et le ticket #1 : design, cadrages d'archi, checkpoints d'avancement et verdicts QA/frontend. Mise à jour de l'index MEMORY.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.7 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| tickets-t3-frontend-validation-verdict | Verdict de validation frontend du fix T3 (projection backgroundTasks par agent) sur feature/background-tasks-first-class — vert, avec 3 désalignements de contrat mineurs. |
|
Validation frontend du fix T3 (ticket #1), branche feature/background-tasks-first-class, 2026-07-03.
Verdict : vert. npx vitest run = 460/460, npm run build (tsc --noEmit + vite) OK. Le front était déjà câblé pour Cancel/Retry ; contre le vrai payload backend le mapping d'états et l'activation des boutons fonctionnent.
Contrat backend réel (crates/app-tauri/src/dto.rs::AgentBackgroundTaskStateDto, camelCase) : taskId, kind, state, exitCode?, summary?, stdoutTail?, stderrTail?, createdAtMs, updatedAtMs. state ∈ queued|running|waiting|completed|failed|cancelled|expired ; kind ∈ command|headlessRendezvous|sessionResume|maintenance. Pas de status, ownerAgentId, projectId, ni finishedAtMs.
Fait : FE-1 rendu explicite queued/waiting→pending dans normalizeBackgroundStatus. FE-2 ajout d'un test sur le vrai shape dans src/features/workstate/workstate.test.tsx (le mock passe par le vrai normalizeProjectWorkState, donc pas de faux-vert possible).
Écarts de contrat à arbitrer (dette, panneau non modifié) : (1) ProjectWorkStatePanel.tsx trie sur finishedAtMs jamais émis → tri retombe sur taskId, non chronologique ; (2) summary backend non porté par BackgroundCompletion → ignoré ; (3) ownerAgentId/projectId absents du payload par-agent (inoffensif : fallback = agentId). Voir workstate-background-tasks-projection-fix et b8-in-app-trigger-run-in-background.