This directory contains the long-form rationale for architectural decisions in qctx. Each ADR is immutable once accepted — superseding decisions get new ADRs that reference the prior.
| # | Title | Status |
|---|---|---|
| 0001 | Type-discriminated JSONL schema for AI agent consumption | Accepted |
| 0002 | Enterprise-first networking — no public-cloud defaults | Accepted |
| 0003 | Partial-success policy and --strict opt-in |
Accepted |
| 0004 | Secret type for token redaction |
Accepted |
| 0005 | Cobra as the CLI framework | Accepted |
| 0006 | JSONL writer uses raw byte-stitching for the type discriminator | Accepted |
| 0007 | hashicorp/go-retryablehttp for HTTP retries |
Accepted |
Design context decays fastest. A reviewer six months out cannot tell the difference between "this is intentional and load-bearing" and "this was an accident we never cleaned up". ADRs capture the why so the what stays maintainable.
- A choice will affect more than one package.
- A choice constrains future contributors (e.g., schema stability, security policy).
- A choice was non-obvious and the alternatives are worth recording.
# NNNN — Title
**Status:** Proposed | Accepted | Superseded by [NNNN](NNNN-link.md)
**Date:** YYYY-MM-DD
## Context
What problem are we solving? What constraints apply?
## Decision
The specific choice. One paragraph.
## Consequences
What follows from this — both upside and downside. Be honest about the costs.
## Alternatives considered
What else did we look at, and why did we not pick it?