docs: reposition as the 86 Panel development environment

The repo's documentation framed it as a support repo for one product
(WardenOS). Since going public the real audience is anyone with a Luckfox
Pico 86 Panel: a maintained 6.18 kernel, an off-device development loop,
and a device simulator that exist nowhere else for this board. Reframe the
README and top-level docs board-first, with WardenOS documented as the
downstream consumer it is (ADR-0008).

Also an editorial pass over the whole doc set:
- every H1/H2 is now a short title, not a sentence (ADRs, qemu/, patches/,
  drivers/, architecture, NPU feasibility, config-lint, payload); workflow
  flowchart titles fixed at the source in tools/flowgen.py and regenerated
  with fresh bench numbers
- README Quick Start commands verified against the scripts; requirements
  corrected (curl, bare python, gcc >= 14) and the MC/DC gate added as a
  step (run green locally on gcc 14.2)
- dropped the 'needs python (not python3)' vendor dig: build-kernel.sh
  inherited the same requirement (filed #10 to remove it)
- glossed MC/DC and HPMCU on first use; marked the tests/uboot-ab
  reference as flare-edge; deduplicated the three-simulator list into the
  root README table
This commit is contained in:
BFE Engineering
2026-08-30 22:19:12 -06:00
parent 084df85450
commit c756622c96
27 changed files with 221 additions and 194 deletions
+7 -7
View File
@@ -27,7 +27,7 @@ OUT = os.path.join(REPO, "docs", "workflows")
WORKFLOWS = [
{
"name": "hpmcu-watchdog",
"title": "HPMCU watchdog: arm → beat → fire",
"title": "HPMCU Watchdog",
"outcome": "A hung A7/flared ends in a counted reset, not a dark panel.",
"metric": ("bench", "hpmcu_tick"),
"mermaid": """flowchart TD
@@ -42,7 +42,7 @@ WORKFLOWS = [
},
{
"name": "modbus-read-holding",
"title": "Modbus RTU: read-holding-registers round trip",
"title": "Modbus RTU Round Trip",
"outcome": "A well-formed request yields the right registers; a bad one a defined fault.",
"metric": ("bench", "modbus_read_holding"),
"mermaid": """flowchart TD
@@ -58,7 +58,7 @@ WORKFLOWS = [
},
{
"name": "cru-reset-ladder",
"title": "CRU reset ladder: cause + boot-mode survival",
"title": "CRU Reset Ladder",
"outcome": "Reset cause is attributable and the boot-mode register survives a warm reset.",
"metric": ("bench", "cru_poll"),
"mermaid": """flowchart TD
@@ -71,7 +71,7 @@ WORKFLOWS = [
},
{
"name": "rga-offload",
"title": "RGA 2D offload dispatch",
"title": "RGA Offload",
"outcome": "Blits go to the RGA when it succeeds, and fall back to the CPU when it doesn't.",
"metric": ("bench", "rga_improcess"),
"mermaid": """flowchart TD
@@ -84,7 +84,7 @@ WORKFLOWS = [
},
{
"name": "relay-drive",
"title": "Relay drive (Tier-1, 100% MC/DC)",
"title": "Relay Drive",
"outcome": "A relay is exported transparently and driven without disturbing a held contact.",
"metric": ("mcdc", "relays.c — 40/40 conditions, 100% MC/DC (CI-enforced)"),
"mermaid": """flowchart TD
@@ -102,7 +102,7 @@ WORKFLOWS = [
},
{
"name": "freshness-contract",
"title": "UI freshness contract (Tier-1, 100% MC/DC)",
"title": "UI Freshness Contract",
"outcome": "The UI never shows a stale number: it holds briefly, then marks unknown.",
"metric": ("mcdc", "freshness.c — 66/66 conditions, 100% MC/DC (CI-enforced)"),
"mermaid": """flowchart TD
@@ -148,7 +148,7 @@ def metric_line(metric, bench):
def main():
bench = load_bench(sys.argv)
os.makedirs(OUT, exist_ok=True)
index = ["# Workflow flowcharts", "",
index = ["# Workflow Flowcharts", "",
"Generated by `tools/flowgen.py` from the modelled decision paths.",
"Each is an outcome-first flowchart of a workflow the SDK tests, with its"
" benchmark or MC/DC metric.", ""]