Skip to content

Architecture Decision Records

ADRs document why a non-obvious decision was made. They are intended to be read in a few minutes, link to a specific code change or state, and are appended-to rather than rewritten.

Format follows Michael Nygard's ADR template with minor BAUER GROUP additions (one-line status tag, links to the design drafts).

Title Status
0001 USB protocol framing choice Accepted
0002 Linux driver bus pattern — auxiliary_bus Accepted
0003 Language choice — Rust in kernel and userspace Accepted
0004 Driver-priority mode via dual USB configuration Superseded by 0005
0005 Driver-optional coexistence Accepted
0006 UART via CDC-ACM only, CAN via gs_usb only Accepted
0007 FFI bindings as the interim R4L transport Accepted
0008 Multi-board variants via board-header + feature-flag refactor Accepted
0009 Pin function flexibility — PIN + COUNTER subsystems Accepted (M11 in flight)

Adding a new ADR? Copy the template from 0001-… and bump the number. Every ADR changes the repository — reference it from the code it affects so future readers can follow the link from the change site back to the rationale.