Files
IdeA/docs/adr/LS5-handoff-summary-bound-and-llm-seam.md
Blomios f9231422fe docs(adr): contrat futur du seam LLM de résumé de handoff (LS5)
ADR brève : borne summary_md et point d'extension LLM (non activé).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 12:29:44 +02:00

2.1 KiB

ADR LS5 — Borne du résumé de handoff & seam résumeur LLM

Statut : accepté (lot LS5, branche feature/agent-live-state).

Contexte

Le résumé de reprise (Handoff::summary_md) est injecté dans le contexte d'un agent à chaque lancement et persisté à chaque checkpoint. Sans borne, un gros tour Response produit une ligne géante qui gonfle le résumé → coût sur le chemin chaud (append/checkpoint + contexte injecté). Priorité produit : gagner en perf sans mettre de LLM sur ce chemin chaud.

Décision (implémentée)

  1. Borne par ligne (infra) : render_turn tronque le texte aplati de chaque tour à TURN_LINE_MAX_CHARS = 240 (élision ), préfixe - **role:** conservé. Correctif central du trou de perf.
  2. Borne universelle (domaine) : bound_handoff_summary(h, HANDOFF_SUMMARY_MAX_CHARS=4096), pure, idempotente, sans rejet — garde l'objectif + le suffixe de tours le plus récent, droppe les plus anciens, hard-truncate la fin d'une ligne trop longue sans casser son préfixe. up_to/objective jamais modifiés.
  3. Application : la borne universelle est posée entre fold et save (écriture) et avant compose_convention_file (injection, protège les handoff.md legacy). Indépendante du résumeur.

Seam LLM — futur, NON implémenté

Le port HandoffSummarizer::fold reste inchangé (async, sans Result, best-effort) ; le défaut câblé reste HeuristicHandoffSummarizer. Un futur LlmHandoffSummarizer devra respecter le contrat suivant :

  • Hors chemin chaud, déclenchement froid : jamais par tour. Calcul à la reprise / à la rotation / sur débounce (coalescer plusieurs tours rapides), pas à chaque record.
  • Timeout + fallback heuristique : un appel réseau lent/échoué retombe sur le résumé heuristique (ou prev), jamais d'erreur propagée, jamais de blocage du checkpoint.
  • Sélection par flag, défaut heuristique (zéro dépendance réseau par défaut).
  • La borne universelle s'applique de toute façon à sa sortie (garantie indépendante du résumeur).