Packets
The rest of this site is about keeping the project coherent. Packets spend that coherence: one command assembles the minimal context an actor needs for a task, so the session starts informed instead of opening with an archaeology dig.
$ mix cohere.packet deals billing # context for named contexts
$ mix cohere.packet --diff # ...or for exactly the
# contexts this branch touches
What's inside
For each requested context: its map entry (the real API, schemas,
routes, workers), its intent card (the invariants the work must not
violate, the decisions already made, with what was rejected), any
agent guidance living next to the context's source (AGENTS.md /
CLAUDE.md, inlined because packets travel to places that never
auto-load them), and pointers to the source files that own it. With
--diff, cohere reads the branch's changed files and works out the
touched contexts itself: the packet for the work actually in flight.
Designs anchored to the packet's contexts come along too, by status. Drafts lead the packet — a draft is someone mid-change on this ground, the one thing map and cards cannot tell you — while accepted designs appear as one-line pointers, because their durable content already lives in the cards.
Link, don't restate
A packet carries source records and pointers; it never paraphrases code into a second truth. The map slice is the derived record, the card is the authored record, and the rest is pointers into source. Paraphrase is how context layers rot, so the format simply has no place for it.
Runtime verification, when it's there
Cohere probes the host app rather than requiring anything of it. When
Tidewave is present, the packet's verification section directs the
agent to confirm behavior against the running application instead
of inferring it from source: project_eval for code paths,
execute_sql_query for data shape. When it isn't, the packet says
so, and verification falls back to the test suite.
Where the guarantees compound
The ladder's lower levels each strengthen a guarantee. Because the map cannot lie, the API in the packet is current. Because cards are hash-bound, the invariants in the packet were re-reviewed the last time the surface moved. Because designs are dated records, the packet's history is honest. Delivered context is only as good as the coherence behind it.