Repository navigation
Read a room board's drawn done rows as a lower bound - #2058
Merged
Merged
Conversation
…#2048) A group board cuts the archive page across the room, so a Bot with 18 of the newest 20 finished cards holds a slice of its history, not its total, and the rail printed `18/18`. When the page is full, any Bot whose finished rows are drawn from it now reads `N+ done`; a page under the limit still reads its exact counts. The Bot board keeps its own rule (a Bot's own page full at ARCHIVE_SHOWN), because there the page is that Bot's whole finished list.
HugoXK
force-pushed
the
dev/1-room-rail-bound
branch
from
November 1, 2026 16:04
ecebd1f to
94bb765
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2048
Written-by: Dev-1
Owner: Dev-1
Reviewer: Birfy
Claim-Id: 1bb5154906c840448e0f4b00473c3864
Branch: dev/1-room-rail-bound
Base: 70ca435
Tip SHA: 94bb765
What happens today
A room's board (
scope.kind === 'group') cuts the archive page per room, butBoardView's rail decided the hedge from the Bot's own drawn done count against a full page (archiveFull && count.done >= ARCHIVE_SHOWN). So a Bot that drew 18 of one room page's 20 finished rows printed18/18: a total the page never established, because the room's archive holds more done cards than the 20 drawn. That is #2045's complaint, still open on the room arm.The change
core/src/client/kanban.js— the rail'scappedbranch is nowarchiveFull && (scope?.kind === 'group' ? count.done > 0 : count.done >= ARCHIVE_SHOWN). On a group board the page is cut across the room, so any done row a Bot drew is a lower bound and the rail hedges toN+ done; the Bot arm keeps its own rule, because there the page is that Bot's whole finished list. A short page still reads its exact counts, and the Done heading,DONE_MAXand the host path are untouched.core/test/kanban.test.js— two cases: the room-share lower bound (18 of 20 on a cut page →18+ done, a smaller share →2+ done, with1/1and2/2short-page assertions), and a nail on the Bot arm (20+ donefor the Bot whose own page is full,0/20for a Bot with twenty active cards), which goes red if the two arms are conflated.docs/subsystems/core-client.md— the kanban row's rail sentence;changelog.d/2048-room-rail-bound.fixed.mdcarries the user-facing note.core/client.jsand thepatches/ds-bot/mirrors are regenerated bybuild-client/generate, never hand-edited.Red first
On
70ca435ewith the basekanban.jsin place and onlycore/test/kanban.test.jschanged (cd core && node --import ./test/harness-resolve.mjs --test test/kanban.test.js): 13 tests / 12 pass / 1 fail, three runs identical.#2045: a Bot whose share of a full group page is drawn reads as a lower bound, not a total→eighteen of a cut page is at least eighteen, never a total,expected: '18+ done',actual: '18/18'.#2045: the rail hedge follows the Bot's drawn done rows, not its totalis green before and after by design: it nails the Bot arm that must not move, and it goes red ('0+ done' !== '0/20') if the group rule is applied to it.Verified
TZ=UTC ARCH_DOCS_BASE=70ca435e npm run verify→ exit 0: core 2505/2505 (the base has 2503; this branch adds the two #2048 tests), social 541, tree 127, timeline 135, workflow 336,.github563, interop 37, live-e2e 24; lint 73 / 36 / 9 / 2 / 16 warnings, 0 errors;build-client.mjs --check0; four ok lines from two commands —ds-bot-patches checkprints three (ds-bot/ = Fei2411/DeepSeek-Bot@2b10c70, 10 patches apply cleanly in order,core/equalsds-bot/+patches/ds-bot/) andds-bot-patches canonicalprints one (patches/ds-bot/is whatgeneratewrites, so a secondgenerateis a no-op);arch-docs: OK (8 changed file(s)).Which tree the checks ran on
Verify ran at local commit
562aa5118bf1fb850da1a261a9e228248e962956(tree2363ed14fb8e2a72ee8973492cb069fbcf202d19), single parent70ca435e. The pushed head is rebuilt from that same tree by the push path, so the tip's tree is identical although its sha differs.Replay onto main
mainmoved to70ca435e(#2051, the Inbox Done group) after this branch was cut, and #2051 edits the samecore/client.js,patches/ds-bot/0008-client-bundle.patchanddocs/subsystems/core-client.mdrow block. The branch is one rebased commit on70ca435e(no merge commit): both sides'core-client.mdlines are kept,patches/ds-bot/was reset to70ca435eand rebuilt withbuild-client+generate(check →ok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/; canonical → a secondgenerateis a no-op;build-client --check→ 0), and red first re-ran on the new base as 13 / 12 / 1 ×3 with the same failure. The fullverifyabove is that tree.Not run
The smoke test (nothing under
core/index.jsorcore/src/host/changed) and the packaged Desktop install path.Checkpoint
{
"pr": 2058,
"claim": "Dev-1",
"issue": 2048,
"summary": "A room's board cuts the archive page per room, but the rail took each Bot's own drawn done count as the rule, so a Bot that drew 18 of the page's 20 finished rows printed 18/18, a total the page never established. On a group board the rail now hedges to
N+ donewhenever that Bot drew any done row on a full page, while the Bot board keeps its own rule (its own page full at ARCHIVE_SHOWN), so #2047's20 newest/20+ donestay. A page under the limit still reads exact counts; DONE_MAX and the host path are unchanged. Two tests cover both arms, and the room case fails without the change.","files": [
"changelog.d/2048-room-rail-bound.fixed.md",
"core/client.js",
"core/src/client/kanban.js",
"core/test/kanban.test.js",
"docs/subsystems/core-client.md",
"patches/ds-bot/0008-client-bundle.patch",
"patches/ds-bot/files/src/client/kanban.js",
"patches/ds-bot/files/test/kanban.test.js"
],
"checks": {
"ran": "local, on the pushed tree: full TZ=UTC ARCH_DOCS_BASE=70ca435e npm run verify (exit 0), build-client --check, ds-bot-patches check + canonical, kanban 13/13 (12/13 red first)",
"result": "green",
"at": "562aa5118bf1fb850da1a261a9e228248e962956"
},
"next": "none \u2014 ready for review: CI at the rebased tip, then enqueue"
}