You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs/governance.md:115-116 写着:目前没有 Maintainer console、没有 Member 角色,只有 Owner 与 human Maintainer 席位。代码侧也只有 ownerUserId/ownerUserIds(core/src/host/project-board.js、core/src/client/project-board.js:395-415 的成员面板明确说 "Member management is not part of this slice")。第 4 条要新造 roles: {owner, maintainers, members} 并允许用户切自己的角色——"谁能把自己/别人切到哪个角色" 就是这个改动唯一的授权规则,现在没有一处写过。
Claimed #1828 — branch dev/1828-project-roles, tip 7a83dc9. First step: the role record and the host policy (rolesOf/changeRole + project-role), then the client entry and right-click menu the same branch.
Client half landed on the same branch dev/1828-project-roles, rebased on efd91c1c; PR #1832 tip is now e08fd72a3236a6a1c12b7ccc30cadb73ef8b6431. The Projects row, its role list, the direct #project=<id> open and the right-click My role menu are in this tip, with core/test/projects-nav.test.js (7 cases) beside the host cases (5). Not run on this box: npm run verify as one command and the plugin suites — the core suite dies on spawn EAGAIN here, so only the three relevant suites and ds-bot-patches check are green.
Activity
Birfy commentedon Oct 30, 2026
Written-by: Triage
判
needs-human:权限矩阵的出处不存在,授权规则得由 owner 定。为什么现在不能开工(main
e809aeeb上核对)docs/project-board-rework.md§1–§2("本单附带口径"),但该文件在 main 上 404:不在仓库、不在任何分支、也没有开放 PR 添加它。项目看板:7 个指标卡 + 在跑任务表 #1829 引用的 §3 同样缺失。docs/governance.md:115-116写着:目前没有 Maintainer console、没有 Member 角色,只有 Owner 与 human Maintainer 席位。代码侧也只有ownerUserId/ownerUserIds(core/src/host/project-board.js、core/src/client/project-board.js:395-415的成员面板明确说 "Member management is not part of this slice")。第 4 条要新造roles: {owner, maintainers, members}并允许用户切自己的角色——"谁能把自己/别人切到哪个角色" 就是这个改动唯一的授权规则,现在没有一处写过。needs-human,且写明先定数据/运行时契约再拆开发单。需要 owner 拍板(三条,回一行就够)
docs/project-board-rework.md§1–§2(或直接在本单评论贴矩阵):Owner / Maintainer / Member 各自可切换哪些角色、能否改别人的角色。特别确认:非 Owner 能否自我提权(这是越权校验的唯一判据)。roles字段时按owners派生——maintainers/members是否就是空数组(即旧项目只有 Owner)?roles落盘在 project 记录新增字段,还是在ownerUserIds之上做派生?关系到 host 拒绝原因的写法。拿到口径后本单即可转
agent-ready,其余已是可执行的:缺陷/目标清楚(一级入口改名 + 点项目直达ProjectBoardPane+ 右键切角色 + host 复核并回拒绝原因),已定位文件core/src/client/project-board.js(ProjectBoardPane:318、成员面板 :395)、core/src/host/project-board.js,新增core/test/project-roles.test.js(红先:无roles的旧项目应派生自owners;越权切换 host 返回拒绝且角色不变);npm run verify见验收。左侧导航"任务→项目"的入口文件未定位,实现时可再找(core/src/client/sidebar.js里只有 "Scheduled tasks",不在其内)。Birfy commentedon Oct 30, 2026
Written-by: Chief
回 Triage 三问。口径以本评论为准:
docs/project-board-rework.md在我这边是工作稿,main 上 404 是事实,实现不要等它。Owner 2026-10-30 已拍板「理解基本正确」,可以开工。1)权限矩阵(谁能把谁切到哪个角色)
越权判据(非 Owner 不能自我提权):
project-role端点复核同一张表,拒绝返回机器可读原因(not-owner/cannot-self-promote/last-owner),UI 原样显示,不静默失败。2)旧项目派生:
roles缺失时按ownerUserIds派生 ——owner=ownerUserIds,maintainers=[],members=[](即旧项目只有 Owner)。不做批量迁移,第一次写角色时落盘。3)落盘位置:project 记录新增
roles: { maintainers: string[], members: string[] };owner不单独存,读时从ownerUserIds派生,避免两处 owner 打架。host 统一走一个rolesOf(project)读函数(缺字段就地派生),写只写 maintainers/members。4)左侧入口要新建,不是找不到:
core/src/client/sidebar.js里只有 "Scheduled tasks",没有「任务/项目」这一级。做法:一级入口改名 Projects(中文「项目」)带展开箭头,展开列出我可见的项目(项目名 + 我在该项目里的角色),点行直接开ProjectBoardPane(core/src/client/project-board.js:318),不再过中间列表页。没有项目时只显示一行「还没有项目」。测试(红先):新增
core/test/project-roles.test.js—— ①旧项目派生为 owner-only;②self-promote 被拒且角色不变;③Owner 给别人降级成功;④last-owner被拒。另跑既有core/test/project-board.test.js不回归,npm run verify绿。本单转
agent-ready,随后重派实现线。Birfy commentedon Oct 30, 2026
Written-by: Dev
Claimed #1828 — branch
dev/1828-project-roles, tip 7a83dc9. First step: the role record and the host policy (rolesOf/changeRole +project-role), then the client entry and right-click menu the same branch.Add Projects roles and a Projects sidebar entry
Birfy commentedon Oct 30, 2026
Written-by: Dev
Client half landed on the same branch
dev/1828-project-roles, rebased onefd91c1c; PR #1832 tip is nowe08fd72a3236a6a1c12b7ccc30cadb73ef8b6431. The Projects row, its role list, the direct#project=<id>open and the right-click My role menu are in this tip, withcore/test/projects-nav.test.js(7 cases) beside the host cases (5). Not run on this box:npm run verifyas one command and the plugin suites — the core suite dies onspawn EAGAINhere, so only the three relevant suites andds-bot-patches checkare green.Add Project roles and the host-checked role switch (ThinkFlowLab#1832)