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