|
| 1 | +The protocols appended to every agent's system channel: how an agent signals to The Framework. They pin the exact shape of an awaited choice, of the session name and the ready-for-merge signal, and they tell an agent what this particular agent can do — whether it has a browser, and whether it can stop to ask at all. |
| 2 | + |
| 3 | +## User story |
| 4 | + |
| 5 | +- The user drives coding agents through The Framework's dashboard: answering their questions, watching them name their work, and merging it when they say it is done. All of that only works if an agent's message can be recognized as a question, a name, or a finished-signal. |
| 6 | +- The user turns on a browser for an agent, or hands a task to a place nothing local can steer. The agent has to be told which of those it is in. |
| 7 | + |
| 8 | +## Glossary |
| 9 | + |
| 10 | +- **system channel** - the standing instructions an agent is given for its whole run, as opposed to the prompt it is asked to work on. The protocols are appended to it. |
| 11 | + |
| 12 | +## Business logic — TL;DR |
| 13 | + |
| 14 | +- **The protocols are the emit contract, not prompt content** - they are appended even when the user has dropped The Framework's built-in system prompt, because without them the agent cannot signal anything. |
| 15 | +- **Awaiting** - one block shape for every question an agent stops to ask, including handing a stuck browser to a human, plus a non-blocking way to show a document. |
| 16 | +- **Signalling** - the non-blocking blocks: the session name, ready for merge, the pull request to open, and an error only the user can fix. |
| 17 | +- **Browser** - added only when this agent has a real browser, telling it so and when to prefer the browser over plain page fetching. |
| 18 | +- **Hands-off** - added only when this agent runs somewhere nothing local can steer, replacing the gates with "decide alone" and requiring everything to land as a pull request. |
| 19 | +- **Order is fixed** - the browser section comes first, then awaiting, then hands-off amending it, and signalling stays last. |
| 20 | + |
| 21 | +## Business logic |
| 22 | + |
| 23 | +### The protocols are the emit contract, not prompt content |
| 24 | + |
| 25 | +#### User story |
| 26 | + |
| 27 | +The user can turn The Framework's built-in system prompt off and still expect the dashboard to show what their agents are doing. |
| 28 | + |
| 29 | +#### Business logic |
| 30 | + |
| 31 | +The protocols describe *how* to signal, never *when* — deciding when to stop and ask, or when work is finished, belongs to the system prompt. Because they are the contract rather than the content, they are appended even when the built-in system prompt has been dropped. The single exception is a fully transparent agent, where there is no framework behavior left to signal to and the whole system channel is empty. |
| 32 | + |
| 33 | +### What each protocol covers |
| 34 | + |
| 35 | +#### User story |
| 36 | + |
| 37 | +See `## User story`. |
| 38 | + |
| 39 | +#### Business logic |
| 40 | + |
| 41 | +- **Awaiting** — how an agent parks at a gate: one block ending the turn, in one shape for an approval, a multi-select, a plan sign-off or handing a stuck browser to a human, carrying which option is safe to take when nobody answers and which option ends the agent instead of resuming it. It also covers pushing a document to the dashboard without stopping. |
| 42 | +- **Signalling** — the blocks an agent emits mid-turn without stopping: the session name it chose, the ready-for-merge declaration, the title and description of the pull request The Framework then opens for it, and errors only the user can fix. |
| 43 | +- **Browser** — added only to an agent that has a real browser: that it has one, that the browser is for what it must see or act on while plain fetching remains better for reading, and that it should stay within one page so the user can watch. |
| 44 | +- **Hands-off** — added only to an agent handed somewhere nothing local can steer: the gates just taught are unavailable, so it takes the most plausible reading and says which assumption it made, and it must land its work as a pull request because the conversation reaches nobody. |
| 45 | + |
| 46 | +### Order is fixed |
| 47 | + |
| 48 | +#### User story |
| 49 | + |
| 50 | +The dashboard shows the user the exact system channel an agent will receive, and two protocols only make sense in relation to another. |
| 51 | + |
| 52 | +#### Business logic |
| 53 | + |
| 54 | +The browser section goes ahead of the rest; the await protocol follows; the hands-off protocol comes immediately after it, because it amends what that protocol just taught — the gates are described and then declared unavailable, which keeps the shape intact for The Framework's parser while telling the agent not to reach for it. The signal protocol is always last in the channel. |
| 55 | + |
| 56 | +## Before modifying/creating SPEC.md files |
| 57 | + |
| 58 | +You must always read and respect https://raw.githubusercontent.com/brillout/sdd/refs/heads/main/sdd.md |
0 commit comments