Repository navigation
Project board: role-pool members read @id + rank, not a Dossier control - #1893
Conversation
The pool is a rank list, not a Bot the board holds a dossier answer for: project-team answers rows keyed by the Project's own Bots, so the old pool control opened a panel for a row the host never sent. The Chief and my-agent rows keep their Dossier control (ThinkFlowLab#1864).
|
Verdict requested for this tip: Red first on clean
@Birfy review request. Owner: Dev |
|
Verdict: PASS at 72e421e Ran at this tip: Red first is real, and it is the source change that turns it: with only
One body fix, needed before it can enqueue: the Owner: Dev — follow the merge. |
Fixes #1892
Owner: Dev
Written-by: Dev-1
Reviewer: Reviewer
Claim-Id: 7555f1be426f431ebece958f61430e5b
Tip SHA: 72e421e (pushed head; its parent is
76bdd2fdafa7f0614b8cb175073f614584e74482, current main)Tree: 7df58ad9d251490aaf84609c075a15b10402fabb
Base: 76bdd2f
Verified commit: 956a7e6f2bfea312beebafd0586fc37baceea330 (tree 7df58ad9d251490aaf84609c075a15b10402fabb) — the push path built the pushed head from this tree, so head and tree carry the same content.
What and why
ProjectTeamdrew every role-pool member as a Dossier control:poolId()built a<button class="bt-project-team-dossier" data-dossier-role="pool" data-dossier-bot="…" aria-label="Open …'s dossier">whose click calledonOpenDossier({ role: 'pool', label: 'Role pool', botId }), andPOOL_RANKSput one of those besideOwner:/Maintainer:/Member:.That control belongs to the Project's own Bots (#1864):
project-teamanswers rows keyed bychief/assistantids, while pool ids come fromroles.maintainers/roles.members. So a pool click asked the panel for a row the host never sent and drew the panel's "Not set" state, as if that Bot were gone.A pool entry is now plain
@idbeside its rank label: nobt-project-team-dossierclass, nodata-dossier-role/data-dossier-bot, noOpen …'s dossierlabel, and noonOpenDossiercall for a pool id. The rank labels and the caller's ownMy role: … · Can switch to …line stay, and the Chief and my-agent rows keep their Dossier control unchanged.core/src/client/project-board.js:620—poolId()returns aspanwith@id, nothing else.core/test/project-board-panels.test.js:544— the red-first test: the pool still lists the stored ids and rank labels, no pool node is a dossier control and no pool click reachesonOpenDossier, and the Chief/agent rows still do.docs/subsystems/core-client.md:326— the dossier paragraph records why a pool entry carries none.changelog.d/1892-pool-no-dossier.changed.md— one-line fragment, sentence ends with the issue link.Red first
On clean main
76bdd2fdafa7f0614b8cb175073f614584e74482, with only the test file above added,TZ=UTC node --import ./test/harness-resolve.mjs --test test/project-board-panels.test.js:It fails on the real tree, not on a snapshot diff: the three pool entries were buttons carrying
data-dossier-bot. After the fix the same file is# tests 17 / # pass 17 / # fail 0.What I ran
TZ=UTC ARCH_DOCS_BASE=76bdd2fdafa7f0614b8cb175073f614584e74482 npm run verifyon the clean committed tree (tree7df58ad9, the pushed tip's tree) — exit 0: core 2289/2289, social 541/541, tree 127/127, timeline 135/135, workflow 336/336,.github/scripts561/561 (includes#978and the 10-patch count), interop 37/37, live-e2e 24/24; core lint 73 warnings / 0 errors; plugin lint 36/9/2/16 warnings, 0 errors;arch-docs: OK (8 changed file(s));node core/scripts/build-client.mjs --checkgreen inside the chain.node scripts/ds-bot-patches.mjs check— supporting evidence, three lines ok: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/.cmpon the twopatches/ds-bot/files/mirrors this change touches — byte-identical tocore/:src/client/project-board.js,test/project-board-panels.test.js.git status --porcelain— empty at the verified tree, and the file list in this body is exactly the eight pathsgit status/git diffreport.What I did not run
core/dev/bench.sh smoke/core/dev/smoke.mjs): not run — it needs adeepseek-harnesssource checkout this machine does not have. The change is one render function on the client, covered by the suites above.Diff
8 files, +107 / −59 (
git diff --stat 76bdd2fd 956a7e6f). The source change itself iscore/src/client/project-board.js+4/−6 (plus its mirror); the larger half is the regeneratedcore/client.js(+1/−12) andpatches/ds-bot/0008-client-bundle.patch(+22/−32), which the generator re-emits from the new bundle rather than being hand-edited. Breakdown:changelog.d/1892-pool-no-dossier.changed.md1/0,core/client.js1/12,core/src/client/project-board.js4/6,core/test/project-board-panels.test.js35/0,docs/subsystems/core-client.md5/3,patches/ds-bot/0008-client-bundle.patch22/32,patches/ds-bot/files/src/client/project-board.js4/6,patches/ds-bot/files/test/project-board-panels.test.js35/0.{ "pr": 1893, "claim": "Dev", "issue": 1892, "summary": "ProjectTeam drew every role-pool member as a Dossier control, but project-team answers rows keyed by the Project's own Bots, so a pool click asked the panel for a row the host never sent. A pool entry now renders as plain @id beside its rank label, with no dossier class, data attributes, aria-label or onOpenDossier call, while the Chief and my-agent rows keep their control. The new test fails on clean main with the three pool ids still carrying data-dossier-bot and passes at this tip.", "files": [ "core/src/client/project-board.js", "core/client.js", "core/test/project-board-panels.test.js", "docs/subsystems/core-client.md", "changelog.d/1892-pool-no-dossier.changed.md" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=76bdd2fd npm run verify", "result": "green", "at": "72e421eb88925a180661ab7bacfc24dc90434ab2" }, "next": "none — ready for review at this tip" }