Skip to content

Task board prints the 20-card archive page as the Done total #2045

Closed

Description

@HugoXK

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):

  1. Probe core/src/client/kanban.js with a real BoardView render (esbuild bundle, expanded element tree), 45 settled cards + 2 active.
  2. Observed: Done column header 20; 20 cards drawn; rail row meta 20/22; no more/newest wording anywhere.

Where it comes from (all on 00a3e67a):

  • core/src/client/kanban.js:28 ARCHIVE_SHOWN = 20; the archive read asks for exactly one page: :190 actions?.tasks?.({ ...archiveQuery, archive: true, limit: ARCHIVE_SHOWN }).
  • Host core/src/host/tasks.js:1405-1413: a bounded archive returns only the newest limit finished rows and no total; the default read returns rows.filter(openTask) only.
  • kanban.js Done header prints String(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 reads 20 newest and the rail row reads 20+ 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):

  1. 45 settled + 2 active → Done header 20 newest, rail 20+ done, still 20 cards drawn.
  2. 3 settled + 2 active → 3/5 unchanged, no newest / + suffix.
  3. The archive call still passes { botId, archive: true, limit: ARCHIVE_SHOWN }.
  4. 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

  1. added 2 commits that reference this issue on Nov 1, 2026
    4145800
    5878994
  2. HugoXK commented on Nov 1, 2026

    @HugoXK
    ContributorAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions