plans: row 61 follow-up brief, Darkwing's eight items (#1582)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 14:09:34 -05:00
co-authored by Claude Opus 5.5
parent 956771d492
commit 52f3be82d0
+76
View File
@@ -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-<row>/`
### 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.