Repository navigation
Pin every terminal status the board reads in the kanban suite - #2090
Conversation
`finishedAt` stamps a Done card from the first terminal entry in `actors`, and `columnOf` maps all three terminal statuses to Done, but the suite only ever exercised `accepted`. Narrowing the set to `['accepted']` left all 21 cases green, so a `cancelled` or `failed` card could lose its stamp unnoticed. Four cases pin each branch: `cancelled` and `failed` are terminal and stamp from their own entry, `blocked` and `result-ready` stay In progress, and a non-terminal entry sorting earlier does not take the stamp.
|
Self-test: PASS at fa76ec7 Ran: tree rebuilt from the PR's tree ( Readings — every number in the body reproduced:
One claim is one status wider than the test. The comment at Interaction with #2087: the two touch different regions (that PR inserts at Not verified: real browser DOM/screenshot/clipboard, |
Fixes #2088
Written-by: Dev-3
Owner: Dev-3
Reviewer: Birfy
Claim-Id: 43b662f1ccbe42cdaa7cecd4225ac2f8
Branch: dev/3-kanban-terminal-statuses
Base: fca35af
Tip SHA: fa76ec7
What happens today
finishedAtincore/src/client/kanban.jsstamps a Done card from the first entry intask.actorswhose status is inTERMINAL_STATUSES(accepted,cancelled,failed), andcolumnOfincore/src/shared/task-board.jsmaps those same three statuses to Done. The suite only ever exercisedaccepted: narrowing the set to['accepted']on livemainleftcore/test/kanban.test.jsat 21 tests / 21 pass / 0 fail, three runs identical. Acancelledorfailedcard could lose its finish time — or leave the Done column — with the file green.The change
Two files, +98 / −0, the mirror byte-identical to the source test. No implementation change: the behaviour is correct today, this pins it.
core/test/kanban.test.js(+49): four characterization cases.a cancelled card is terminal: it sits in Done and says when it was cancelleda failed card is terminal: it sits in Done and says when it faileda blocked or result-ready card is not terminal and stays In progressa non-terminal actor entry does not end a Done card, even when it comes firstpatches/ds-bot/files/test/kanban.test.js(+49): whatgeneratewrites.No source, doc or changelog change: nothing user-visible changes.
Red first
On base
fca35af6, sources unchanged exceptTERMINAL_STATUSESnarrowed to['accepted']:a cancelled card is terminal…) and CI: cache npm, manual runs, Windows/flaky test fixes; auto-approve sync #23 (a failed card is terminal…), each failing'1 min' !== '2 h'(the stamp fell back toupdatedAt).Seven mutations, each applied alone on
fca35af6and reverted to 25/25 before the next:cancelledout ofTERMINAL_STATUSESa cancelled card is terminal…failedout ofTERMINAL_STATUSESa failed card is terminal…cancelledout ofCOLUMN_OFa cancelled card is drawn in Done)failedout ofCOLUMN_OFa failed card is drawn in Done)blockedadded toTERMINAL_STATUSESa non-terminal actor entry does not end…result-readymapped to Donea blocked or result-ready card is not terminal…claimedadded toTERMINAL_STATUSESa non-terminal actor entry does not end…Verified
TZ=UTC ARCH_DOCS_BASE=fca35af6f29a npm run verify→ exit 0: core 2561, social 541, tree 127, timeline 135, workflow 336,.github/scripts575, interop 37, live-e2e 24 (4336 tests, 0 fail); core lint 73 warnings / 0 errors;arch-docs: OK (2 changed file(s));ok 10 patches apply cleanly in order;ok core/ equals ds-bot/ + patches/ds-bot/;build-client.mjs --checkgreen.generateran twice and the second run leftgit status --porcelainempty.Which tree the checks ran on
One commit, single parent. Local commit
95a1c56e2b2c5d65610097b0c2efaac1d2bb019a, tree6f1ce5cb955940a7a1898680f4cda9546f59b0fc, parentfca35af6f29a10214f239b78a2087b82845ba4ce. The pushed headfa76ec79a007a8f718810afe5498d552af276813was rebuilt from that tree by the push path, so its sha differs while its tree does not;checks.atnames the pushed tip, which is what CI reads.Not run
The smoke test (nothing under
core/index.jsorcore/src/host/changed) and the packaged Desktop install path.Checkpoint
{ "pr": 2090, "claim": "Dev-3", "issue": 2088, "summary": "`finishedAt` stamps a Done card from the first terminal entry in `actors` and `columnOf` maps accepted, cancelled and failed to Done, but the suite only exercised `accepted`: narrowing the set to `['accepted']` left all 21 cases green. Four characterization cases now pin cancelled and failed as terminal (each stamping from its own entry), blocked and result-ready as not terminal (still In progress), and a non-terminal entry sorting earlier as not taking the stamp. Two of them fail when the set loses cancelled or failed, and seven single mutations each red exactly one case.", "files": [ "core/test/kanban.test.js", "patches/ds-bot/files/test/kanban.test.js" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=fca35af6f29a npm run verify (core 2561, 0 fail); node --test core/test/kanban.test.js 25/25 x3; 7 mutations each 25/24/1", "result": "green", "at": "fa76ec79a007a8f718810afe5498d552af276813" }, "next": "none — ready for review" }