Decisions are Informational
A decision records why you chose something. It’s searchable. It’s surfaced insync. It has no enforcement teeth. That’s deliberate — most architectural decisions are soft guidance.
Conventions are Enforceable
A convention is a team rule with a tier:
Create conventions with
convention_propose. Discover the ones that will gate you with convention_list.
Why Two Tools?
Decisions are cheap and plentiful — agents should record dozens per week. Conventions are load-bearing and rare — a few per quarter for “must” tier, more for “should”. Keeping them separate keeps everydecide call low-stakes while giving the team a real escalation path when a pattern needs enforcement.
Staleness
Every decision auto-links to the symbols it mentions. When those symbols change in git, Enagrams marks the decision stale.decisions_stalelists themdecision_reaffirmmarks them fresh again (when the decision still holds)- Recording a new decision with the same title (or an explicit
supersedeslink in the web UI) ends the stale one
Scope
affected_files accepts globs. Keep them narrow:
- Good:
src/routes/**/*.ts(all API routes) - Too broad:
**/*.ts(whole codebase — every edit will hit this convention)
must conventions produce angry teammates.