Files
IdeA/.ideai/memory/ticket7-f2-delegated-limit-no-agentratelimited.md
Blomios ffc458e477 docs(memory): notes projet du sprint UI rework et des tickets #7/#14/#16/#17/#18/#25/#28
Capitalise les notes durables produites pendant le sprint UI rework et les
tickets livrés depuis. Commit séparé du code : `.ideai/memory/` est le store
durable versionné, il ne doit jamais être mélangé aux commits de feature.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 08:38:16 +02:00

1.8 KiB

name, description, metadata
name description metadata
ticket7-f2-delegated-limit-no-agentratelimited Écart backend ticket
type
project

Ticket #7, volet inter-agent. Constat F2 (frontend DevFrontend) sur feature/session-limit-interagent.

Le chemin délégué (rendez-vous headless) n'appelle jamais session_limit_service.on_rate_limited(target, …). Dans crates/application/src/orchestrator/service.rs:1876-1915, la branche TargetRateLimited publie uniquement DomainEvent::DelegationRateLimited{requester, target, resets_at_ms} puis retourne AppError::TargetRateLimited. Les deux seuls sites de on_rate_limited sont les chemins humains PTY/chat (crates/app-tauri/src/commands.rs:1409 et :1535).

Conséquence : quand la cible B est limitée via une délégation, aucun AgentRateLimited/AgentResumeScheduled n'est émis pour B ⇒ le badge mono-agent de B (piloté par limitByAgent dans useAgents) ne s'affiche pas et aucune reprise auto n'est armée pour B. Contredit le commentaire de crates/app-tauri/src/events.rs:370-372 (« the target resume flow is surfaced by the existing agent limit events »).

Why: F2 supposait « même flux AgentRateLimited ». Le rendu frontend du badge est sain (re-render + bouton Annuler OK) ; l'écart est backend.

How to apply: correction = backend (appeler on_rate_limited pour la cible dans la branche rendez-vous, avec node/conversation adéquats). Ne PAS dériver le badge de B depuis delegationRateLimited côté front : cet event ne porte ni sémantique de reprise armée ni node_id/conversation_id pour armer le réveil → inventerait un contrat. Le côté DEMANDEUR (A) est, lui, bien couvert par F1 (suspendedDelegationsByRequester). Voir session-limit-handling-design.