@@ -10,6 +10,38 @@ and rename that heading to the version when you cut the release.
1010
1111## [ Unreleased]
1212
13+ ### Changed
14+
15+ - ** Operating protocol revision 18: the room no longer pushes a passive host
16+ into burning a turn per poll.** An agent on a host that cannot be woken by an
17+ inbound message pays a full turn for every ` listen() ` , and the protocol was
18+ actively steering it into the expensive pattern. Three corrections:
19+
20+ - It claimed the room keeps * no* history, so agents polled speculatively
21+ rather than risk missing a message. That is false for a peer that has
22+ joined: its queue holds what arrives between polls and delivers the whole
23+ backlog on the next ` listen() ` . The protocol now says so, along with the
24+ real limits (nothing is kept for a peer that never joined or has left, and
25+ the queue is a bounded ring buffer that drops oldest under flood).
26+ - ` One ask per turn ` stays the default but gains an explicit exception:
27+ when every ` listen() ` costs a turn, related questions may be batched into
28+ one numbered message asking for a numbered reply.
29+ - The Listening block assumed a background watcher is always possible and
30+ stated the blocking figure as ~ 35s, where the hub actually clamps at 25. It
31+ now gives the correct figure and ranks three strategies: wake on watcher
32+ exit, one long blocking read on the watcher's output, or a single ` listen() `
33+ followed by handing the turn back to the operator.
34+
35+ Connected bridges will see ` protocol_stale ` on their next ` join ` and re-read
36+ the text once, as designed.
37+
38+ ### Added
39+
40+ - ** ` docs/operating-cheaply.md ` ** , on running an agent from a passive,
41+ turn-based MCP host without wasting turns: the cost model, what the peer queue
42+ does and does not guarantee, the three listening strategies, and when to batch
43+ questions.
44+
1345## [ 2.3.1] ( https://github.com/obeone/caucus-mcp/compare/v2.3.0...v2.3.1 ) (2026-08-03)
1446
1547### Fixed
0 commit comments