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.