---
id: "bd0f52c4-480f-4cf8-9c4c-05d05fb9e102"
number: 5
title: "Tâches de fond — dette de contrat DTO work-state : summary non affiché + owner/project inutiles + tri"
status: "closed"
priority: "low"
links: [{"target":"#1","kind":"relatesTo"}]
agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"}
createdAt: 1783115680555
updatedAt: 1783328740886
version: 4
---
Dette de contrat mineure détectée lors du fix T3 du ticket #1 (projection background_tasks dans le read-model work-state, branche feature/background-tasks-first-class). Non bloquant : Cancel/Retry fonctionnent en live.

Points à traiter :

- [ ] `summary` : le DTO backend `AgentBackgroundTaskStateDto` émet un `summary` (résumé/erreur/raison du résultat terminal) que le type frontend `BackgroundCompletion` ne porte pas → info perdue, non affichée dans le panneau. Décider si on l'affiche (utile pour comprendre un échec/annulation d'un coup d'œil) et brancher.
- [ ] `ownerAgentId`/`projectId` absents du payload par-agent : inoffensif (les tâches sont imbriquées sous leur agent, fallback ownerAgentId = agentId), mais le chemin de merge top-level dans `normalizeProjectWorkState` reste du code défensif inutilisé pour ce contrat. À nettoyer ou documenter comme volontaire.

Contexte : mémoire projet `workstate-background-tasks-projection-fix` (décision d'archi) et `tickets-t3-frontend-validation-verdict` (verdict FE + écarts). Le point tri sur finishedAtMs a déjà été corrigé (bascule sur updatedAtMs) et n'est PAS dans cette dette.