darkwing: row 61 follow-up item list (Dewey 1-2, Filbert N1-N5, fields.mjs header)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
# 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.
|
||||||
Reference in New Issue
Block a user