From dc2186599ecb58930ddfaaff79178622dedfa9fd Mon Sep 17 00:00:00 2001 From: travisccook Date: Tue, 15 Sep 2026 11:18:08 -0400 Subject: [PATCH 01/17] docs(wcb-6.2.1): sweep spec + plan Design and implementation plan for the WCB firmware 6.2.1 sweep (droidnet-command-library 4.3.0), generated against WCB 66845b9a (SoftwareVersion 6.2.1_021242RSEP2026) and WcbCmd 0.8.0 @ 168f1e5. Spec records the id policy (D1 minor release, maestro.wcb.* as new ids; D2 4.2.0 templates and param names frozen), maestro-native left as is (D3), one version number (D4), firmware requirements in names (D5), the out-of-scope list (D6), per-board tables, ordering hazards, and how DroidNet's unpublished 2.2.0 ids map to 4.3.0. FlthyHPs: every sketch from v1.6 through the author's v2.1 dispatches 005 solid / 006 rainbow / 007 short circuit and accepts X/Y/Z; the v1.8 manual table is the pre-v1.6 order. 4.3.0 follows the firmware. BOARD_AUTHORING_GUIDE: the composer shows neither firmware nor routing.notes, so firmware requirements go in command/component names. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Cv8VK6dup1R8xDzk3MJgRZ --- docs/BOARD_AUTHORING_GUIDE.md | 8 + .../2026-09-15-wcb-firmware-6.2.1-sweep.md | 150 ++++++ ...6-09-15-wcb-firmware-6.2.1-sweep-design.md | 451 ++++++++++++++++++ 3 files changed, 609 insertions(+) create mode 100644 docs/superpowers/plans/2026-09-15-wcb-firmware-6.2.1-sweep.md create mode 100644 docs/superpowers/specs/2026-09-15-wcb-firmware-6.2.1-sweep-design.md diff --git a/docs/BOARD_AUTHORING_GUIDE.md b/docs/BOARD_AUTHORING_GUIDE.md index f67e4a6..fb68e1d 100644 --- a/docs/BOARD_AUTHORING_GUIDE.md +++ b/docs/BOARD_AUTHORING_GUIDE.md @@ -107,6 +107,14 @@ confirm-before-firing warning in the UI. Use `movement` for anything that moves hardware, `power` for power switching, `config` for settings that change state. When unsure, pick the more cautious class. +**Firmware requirements go in the name.** Neither the composer nor the hosted +reference shows a component's `firmware` or `routing.notes`, so users never see +them. When a command needs newer firmware than the rest of its board, say so in +the command `name` — e.g. `"Go Home (WCB 6.2+)"`. When the whole board needs it, +put it in the component `name` and the matching manifest entry. Keep `firmware` +and `routing.notes` accurate anyway: they are the reviewer's record of what was +verified. + **`commentLabel` — the auto-note on insert.** When a step is added, the composer attaches this string as the step's `*** …` comment (its human label in the wire string). It supports two bits of grammar, so the note can describe the actual diff --git a/docs/superpowers/plans/2026-09-15-wcb-firmware-6.2.1-sweep.md b/docs/superpowers/plans/2026-09-15-wcb-firmware-6.2.1-sweep.md new file mode 100644 index 0000000..e56fd01 --- /dev/null +++ b/docs/superpowers/plans/2026-09-15-wcb-firmware-6.2.1-sweep.md @@ -0,0 +1,150 @@ +# WCB Firmware v6.2.1 Command Sweep — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Publish droidnet-command-library **4.3.0** on top of 4.2.0: the WCB 6.2.1 command surface (Maestro comma verbs, a new DFPlayer board, HCR/MP3/WLED updates, 66 new `wcb-native` commands, range fixes) plus the FlthyHPs sequence-code fix — without breaking any value stored under a 4.2.0 id. + +**Architecture:** JSON board authoring against the schema-driven engine; no engine or schema change. Guard tests land first and pass on 4.2.0; each board commit keeps its file's existing formatting so the diff stays reviewable. + +**Tech Stack:** Node 20, ajv, jest. `npm ci`, `npm run validate`, `npm test`, `npx jest test/wcb-621.test.js`. + +**Spec:** `docs/superpowers/specs/2026-09-15-wcb-firmware-6.2.1-sweep-design.md` (decisions D1-D6, per-board tables, id map, FlthyHPs evidence). + +**Firmware source of truth:** greghulette/Wireless_Communication_Board-WCB @ `66845b9a` (`Code/WCB/`), greghulette/WcbCmd 0.8.0 @ `168f1e5` (`src/`), WCB 6.1.5 tag `v6.1.5_290119RJUN2026` for "(WCB 6.2+)" decisions, FlthyHPs v1.81 / v2.1 sketches. + +## Global Constraints + +- **Re-read every cited firmware line before encoding a template, range or enum.** If firmware and the spec disagree, follow firmware and say so in the commit message. +- **D2 freeze:** every 4.2.0 id keeps a byte-identical `template` and ordered param names. Only add ids. The one exception is A11 (three FlthyHPs templates), whitelisted in the freeze test. +- **D5 naming:** a command that needs 6.2 inside a board that also works on older firmware gets " (WCB 6.2+)" in `name`; a 6.2-only board carries it in the component and manifest `name`. +- **Hand-edit board files.** Do not regenerate a board with a JSON re-serializer: `wcb-native`, `wcb-hcr` and `wcb-wled` are compact files and a `JSON.stringify(o, null, 2)` rewrite produces thousand-line diffs. `maestro.json` is already fully expanded. +- **Categories:** every command has a `category` listed in the component `categories`. Non-standard names (`Volume`, `Variables`, `Routing`, `Advanced`) warn only. +- **Examples:** at least one per command, no `^`, and every example on a WCB board must decode to its own id (A2 test b). `wcb-verb` examples stay within 187 characters (A2 test c). +- **Order:** specific literals before catch-alls (first match wins). +- **Gate per commit:** `npm run validate` exits 0 and `npm test` is green. +- **Commits:** conventional messages; end with the `Co-Authored-By` trailer. + +--- + +### Task A0: Prepare + +- [ ] `git fetch origin && git status` — clean; `main == origin/main == 82b6a04`. +- [ ] If `origin/main` moved: rebase this plan onto it; if the new tip changed `libraryVersion`, target the next minor instead of 4.3.0. +- [ ] `git switch -c wcb-firmware-6.2.1-sweep` +- [ ] `npm ci && npm run validate && npm test` — baseline green (4.2.0: 11 suites, 324 tests). + +### Task A1: Docs — `docs(wcb-6.2.1): sweep spec + plan` + +**Files:** create the spec and this plan; modify `docs/BOARD_AUTHORING_GUIDE.md`. + +- [ ] Spec: goal, firmware refs, D1-D6, per-board tables, out-of-scope list, ordering hazards, DroidNet 2.2.0 → 4.3.0 id map, FlthyHPs decision and evidence. +- [ ] Guide: after the "`safety` matters" paragraph, add that the composer shows neither `firmware` nor `routing.notes`, so a firmware requirement goes in the command or component name, e.g. "(WCB 6.2+)". + +### Task A2: Guard tests — `test: freeze 4.2.0 ids/templates; WCB examples parse to their own command` + +Lands before any board edit and must pass on 4.2.0. + +**Files:** create `test/fixtures/catalog-4.2.0-commands.json`, `test/wcb-621.test.js`. + +- [ ] Generate the fixture once at `82b6a04` from `require('./src/load-node.js').readCatalog()`: `{ "": { "board": "", "template": "