cohere/map.mdis derived. NEVER edit it by hand; runmix cohere.mapafter any structural change (new/renamed public context functions, schema fields, associations, routes, workers) and commit the diff in the same PR. The map diff is the ontology change — review it as such.- If
cohere/map.mddisagrees with the code, the file is stale — never the other way around. Regenerate; do not "fix" the map. cohere/intent/*.mdcards hold authored intent: purpose, invariants, decisions, non-goals. Edit the sections freely; NEVER edit the frontmatter (context/reviewed/surface/functions) by hand — it is machine-managed.- When
mix cohere.checkreports a drifted card: re-read the card against the current map and update any invalidated content.--acceptis human-gated, and the gate is an explanation, not a paste: tell the human which design or decision drove the drift, show the exact+fun/1 −fun/2delta, and say what your card edits now claim, so their confirmation is informed — then runmix cohere.check --accept <card>with--by <approver>. Do not accept without re-reading, and never unilaterally. - Non-trivial change? Start with
mix cohere.design <slug> --contexts <ctx>and design in the doc, against its Existing ground section. Record decisions with their rejected alternatives; list the code you commit to delivering under Promised surface as backtickedModule.fun/arityrefs. cohere/design/*.mdfrontmatter is machine-managed exceptcontexts:andsupersedes:. Never flipstatus:by hand — that ismix cohere.complete <slug>, which verifies the promised surface exists before accepting. Accepted designs are immutable history: supersede with a new design, never edit.- When a card re-review happens after a design lands, distill the design's durable decisions into the card and cite the design by slug — the card is the living constraint; the design is the record of the conversation.
- A violated invariant or superseded decision in a card is either a bug in your change or a deliberate supersession — surface it explicitly; never silently contradict a card.
- Before starting work that touches a context, run
mix cohere.packet <contexts>and read it instead of re-exploring the repo. Trust the map for shape; read code for behavior. On an existing branch,mix cohere.packet --diffassembles the packet for exactly the contexts you changed; read its "Branch scope" note for changed files that did not map to a context and verify those by hand. - Do not copy facts from the map or cards into other documents. Link to them. One truth per fact.
mix cohere.checkmust exit 0 before a PR is done. Fix or accept — never ignore. Design advisories don't fail the build; read them anyway.