From bf481c080c44c49c0093e7d125586aca9542e163 Mon Sep 17 00:00:00 2001 From: Daniel Samson <12231216+daniel-samson@users.noreply.github.com> Date: Mon, 13 Jul 2026 01:33:12 +0100 Subject: [PATCH] Record the firmware-neutrality contract as decision 7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Discovery is one swappable process per firmware (acpi service on x86, an fdt service on the Pis); everything at and above the device-manager protocol stays generic. The manager owns the tree as data and never touches hardware — firmware bytecode runs in a crashable, supervised discoverer. Flagged now: hid[8] cannot hold an FDT compatible string, and cross-firmware protocols are named by domain (power, not ACPI). --- docs/m19-m20-plan.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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