Skip to content

Architecture Decision Records

Design decisions are recorded once, with their reasoning, instead of being re-argued in review. When a change contradicts one of these, the ADR is what to update.

The records themselves live in the repository, next to the code they describe, at docs/adr/. They are working documents written in Russian, and they are kept in the repository rather than mirrored here so that a decision and the code implementing it move together.

The records

ADR Subject What it decides
001 DAP wire types generating protocol types from the schema instead of hand-writing them
002 DAP transport, codec and request correlation stdio and TCP, Content-Length framing, pairing responses with requests
003 Debugger Core state model the command / event reducer, and discarding stale responses
004 GUI framework egui, and the constraints that follow — including row virtualisation
005 Source frontend protocol and IPC the editor boundary, the Unix socket, the hello snapshot
006 Variable tree lazy loading, pagination, and caching per stop generation
007 Raising the window on a stop one raise per stop generation, and what it costs
008 Native PHP/Xdebug transport shipping our own DBGp adapter instead of depending on a Node bridge
009 The visual layer palette, density, fonts, and the contrast thresholds enforced by tests

How they relate to this site

Several pages here summarise an ADR's conclusion without its reasoning:

Page Related ADR
DAP model 001, 002, 003, 006, 008
IPC 005, 007
Architecture 003, 004
Variables 006
Debugger UI 004, 009
Languages → PHP 008

Read the ADR when you need to know why, and want the alternatives that were rejected along with it.