diff --git a/docs/turn-loop.md b/docs/turn-loop.md index 75cef004..7e704198 100644 --- a/docs/turn-loop.md +++ b/docs/turn-loop.md @@ -571,6 +571,18 @@ ttl_seconds?, to?)`, `answer(id, answer)`, `ack_until(up_to)`. `ack_until(N)` to prevent re-pop. Acked rows never redeliver. Transient pings (sentinel id 0) have nothing to ack and show no marker. +**System messages** (from sender `system`): lifecycle and Q&A events +delivered as regular inbox messages (same `recv` path; body is a JSON +object with an `event` discriminant field). The **submitting agent** +(the root agent for top-level containers; an agent with the `approvals` +tool group for its own subtree) receives lifecycle events (`spawned`, +`rebuilt`, `killed`, `destroyed`, `container_crash`, `needs_login`, +`logged_in`, `config_ready`, `needs_update`, `approval_resolved`). Any +agent receives Q&A events when it is the declared target +(`question_asked`) or the asker (`question_answered`). Full payload +shapes and routing logic in +[`docs/approvals.md` ยง Helper events](../approvals.md#helper-events-to-the-submitting-agent). + **Inbox** (`inbox` group): `get_loose_ends(agent?)`, `cancel_loose_end(kind, id)`, `remind(message, delay_seconds? | at_unix_timestamp?)`, `request_next_turn()`.