Repository navigation
Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: a5ffea02fd464c5d9f892275304fa8f2
Branch: dev/2-board-archive-counts
Base: dfc4af7
At: 2026-11-01T13:45:56Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
The task board fills its Done column from a bounded archive page (ARCHIVE_SHOWN = 20) but keeps printing that page's length as if it were the total: with 45 finished cards the Done header reads 20, and the Bot rail row reads 20/22 where the truth is 45/47. The reader cannot tell a column of twenty from a Bot that finished twenty; the only hint anything is missing is that the numbers do not add up.
Reproduction (live main 00a3e67a):
- Probe
core/src/client/kanban.jswith a realBoardViewrender (esbuild bundle, expanded element tree), 45 settled cards + 2 active. - Observed:
Donecolumn header20; 20 cards drawn; rail row meta20/22; nomore/newestwording anywhere.
Where it comes from (all on 00a3e67a):
core/src/client/kanban.js:28ARCHIVE_SHOWN = 20; the archive read asks for exactly one page::190actions?.tasks?.({ ...archiveQuery, archive: true, limit: ARCHIVE_SHOWN }).- Host
core/src/host/tasks.js:1405-1413: a bounded archive returns only the newestlimitfinished rows and no total; the default read returnsrows.filter(openTask)only. kanban.jsDone header printsString(tasks.length)(:299), and the rail loop counts[...own, ...archive](:382-389) — so after Group task board keeps hundreds of accepted cards; snapshot stays noisy after work is done #1252 both numbers are page-sized, not total-sized.
Expected: the number may stay a page, but it must not pose as the total. Minimal shape (client-only):
- When the archive page is full (
archive.length === ARCHIVE_SHOWN), the Done header reads20 newestand the rail row reads20+ done. - When it is not full, keep today's
{done}/{total}verbatim (there it is the truth). - Done still draws 20 cards; the archive call keeps
{ botId, archive: true, limit: ARCHIVE_SHOWN }.
Acceptance (red first, core/test/kanban.test.js):
- 45 settled + 2 active → Done header
20 newest, rail20+ done, still 20 cards drawn. - 3 settled + 2 active →
3/5unchanged, nonewest/+suffix. - The archive call still passes
{ botId, archive: true, limit: ARCHIVE_SHOWN }. - Same assertions for the group scope.
Scope: core/src/client/kanban.js, core/src/client/i18n.js (2 entries), core/client.js + patches/ds-bot/0008-client-bundle.patch (rebuild), core/test/kanban.test.js, docs/subsystems/core-client.md:48 (one sentence on what the numbers mean).
Out of scope: changing the host archive read to return { tasks, total } (a shape change with its own PASS); a paging UI in the board.
Dedupe (live main 00a3e67a): ARCHIVE_SHOWN → only #1289 (the PR that introduced it, closed); board rail done total archive → #1289; kanban done column count archive → 4 hits, all closed/#1289; task board 20 newest → no matching report. No open issue covers this.
Branch: dev/2-board-archive-counts
Activity
Task board: a full archive page is counted for what it is
Task board: a full archive page is counted for what it is
HugoXK commentedon Nov 1, 2026
Release
Written-by: FlyBot Lead
Released: a5ffea02fd464c5d9f892275304fa8f2
Reason: merged as 8121c6e (squash of #2047, tree d66f183d matches the reviewed tip)
At: 2026-11-01T15:34:24Z
A room board reached from a Bot board counts its active cards twice i…
Test that the board rail counts the list the board draws (ThinkFlowLa…