Skip to content

Responder ladder

Steven Enamakel edited this page Oct 3, 2026 · 3 revisions

Responder ladder

responder_plan is a pure decision over a message, roster, desks, and host policy. It returns either a responder or a bounded selector request. The host runs any requested model call and schedules the resulting turn. No selector or queue is hidden inside the library.

The rungs

Rung When it applies
ExplicitMention The message directly mentions an active agent.
DeskDefault A desk resolves to its first effective active member.
AutoSelection An auto desk has at least two effective candidates.
DirectAgent The conversation identifies one agent.
Orchestrator The host fallback handles the message.

Reading order breaks ties. A first direct mention that is unusable does not make a later mention a fallback. The core responder module contains the plan and its typed outcomes.

An auto desk

For ResponderMode::Auto, the plan can carry a SelectionRequest with the message, desk id, and bounded candidates. The host may call its own selector. accept_selection accepts an answer only when it names exactly one candidate and returns that candidate's canonical id. It accepts ASCII case differences, one matching quote or backtick wrapper, and one trailing period. An absent or invalid answer leaves the deterministic first effective member as fallback.

SelectionPolicy::Disabled skips the model choice. The host can use the pure accept_evaluation path when its selector returns a typed evaluation. There is no runtime choose_responder waiting wrapper.

A reply that mentions another agent

The pure mention_dispatch fold in tinyhivemind-core can decide whether one committed reply authorizes a child turn. It respects host policy and hop bounds. The host is responsible for rechecking current authorization and target availability before it enqueues that turn, and for making the enqueue idempotent by conversation and trigger sequence.

The former runtime dispatch_mention and queue port were retired. The mention dispatch specification records their earlier contract; ADR 0027 explains the removal.

Clone this wiki locally