May 18, 2026

Dispatch unified, token cards clarified, ACT loop dedup

All message sources—user, subagent, scheduled, and external agent HITL—now flow through a single dispatch_message() entry point

All message sources—user, subagent, scheduled, and external agent HITL—now flow through a single dispatch_message() entry point. Two routing knobs, hidden_input and intercept, control whether the message appears in the transcript and whether it steers into the active UMP. The internal pending_steers machinery, including SubagentReturnProcessor, ScheduledPromptProcessor, and all associated threading and drain logic, is removed, for a net reduction of 331 lines.

Brain token metric card labels now reflect the active time window filter instead of a static “Total Tokens” header. Card 3 is explicitly labeled “Today (UTC)” to distinguish its midnight-based scope from rolling windows. For providers that report no cache data, such as Ollama, the cache hit card returns null or N/A instead of a misleading 0%.

A recent fix that added a 90-second timeout to the permission_request gate was reverted. The original commit prevented ACT thread hangs when a WebSocket client never responded, but the change has been rolled back.

The save_graph action could previously trigger an infinite dispatch loop because the LLM received no signal when a duplicate moment was already stored. Two layers of defense now prevent this: session-level deduplication short-circuits identical (kind, key, value) within a single PMP turn without touching the database, and the outcome of the store() call is surfaced to the LLM with {“already_stored”: True} when a cross-session duplicate is found, providing a clear convergence signal and fixing TKT-548.

  • All message sources flow through a single dispatch_message chokepoint with hidden_input and intercept knobs.

  • Removal of pending_steers infrastructure nets -331 LOC.

  • Token card labels now reflect the active window filter and card 3 labeled “Today (UTC)”.

  • Cache hit card returns null/N/A for providers without cache data such as Ollama.

  • The 90s permission_request timeout was reverted.

  • save_graph dedup prevents infinite ACT loop: session-level short-circuit and {“already_stored”: True} convergence signal.