This directory records the important architectural decisions taken in Nexterm.
An Architecture Decision Record (ADR) is a lightweight document that captures why a significant technical choice was made in a project. Reading the code tells you what it does, but the why fades with time, so we capture it in ADRs.
Further reading: Michael Nygard, "Documenting Architecture Decisions".
Record decisions of the kind someone is likely to ask "why did we end up like this?" about later:
- Choices of framework / library / protocol (e.g. bincode → postcard)
- Backwards-compatibility and versioning policy (e.g. PROTOCOL_VERSION, Plugin v1 → v2)
- Core data-structure design (e.g. the BSP-tree pane split)
- Security trade-offs (e.g. whether TLS fallback is allowed)
- Trade-offs between performance and simplicity (e.g. the
present_modedefault)
When in doubt, write one — even a short note tends to be more useful than no note.
| ID | Title | Status | Date |
|---|---|---|---|
| 0001 | wgpu 22 → 26 upgrade strategy | Accepted | 2026-05-12 |
| 0002 | PROTOCOL_VERSION stays a u32 with monotonic bumps |
Accepted | 2026-05-12 (retroactive) |
| 0003 | Plugin API v1 → v2 migration and removal timing | Accepted | 2026-05-12 (retroactive) |
| 0004 | Hybrid configuration with TOML + Lua | Accepted | 2026-05-12 (retroactive) |
| 0005 | BSP-tree pane layout | Accepted | 2026-05-12 (retroactive) |
| 0006 | IPC serializer: bincode 1.x → postcard | Accepted | 2026-05-12 (retroactive) |
| 0007 | Snapshot v1 removal timing (raise SNAPSHOT_VERSION_MIN to 2 at v2.0.0) |
Accepted | 2026-05-12 |
| 0008 | Plugin read API (read_pane / read_grid / read_scrollback) and its trust boundary | Accepted | 2026-07-04 |
| 0009 | Encapsulate the raw bits of Attrs / Modifiers (no PROTOCOL_VERSION bump — wire unchanged) |
Accepted | 2026-07-06 |
- Copy
template.mdto a new file with the next sequence number (e.g.0008-xxx.md). - Start with status "Proposed", review with stakeholders, then move to "Accepted".
- Add a row to the ADR index table in this
README.md. - After acceptance, do not rewrite the body. If you need to change the decision, raise a new ADR and link it back as "superseded by".
- Proposed: under discussion; not yet reflected in code.
- Accepted: decided and reflected in the codebase.
- Deprecated: no longer applies (with no successor).
- Superseded (ADR-NNNN): replaced by a later ADR.
- docs/benchmarks.md — performance-measurement reference
- CLAUDE.md — repository overview and coding conventions
- memory/ — sprint progress and audit results (Claude memory)