ADR Process
CleverThis uses Architectural Decision Records (ADRs) to document significant technical decisions. An ADR captures the context of a decision, the options considered, the decision made, and the rationale. Future contributors can read ADRs to understand why the codebase looks the way it does.
ADRs live in docs/adr/ and are numbered sequentially (0001-use-fastapi.md, 0002-actor-yaml-format.md, etc.).
When to write an ADR
Write an ADR when you are making a decision that:
- Affects the public API surface (inference or A2A)
- Changes a significant component boundary (e.g. moving logic between server and cleveractors-core)
- Introduces a new dependency that will be used widely
- Adopts a new architectural pattern
- Reverses a previous decision
You do not need an ADR for routine implementation choices, bug fixes, or refactors that don't change behavior.
ADR template
# ADR-NNNN: Short title
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-MMMM
## Context
What is the situation that motivates this decision? What constraints apply?
## Options considered
### Option A: ...
Pros: ...
Cons: ...
### Option B: ...
Pros: ...
Cons: ...
## Decision
Which option was chosen and why.
## Consequences
What does this decision make easier? What does it make harder?
What follow-up work is required?
Process
- Copy the template to
docs/adr/NNNN-short-title.md(next sequential number). - Set status to
Proposed. - Open a PR with the ADR and tag relevant stakeholders for review.
- Discussion happens in the PR. Once consensus is reached, the status changes to
Acceptedand the PR is merged. - Link the ADR from the relevant architecture documentation page.
Coming soon
The full list of accepted ADRs is being added to this section.