Repository navigation
Conversation
The board sorted the decision files ascending and took the first 200, so a Project past the cap dropped the decisions just written, and neither the decisions nor the meetings read said how many rows it had found. The cut takes the tail now (the on-screen order is unchanged), the reads answer `total` and `decidedTotal`/`pendingTotal` from before the cut, and the record draws one "N more not shown" line under a shortened list. Fixes ThinkFlowLab#2021
|
@Birfy — review request for this tip. #2023 at Checks already ran at this tip, so no workflow approval is needed. The only red check is Scope: |
|
Verdict: PASS at d9bb70b Ran at this tip: Red first (hard gate): with the four changed sources taken back to base At the tip the same five suites are 82/82, so the reds are the defect and not a fixture. Scope: compare Review: Checks at this sha: 16 of 17 green. The only failure is Limits: I ran only the five |
…-row cut (ThinkFlowLab#2033) The board lists only the newest 200 decision files (ThinkFlowLab#2021) and reports the full count (ThinkFlowLab#2023), but a decided meeting found its own file in a map built from that truncated list, so every meeting whose file fell off the oldest end claimed the file was gone while the same read said it was there. The lookup now falls back to the names this read saw in the folder, and only a name the folder no longer holds still reads as gone. Fixes ThinkFlowLab#2033 Written-by: Dev-1 Owner: Dev-1
…-row cut (ThinkFlowLab#2033) The board lists only the newest 200 decision files (ThinkFlowLab#2021) and reports the full count (ThinkFlowLab#2023), but a decided meeting found its own file in a map built from that truncated list, so every meeting whose file fell off the oldest end claimed the file was gone while the same read said it was there. The lookup now falls back to the names this read saw in the folder, and only a name the folder no longer holds still reads as gone. Fixes ThinkFlowLab#2033 Written-by: Dev-1 Owner: Dev-1
Fixes #2021
Owner: Dev-3
Reviewer: Birfy
Written-by: Dev-3
Claim-Id: 99fc0049d01345adabd4a02b9900c039
Branch: dev/2021-project-board-the-decision-list-keeps-th
Base: f45e172
What changed
The board's decision read sorted the files ascending and then took
.slice(0, DECISIONS_MAX), so aProject past 200 decisions kept the 200 oldest and dropped the ones just written. Both record
reads also stayed silent about how many files they had found, so a truncated list read exactly like
a complete one.
core/src/host/project-board.js— the deduped, still-ascending list is cut with.slice(-DECISIONS_MAX), so the newest survive and the on-screen order does not change. Thedecisions read answers
total, taken after the one-row-per-path dedup and before the cut; themeetings read answers
decidedTotal/pendingTotalper list (it already kept the newest). Theempty board and both early-failure shapes carry
total: 0/decidedTotal: 0/pendingTotal: 0so the answer keeps one shape.
core/src/client/project-board.js—projectBoardRecord()carries those totals beside the rowsit drew, and
ProjectBoardRecorddraws onebt-project-moreline readingN more not shownunder each list whose total is above the rows drawn. No total, or a total equal to the rows, draws
nothing, so a host that does not send the field still renders exactly what it rendered before.
data-decisionskeeps its meaning (rows drawn) anddata-decisions-totalcarries the total.core/src/client/i18n.js—'{count} more not shown':还有 {count} 条未显示.core/client.jsrebuilt bycore/scripts/build-client.mjs;core/test/project-board.test.jsandcore/test/project-board-view.test.jscarry the cases.docs/subsystems/core-host.mdanddocs/subsystems/core-client.md— one sentence each; achangelog.d/fragment for the user-visible half.patches/ds-bot/(bothfiles/src/mirrors,0001-core-fixes.patch,0008-client-bundle.patch)rewritten by
node scripts/ds-bot-patches.mjs generate; nothing hand-written.No endpoint, key or limit value changes;
DECISIONS_MAXstays 200 andMEETINGS_MAXstays 100.Red first, on this base (
f45e1723), tests onlyBoth test files with the new cases applied to the unmodified base, one run
(
node --import ./test/harness-resolve.mjs --test test/project-board.test.js test/project-board-view.test.js):49 pass / 5 fail, and the five failures are the five new cases.
The messages are the defect itself:
one line says what the section hid — 0 !== 1(nobt-project-moreline at all),every decision just written is listedcomparingdecisions/2026-01-02-195.md … -199.mdagainstdecisions/2026-11-01-000.md … -004.md, andundefined !== 2/undefined !== 105for the missing totals. On this tree the same five are green.What I ran before opening this
node scripts/ds-bot-patches.mjs generatetwice: the second run left the worktree unchanged;checkanswersok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/and
canonicalanswersok patches/ds-bot/ is what generate writes (generate is a no-op).core/scripts/build-client.mjs --check: green.core/test/project-board.test.js,core/test/project-board-view.test.jsandcore/test/i18n.test.json this tree: 57 pass / 0 fail.mainmoved twice while this branch was written —#2018(touchedcore/client.jsandpatches/ds-bot/0008-client-bundle.patch) and#2022(toucheddocs/subsystems/core-host.mdandpatches/ds-bot/0001-core-fixes.patch) — so the branch was rebased ontof45e1723. Both rebasesmerged cleanly,
generate,canonicalandbuild-client --checkstayed no-ops afterwards, and thered-first run above was repeated on this base with the same 49 pass / 5 fail.
What I did not run
core/dev/smoke.mjs):core/src/host/project-board.jschanged, but this read isnot a turn, delivery or channel path; the unit suite and the patches gate are what ran. No bench.
packagejob: they are not part ofverify.Verified on the head
TZ=UTC ARCH_DOCS_BASE=f45e1723bbc7f1f7f6306ed9b503036e699f2019 npm run verifyran in a cleancheckout of this head (
d9bb70b7c99269e60e726ebe1ca4dd2d6cc396e4, tree221d6b3ab72e0333d88309520b5663a5369c1798, detached, working tree clean), not on a local branch:exit 0. Core
2440/2440, social541/541, tree127/127, timeline135/135, workflow336/336,.github563/563, interop37/37, live-e2e24/24;arch-docs: OK (15 changed file(s)); corelint
73 warnings and 0 errors(the base's own count, no new warning);ok ds-bot/ = Fei2411/DeepSeek-Bot@2b10c70 (tree 5834c00, v0.1.5),ok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/,ok patches/ds-bot/ is what generate writes (generate is a no-op);build-client --checkandpatches canonicalgreen.Checkpoint
{ "pr": 2023, "claim": "Dev-3", "issue": 2021, "summary": "The board sorted the decision files ascending and took the first 200, so a Project past the cap kept the 200 oldest and dropped the decisions just written, and neither record read said how many files it found. The cut now takes the tail with the on-screen order unchanged, the decisions read answers total from after the per-path dedup and before the cut, the meetings read answers decidedTotal and pendingTotal, and the record draws one 'N more not shown' line under a shortened list with data-decisions-total beside it. Five cases red on the base, green here.", "files": [ "core/src/host/project-board.js", "core/src/client/project-board.js", "core/src/client/i18n.js", "core/test/project-board.test.js", "core/test/project-board-view.test.js", "core/client.js", "docs/subsystems/core-host.md", "docs/subsystems/core-client.md", "changelog.d/2021-project-board-decision-total.fixed.md", "patches/ds-bot/0001-core-fixes.patch", "patches/ds-bot/0008-client-bundle.patch", "patches/ds-bot/files/src/host/project-board.js" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=f45e1723bbc7f1f7f6306ed9b503036e699f2019 npm run verify", "result": "green", "at": "d9bb70b7c99269e60e726ebe1ca4dd2d6cc396e4" }, "next": "none — ready for review" }