Decisions
Decisions record architectural choices with rationale, status, and tags. They answer "why did we do it this way?" for every agent that comes after.
Creating a decision
await oprelay.call("upsert_decision", {
project_key: "myproject",
decision_key: "auth.strategy",
agent: "claude-opus",
summary: "Use stateless OAuth for MCP connections",
rationale: "Stateful sessions expire mid-conversation. Stateless tokens eliminate this failure mode entirely.",
status: "accepted",
tags: ["auth", "mcp", "reliability"]
});
Status values
| Status | Meaning |
|---|---|
proposed | Under consideration |
accepted | Active and in effect |
rejected | Considered and declined |
superseded | Replaced by a newer decision |
Querying decisions
Decisions are included in get_context responses. Agents see active decisions relevant to their current intent without explicit queries.
Best practices
- Record the rationale, not just the choice — future agents need to know why
- Use
supersededinstead of deleting — the history matters - Tag decisions for discoverability across categories
- Include the deciding agent so the team knows who made the call