diff --git a/docs/m19-m20-plan.md b/docs/m19-m20-plan.md index 01b96ef..7b9bd26 100644 --- a/docs/m19-m20-plan.md +++ b/docs/m19-m20-plan.md @@ -57,6 +57,21 @@ branch is green; keep branches; push everything. 6. **Both new processes are protocol drivers** under the manager: hello, supervision, restart with backoff — all inherited from M18.1 for free. Registration idempotence (decision 3) is what makes their restarts sound. +7. **Firmware neutrality is the contract** (2026-07-13). The generic layer is + everything at and above the device-manager protocol — descriptors, + containment, reports, matching, supervision — and none of it may become + x86-specific. Discovery is one swappable process per firmware: the acpi + service on x86; an **fdt service** on the Raspberry Pis (claims a + `devicetree-blob` node, reports children from the flattened device tree — + pure data, no bytecode, no port grant, strictly simpler than ACPI). The + manager owns the tree as *data* and touches no hardware, ever — AML runs in + a crashable, supervised discoverer precisely so a firmware-bytecode fault + can never take down the supervisor. Two consequences recorded now: + `DeviceDescriptor`'s 8-byte `hid` cannot hold an FDT `compatible` string + ("brcm,bcm2835-aux-uart") — identity widens before the fdt service exists; + and cross-firmware surfaces are named by **domain, not firmware** (M21 + defines a *power* protocol, not an "ACPI events" protocol — PSCI/mailbox + sources feed the same subscribers on ARM). ## Status