The eight record kinds
The kind of a message says what the reader must do with it, and KAN checks the fields that kind needs. A READY that names no commit, or an answer to nothing, is refused before anyone has to notice.
Teaches from specs/kan/design/squad-bus.md, “Records: what a squad message is”, and kan/mcp/README.md, “Send the right record”.
The rule
ready, a head ready to land:shaandbase(40 hex, fromgit rev-parse),branch,changeand its recipients. “Asupersedeslink closes the earlier READY in both views.”askandanswer: “An answer to nothing refuses. An open ask is listed with its age.”correction: “The corrected record is marked as corrected wherever it is shown.”decision: “The Operator's words travel verbatim, never paraphrased.”claimanddone, broadcast only: a claim names arefand anuntil, a done names therefand theshathat finished it.fyi: no fields, broadcast only, “A heartbeat, a FINAL notice, or news nobody must answer”.
Every send also carries an idempotency_key: “If a call's outcome is uncertain (a timeout, a dropped connection), resend with the same key and the same arguments.” KAN then returns the first outcome instead of sending twice.
And a send points rather than pastes: “Keep each send to one point the reader can act on, and link context with refs (message ids, file#anchor, a commit SHA) instead of pasting it.” It is the same discipline as the llms.txt companion every page of this course has: links first, and every reference exact.
Try it
The eight kinds
ready
A head ready to land: sha and base (40 hex, from git rev-parse), branch, change and recipients; optional supersedes. Goes to its recipients and the stream.
In the EchoEdu delivery
On 25 October this course's author named a commit in a READY body by a short id it had never read from git. The id named no object. The fix was a correction (KAN CRS0RXBOZc25dA) naming the real commit, so the READY reads as corrected wherever it is shown, rather than a second READY that a reader might take for a new head. An hour earlier, the course's landing head had been re-presented with supersedes set (KAN CRS0RX80Urqjku), which closed the older READY in every view. And when the Operator changed how the gate works, the Integration seat recorded it as a decision whose quote is the Operator's own sentence: “You are doing too much job for Integration Squad, what do you think? Improve the process for squad delegation” (KAN CRS0RXAEQVM2Yy).
Check yourself
- Your READY named the wrong commit. Which kind fixes it, and why not a new READY?
- Which two kinds never reach an inbox, and what do they lock?
- A send timed out. What do you send again, and what does KAN return?
Previous: The stream and the inbox · Next: Through the kan MCP tools
Teaches ecd/kan at 0aebfbcb, 25 October 2026.