组件 CI(GATE,PR head):Backend 612e04402ddaae77bcbc6489d7dc48d477670f96 vet-and-test run 4478 + governance run 4479 success;Frontend 9f7f4a164b09766c872d4cdf063aafb949a7525f test-and-build run 4474 + governance run 4475 success;RDM 2a4267337aa6dc209f0ddd0ebe5bbecbb69439b2 build-and-test run 4492 + governance run 4493 success。
Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/fix-multiuser-collab-followups.md; R0=aa9f98d2e5b8ce36724f881752b0a95a353df987.
Impact: task metadata only; the feature workspace starts at aa9f98d2e5.
Refs: .task/fix-multiuser-collab-followups.md
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=886283a4a534de8c418fa4a60d2d7a5d15c0ccfb.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: The sync merge invalidated the earlier make test record.
Evidence: make test exit 0 after sync (SELF, card evidence block); an earlier run hit a port-contention flake in test_U2_health_timeout_rolls_back that passed in isolation.
Impact: Task card only.
Refs: Dev #659
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: close the task card inside its own PR so landing it needs no post-merge backfill or separate close PR.
Evidence: .task/fix-multiuser-collab-followups.md -> .task/archive/fix-multiuser-collab-followups.md; status 已完成(合入前闭合); PR #659https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/659.
Impact: task metadata only; the card is archived within PR #659 and lands with its merge commit.
Refs: task.sh close --self
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=daf02880bb0aff82c2c127bbc9473b680f429907.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=556201541c9a98f34fdad860cfad886af069279d.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=7e19cf3e182b566bdc48a7e690e44ff11b4ab33c.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=ed3847c85ce111a74f0cb100908abfb40f62db07.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
fix/multiuser-collab-followups 任务卡
任务主记录:<PR 链接,交付前填写>;状态:进行中;owner:weichen
权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
aa9f98d2e5工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-multiuser-collab-followups(worktree);分支:fix/multiuser-collab-followups
分支类型:standalone;root_target:main;immediate_target:main;accepting_requirements:false
需求分流:verdict=NEW;selected_initiative=无;requirement_sha256=34037d0f52e27319a94965baaf2ae922e347bbf5ad152b02033ccde16c77540e;triage_receipt=/tmp/rdir/triage.json;receipt_sha256=d3628fadb7432128a57fa1c1415e9c1049a232c47198bad3d98023e5b5a60abf
授权与交付终点:用户 2026-10-20 选择"新开任务,两项都修并部署 8788、浏览器复测";终点=Backend/Frontend/RDM/Dev PR 经 Review 与当前 HEAD CI 后合入,8788 备份后部署并浏览器复测通过;路由沿用用户授权(Cursor 额度耗尽→跳过,agy 失败→PI)。未授权:改写历史、分支保护、发布版本。
交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)
实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)
合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
目标与非目标
来源:
.task/archive/fix-multiuser-project-collab.md复测后续项。rdm.role.options400(RoleList走管理员RolePolicyAdmin.ListRoles)→ Backend 新增可选只读能力(启用角色 roleId/name,任一有效账号的受信分发主体可读),RDMProjectRoleOptions改用;项目动作授权仍由 RDM 判定。enabledProfRole只读本地缓存,其他成员快照未取)→ RDM 经调用者 HostRolePolicyForOwner只读取展示摘要,不写授权缓存。ListAccounts)→ Backend 账号目录新增 rdm 专用用途project.member-roster(作用域只限 RDM 解析器返回的当前成员、不得 AllCandidates、允许空检索枚举与 status=all),RDM 解析器按成员读取授权返回当前成员,成员清单姓名改用该用途。POST /api/conversations/{id}/messages对本人会话的项目工作授权"不存在"改回 403conversation: not-project-member(不改其他入口的 404 不泄露语义);Frontend 识别后提示"无法继续发送:你已不在该项目中或项目已关闭;历史对话仍可查看",内容保留。非目标:不改管理员角色管理面、不改成员候选检索/添加语义、不改其他入口的错误码、不做 UI 重设计。
Agent 实施收据
路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。
pkg/extension、internal/app、internal/server:RoleOptionsProvider、project.member-roster、移出成员发送 403src/store.ts+ test:not-project-member 专用提示member_search.go、accountdir*.go、dirscope.go、pins backend/frontend:角色选项改走 RoleOptionsProvider、专业角色展示、成员姓名走 roster 用途modules/backend→ed956a4、modules/frontend→e4cd8f1同步记录
aa9f98d2e5aa9f98d2e5证据(Evidence)
结果与验证(完成后填写)
svc.sh dev deploy --from rdm@ed3a0f9)。make test(本分支9c28a17组合)exit 0(SELF,证据块见下方)。conversation: not-project-member,界面提示"无法发送:你已不在该项目中或项目已关闭,内容已保留",无通用"发送未成功",草稿保留。GET /api/projects/surfaces返回 404(控制台噪音,不影响功能)。合入与清理
9c28a17的实际 diff 与测试:通过,无阻塞项。make ci-wait核验当前 HEAD。| 同步(记录前对象) |
886283a4a5|61912e5504| 2026-10-20T12:57:09Z |