Files
ZephCore/docs/adr/0003-devicetree-overlay-precedence.md
liquidraverandClaude Opus 5.5 9fc1eaf18a docs: publish the system design and architecture decision records
DESIGN.md is the reconciled high-level design after the 2026-09 restructure:
system context, roles, build-time composition, layers and dependency rules
(with the known exceptions), threading and event loop, end-to-end flows,
cross-cutting concerns and the upstream alignment policy. docs/adr/ holds the
nine decision records (ESP32 boot layout, S3 native USB, overlay precedence,
BLE privacy, Zephyr main pin, SX126x duty cycle and RX-busy gating, adaptive
contention window, storage backend, WiFi companion boards).
ARCHITECTURE.md stays the detailed component reference and links both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 22:01:28 +02:00

904 B

ADR 0003 — Devicetree overlays: board.overlay first, conf-paired overlays after it

Status: accepted (recorded 2026-09-25)

Context

board.overlay goes into EXTRA_DTC_OVERLAY_FILE first, so overlays paired with later confs (repeater/pm_esp32/esp32s3_usb/no_display) override it — matching the conf chain's own "user extras last" rule. This was the opposite order until 2026-08-28, which silently broke esp32s3_usb.overlay's console reroute on the boards that choose a console in board.overlay, and pm_esp32.overlay's SX1262 NSS sleep-hold on heltec_wireless_tracker. partitions.overlay stays last.

Decision

Overlay order mirrors the conf order: board first, conf-paired overlays next, partitions.overlay last.

Consequences

A conf-paired overlay can always override a board default; a board that must win has to change its board.conf pairing, not the order.