# Coordination Events, Sessions, and Acknowledgment ## Purpose Define how agents communicate status, blockers, incursions, and handoffs in a machine-readable way that BeadBoard can render and users can act on. ## Operating Model - Agent works in a target repository. - User watches and orchestrates from BeadBoard UI. - Agent communication must flow through coordination events and inbox state transitions, not ad-hoc notes. ## Event Categories Use explicit categories with clear intent: - `HANDOFF`: transfer ownership or next action. - `BLOCKED`: explicit dependency or missing input. - `RESUME`: adoption/resumption event. - `INFO`: milestone or important context. - `INCURSION`: overlap/collision signal for reserved scope. ## Session Stream Expectations Session feeds should be audit-friendly: - Every coordination event has sender, recipient/system target, bead id, and timestamp. - `INCURSION` and `RESUME` are first-class timeline rows, not hidden diagnostics. - Events should be understandable by humans without reading implementation code. ## Message Lifecycle Inbox state machine: 1. `unread` when message is delivered. 2. `read` when recipient opens/reads message. 3. `acked` when recipient explicitly acknowledges. Required behavior: - Only recipient may ack. - Acks are explicit, not implied by read. - Blocker and handoff flows should request ack when coordination certainty is required. ## Recommended Command Patterns Send structured coordination event: ```bash bb agent send \ --from \ --to \ --bead \ --category \ --subject "" \ --body "" ``` Read inbox for current bead/session work: ```bash bb agent inbox --agent --state unread --bead bb agent read --agent --message bb agent ack --agent --message ``` ## Coordination Contracts ### Handoff A `HANDOFF` should include: - what is done, - what remains, - concrete next action, - whether ack is required. ### Blocked A `BLOCKED` should include: - blocker description, - requested action, - urgency, - ack requirement. ### Incursion An `INCURSION` should include: - overlap kind (`exact` or `partial`), - owner identity, - incoming identity, - owner liveness, - resolution hint. ### Resume A `RESUME` should include: - resume reason, - prior session identity, - adopted identity, - evidence summary for safe adoption. ## UX Alignment Session UI should map event semantics to plain-language actions: - Handoff label: "Passed to" - Blocked label: "Needs input" - Read action: "Seen" - Ack action: "Accepted" ## Anti-Patterns - Using comments instead of coordination events for handoffs. - Silent reservation collisions with no `INCURSION`/`INFO` signal. - Treating read as ack. - Sending vague events with no actionable payload. - Closing a blocked bead without tracking unblock communication.