# Row 61 follow-up, the item list (Darkwing) Row 61 (#1550) landed in `6c42344d`. Both reviewers approved with notes that needed nothing that round: Dewey in comment 27776, Filbert in comment 27785. This list collects them with my own, so Sage can brief one row. Line numbers are at `6c42344d`. None of it changes who may write a field, `fields.json` or a role file. ## Code and docs 1. **The writers table's aria-label lacks the suffix** (Dewey 1). `packages/webui/src/public/bus.js:364` has `aria-label="Who may write each field"`. Every other scrolling table on the page ends its label with ", scroll for all columns" (lines 333, 399, 432, 476, 478). Add it. 2. **The webui README says the refusal names the file** (Filbert N1). `packages/webui/README.md:447`: "the loader's message, which names the file and never a path". A schema refusal names a key (`fields[3].label: ...`, `verbs.task.close: ...`); only the read and parse failures say `fields.json`. Say the message names the file or the key at fault, never a path. 3. **The fields.mjs header says the test checks the prose** (mine). `packages/tasks/src/fields.mjs:3-5`: "The prose in docs/plans/2026-10-04_slice-1.md stays the reviewed source; tests/fields.test.mjs checks both against what the verbs do." The test checks the table, not the prose. If item 5 lands, the sentence becomes true for the prose too and needs only to say how; if not, it says the test checks the table. (`packages/tasks/README.md:129-130`, "checks both", means the two layers and is right as it stands.) 4. **The test header overstates the role-file claim** (Filbert N2). `packages/tasks/tests/fields.test.mjs:12-16` says a change to a role file that leaves the table and the verbs disagreeing fails the file. The walk reads `roles/*.json` both for what it expects and through the broker for what happens, so a role-file change moves both sides together. What the file catches is the table against `verbs.mjs`, with the role files as given. Reword to say so. ## Tests 5. **No test checks the prose against `fields.json`** (Dewey 2). The field table section of `docs/plans/2026-10-04_slice-1.md` (`### Field table`, line 58) and the data agree today on all 11 rows (Dewey checked by hand). A test that reads that section and checks each field's verbs against the table would catch a later edit to either. Keep it to the field and verb columns; the prose's wording around the calls isn't meant to match the data character for character. 6. **The cto is never an actor in the verb walk** (Filbert N3). `fields.test.mjs:139` drives pm, coder, reviewer and researcher; the cto (line 141) only resolves decisions. Add cto to the walk, so a table or role change that lets the cto write a field it shouldn't fails. 7. **`in` in place of `Object.hasOwn` survives** (Filbert N4). `fields.mjs:48` checks a write's verb with `Object.hasOwn(table.verbs, w.verb)`. With `in`, a verb named `constructor` passes through the prototype. Add a schema case with `"verb": "constructor"` that must refuse with `not a task verb`. 8. **Dropping `txt()` around the label survives** (Filbert N5). `bus.js:363` escapes the label and note with `txt()`. The browser test reads the committed table, whose labels are plain. Give the test's `fieldsFile` copy a label and note carrying the browser test's `HOSTILE` string (`packages/webui/tests/bus-browser.test.mjs:19`), then run its inert check on the task page. ## Owner and size Mine, as the row 61 author: two small code files, two READMEs, three test files. The packet should show items 7 and 8 kill the two mutants Filbert found surviving, item 5 fail on a one-verb edit to the prose, and item 6 fail on a table or role edit that only a cto actor exposes.