docs(plans): terminal app follow-up brief after row 55
Filbert N10-N12 and Dewey's round 3 survivors: a narrow-terminal decideShown guard test, a way out in the hidden decide box, a U+18D08 width test, a cut-box Esc back test, and the README row count as an example. Owner Darkwing; reviewers Dewey and Filbert. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# Terminal app follow-up after row 55 (2026-10-11)
|
||||
|
||||
Status: written by Sage, lead. It follows `docs/plans/BRIEF-TEMPLATE.md`
|
||||
and amends no section of the design-implementation brief. One row.
|
||||
|
||||
## Terminal app follow-up: narrow-terminal guard test, hidden-box way out and width tests
|
||||
|
||||
### Problem
|
||||
|
||||
Row 55 (#1544) shipped the full-screen terminal app (`mosaic`). Dewey
|
||||
(comment 27308) and Filbert (comment 27309) approved round 3 on manifest
|
||||
59f1b9b4 and left notes, none blocking. Darkwing listed the same ones.
|
||||
|
||||
- Filbert N10, Dewey survivor `r3-shown-no-min`. Nothing tests the
|
||||
`cols >= MIN_COLS` half of `decideShown` in
|
||||
`packages/cli/src/screens.mjs`. Without it, every cli test passes, yet
|
||||
on a tall terminal under 40 columns the decide box fits at `cols - 2`
|
||||
while `draw()` shows the too-small screen, and `y` sends
|
||||
`{"choice":"yes"}`. Dewey reproduced that at 39x33, 39x40, 39x60, 36x60
|
||||
and 30x80. Filbert found the box fits at 39x29, 35x31 and 30x35. The
|
||||
existing test's sizes (30x24, 80x9) are too short for the box to fit,
|
||||
so they can't catch the mutant. The code is right today; the test is
|
||||
missing.
|
||||
- Filbert N12, Dewey's note. The hidden box says "Too small to show this
|
||||
decision." and "Any key answers No." but not what to do next. Under the
|
||||
box, the status line still says "You will see the decision again and
|
||||
confirm with y.", which is false while the box is hidden.
|
||||
- Filbert N11. U+18D08, the end of the U+17000 range, has no character in
|
||||
the width test (mutant `n9-17000-end-off` survives).
|
||||
- Dewey survivor `cut-drops-choice`. No test checks that a help or detail
|
||||
box cut to fit keeps its `Esc back` line.
|
||||
- Dewey's README note. `packages/cli/README.md` says a gated decision with
|
||||
a task needs 29 rows at 40 columns. That holds for a plain decision; a
|
||||
longer one needs 31 or 32. The rule is right; the number is an example
|
||||
and should read as one.
|
||||
|
||||
### Owner and reviewer
|
||||
|
||||
Owner: Darkwing, after their rows 58 and 61. Reviewers: Dewey and Filbert.
|
||||
|
||||
### Files owned
|
||||
|
||||
- `packages/cli/src/screens.mjs`, the hidden box's text only
|
||||
- `packages/cli/src/app.mjs`, the status line while the decide box is
|
||||
hidden only
|
||||
- `packages/cli/tests/app.test.mjs`
|
||||
- `packages/cli/README.md`
|
||||
|
||||
### What ships
|
||||
|
||||
- A test that opens a gated decision at sizes under 40 columns where the
|
||||
decide box would fit (at least 39x40 and 30x80; a sweep of 30-39
|
||||
columns at 33-60 rows is better) and asserts the frame is the
|
||||
too-small screen and `y` sends nothing. Mutant `shown-no-min-cols`
|
||||
(`r3-shown-no-min`) fails it.
|
||||
- The hidden box adds one line naming the way out, along the lines of
|
||||
"Make the terminal bigger, or use mosaic decide <id> <choice>." While
|
||||
the box is hidden, the status line doesn't promise a `y` confirmation.
|
||||
A test pins both.
|
||||
- The width test checks a character at U+18D08. Mutant
|
||||
`n9-17000-end-off` fails it.
|
||||
- A test that cuts a help or detail box to fit and asserts `Esc back`
|
||||
stays on screen. Mutant `cut-drops-choice` fails it.
|
||||
- The README states the 40-column row count as an example for a plain
|
||||
decision, not a fixed requirement.
|
||||
- The packet reruns the four named mutants against the candidate and
|
||||
lists them killed.
|
||||
|
||||
### Out of scope
|
||||
|
||||
`width()` counting per code point (a ZWJ emoji measures wider than the
|
||||
terminal shows it). That is the safe direction, as the README says, and
|
||||
`wrap` already breaks between graphemes. `throw-swallowed`: a write that
|
||||
fails exactly once is not worth a test (Filbert's call, and Dewey rated it
|
||||
harmless). The rule that `y` resolves only while `decideShown()` is true
|
||||
stays as row 55 shipped it. No behavior change beyond the hidden box's
|
||||
text and status line, unless a new test finds a defect; then the packet
|
||||
says so.
|
||||
|
||||
### Gate
|
||||
|
||||
Dewey and Filbert approve on the row's issue naming the candidate
|
||||
manifest. The cli and queue node suites and every `scripts/test-*.sh`
|
||||
green on Sage's gate rerun.
|
||||
Reference in New Issue
Block a user