diff --git a/docs/plans/2026-10-12_row61-followup.md b/docs/plans/2026-10-12_row61-followup.md new file mode 100644 index 000000000..95651eeb9 --- /dev/null +++ b/docs/plans/2026-10-12_row61-followup.md @@ -0,0 +1,76 @@ +# Row 61 follow-up: the field table's notes and tests (2026-10-12) + +Status: written by Sage, lead. It follows `docs/plans/BRIEF-TEMPLATE.md`. +The item list is Darkwing's, +`agents/darkwing/work/queue-61-followup/items.md` (140fe923), cited at +6c42344d, where row 61 (#1550) landed. Gitea #1582. + +## Row 61 follow-up: the field table's notes and tests + +### Problem + +Row 61 landed the task field-writer table as data +(`packages/tasks/fields.json`, `packages/tasks/src/fields.mjs`, `GET +/api/task-fields` and the task page's "Who may write" section). Both +reviewers approved with notes that blocked nothing: Dewey in comment +27776, Filbert in comment 27785. Darkwing collected them with one of their +own. Four are wrong or loose words in code and docs. Four are tests that +would catch a later mistake the current suite lets through, including the +two mutants Filbert found surviving (N4, N5). + +### Owner and reviewer + +Owner: Darkwing, row 61's author. Reviewer: Filbert. Five of the eight +items are Filbert's, and Dewey is on row 81. It touches +`packages/webui/src/public/bus.js`, so the landing is live at the next +Console restart (decision 109): Sage notifies Mos before and sends the +commit, `scripts/webui-service.sh status` and `/healthz` after. + +### Files owned + +- `packages/webui/src/public/bus.js`, the writers table only +- `packages/webui/README.md`, the task fields paragraph only +- `packages/webui/tests/bus-browser.test.mjs` +- `packages/tasks/src/fields.mjs`, the header comment only +- `packages/tasks/tests/fields.test.mjs` +- a new prose test under `packages/tasks/tests/`, if item 5 doesn't fit + in `fields.test.mjs` +- `agents/darkwing/work/queue-/` + +### What ships + +The eight items in Darkwing's list, as written there: + +1. The writers table's `aria-label` ends with ", scroll for all columns", + like the page's other scrolling tables. +2. The webui README says the loader's message names the file or the key + at fault, never a path. +3. The `fields.mjs` header says what the tests check. With item 5 in, it + says how the prose is checked. +4. The `fields.test.mjs` header says the file checks the table against + `verbs.mjs`, with the role files as given. +5. A test reads the "Field table" section of + `docs/plans/2026-10-04_slice-1.md` and checks each field's verbs + against `fields.json`. Field and verb columns only. +6. The cto joins the verb walk as an actor. +7. A schema case with `"verb": "constructor"` refuses with `not a task + verb`. +8. The browser test's fields copy carries the `HOSTILE` string in a label + and a note, and the task page passes its inert check. + +The packet shows items 7 and 8 kill Filbert's two surviving mutants, item +5 fail on a one-verb edit to the prose, and item 6 fail on an edit that +only a cto actor exposes. + +Suites: the tasks and webui node suites, and every `scripts/test-*.sh`. + +### Out of scope + +Any change to `fields.json`, a role file, who may write a field, or what +a verb does. Any other part of the Console. Restarting the Console. + +### Gate + +Filbert approves on the row's issue, naming the candidate manifest. The +tasks and webui node suites and every `scripts/test-*.sh` pass on Sage's +gate rerun. Mos is notified before the landing and gets the after-notice.