Skip to main content

What Is a Decision?

A decision is a structured record of an architectural choice: what was decided, why, and which files or symbols it affects. Decisions are how Enagrams keeps agents (and humans) aligned on the same architectural approach across sessions, branches, and weeks. Decisions are related to but distinct from conventions:
  • A decision is a one-time choice (“We picked JWT over sessions”).
  • A convention is an ongoing rule (“All API routes must return { ok, data, error }”). must-tier conventions can block writes.

Recording a Decision

Use the decide MCP tool:
The API parses the comma-separated files, resolves them against the symbol graph when possible, embeds the decision text for semantic search, and records the symbol_graph_version seen at the time. That version is what makes the decision “live” — see staleness below. Decisions can also be extracted automatically from meeting transcripts and coding traces.

Decision Types

Every decision is embedded with text-embedding-3-small (1536 dimensions) and stored in pgvector:
Asking “how do we handle auth?” returns JWT-related decisions even if the original title used different words.

Decisions in sync

The sync response always includes the most relevant recent decisions for the agent’s current files, plus any flagged stale:
Agents use this context to avoid contradicting existing decisions.

Living Decisions: Staleness

Decisions don’t just sit in a ledger. When the code they describe changes, they get flagged.
Two tools resolve staleness:
  • decision_reaffirm — “still applies, fresh again”
  • decide with supersedes: <id> — records a new decision that replaces the old one
This keeps the ledger honest. A team of five agents can’t drift apart on “what’s our auth approach?” because the moment the code moves, the decision surfaces for review.

Automatic Extraction

Decisions are also extracted automatically from:
  1. Meeting transcripts — LLM identifies decisions in conversation text.
  2. Coding tracesPOST /traces/push can trigger extraction from significant diffs.

Knowledge Graph

The dashboard visualizes decisions as a force-directed graph:
  • Nodes — decisions, files, symbols, architectural areas.
  • Edges — shared files/symbols between decisions.
Regions with many interconnected decisions signal hot zones of the codebase — and regions with many stale decisions signal architectural drift that needs attention.