---
schema: codex-delivery/adr@1
document_id: "ADR-<<required: zero-padded number or stable ID>>"
change_id: "CHG-<<required: YYYYMMDD-slug>>"
risk_tier: "<<required: R0 | R1 | R2 | R3>>"
document_status: draft
decision_state: UNKNOWN
owner: "<<required: decision owner>>"
evidence_as_of: "<<required: ISO 8601 or UNKNOWN>>"
commit_sha: N/A — architecture decision is implementation-independent
supersedes: N/A — first decision
refs:
  - TASK-<<required>>
---

# ADR-<<required>>: <<required: decision in one sentence>>

## Lifecycle

- ADR state: `proposed | accepted | rejected | deprecated | superseded`
- Current state: `<<required>>`
- Proposed / decided: `<<required: ISO 8601>>`
- Decision owner: `<<required>>`
- Reviewers/consulted: `<<required or N/A with reason>>`
- Superseded by: `<<required or N/A>>`

## Context

- Customer/operational outcome: `<<required>>`
- Current system and problem: `<<required>>`
- Why a durable decision is needed: `<<required>>`
- Scope: `<<required>>`
- Out of scope: `<<required>>`

## Decision drivers

Rank drivers; do not list every desirable property as equally important.

| Priority | Driver | Constraint/evidence | How measured |
|---:|---|---|---|
| 1 | <<required>> | <<required>> | <<required>> |

## Assumptions and unknowns

| ID | Statement | Evidence | If false | Owner/due | State |
|---|---|---|---|---|---|
| ADR-UNK-01 | <<required>> | <<required>> | <<required>> | <<required>> | UNKNOWN |

## Options

Include the status quo unless it is impossible.

### Option 0 — Keep current behavior

- Description: `<<required>>`
- Benefits: `<<required>>`
- Costs/risks: `<<required>>`
- Reversibility: `<<required>>`
- Evidence: `<<required>>`

### Option 1 — <<required>>

- Description: `<<required>>`
- Benefits: `<<required>>`
- Costs/risks: `<<required>>`
- Reversibility: `<<required>>`
- Migration/exit: `<<required>>`
- Evidence: `<<required>>`

### Option 2 — <<required or delete if genuinely unnecessary>>

- Description: `<<required>>`
- Benefits: `<<required>>`
- Costs/risks: `<<required>>`
- Reversibility: `<<required>>`
- Migration/exit: `<<required>>`
- Evidence: `<<required>>`

## Decision

- Chosen option: `<<required>>`
- Decision: `<<required: exact scope and behavior>>`
- Non-negotiable invariants: `<<required>>`
- Exceptions: `<<required or N/A with reason>>`
- Why this option now: `<<required>>`
- Why rejected options were not chosen: `<<required>>`

## Consequences

### Positive

- `<<required>>`

### Negative / debt accepted

- `<<required>>`

### New risks and operational load

- `<<required: monitoring, support, cost, vendor, security, privacy>>`

## Implementation and migration contract

- Compatible sequence: `<<required: e.g. expand → migrate → contract or N/A>>`
- Data/backfill/reconciliation: `<<required or N/A with reason>>`
- Public/client compatibility: `<<required or N/A with reason>>`
- Rollback or compensating action: `<<required>>`
- Last-known-good state: `<<required>>`
- Irreversible point: `<<required or N/A with reason>>`

## Verification

| Claim | Evidence ID / method | Required fingerprint | Owner | Result/maturity |
|---|---|---|---|---|
| <<required>> | EVID-<<required>> | <<required>> | <<required>> | UNKNOWN |

## Revisit

- Revisit trigger: `<<required: volume, failure, cost, contract, product, date>>`
- Review date: `<<required>>`
- Evidence needed: `<<required>>`
- Exit/removal path: `<<required>>`

## Decision events

Append; do not replace the reason for an old decision with a new one.

| Time | Event | Actor | Evidence | Result |
|---|---|---|---|---|
| <<required>> | proposed / accepted / rejected / deprecated / superseded | <<required>> | <<required>> | <<required>> |
