Why: PR base gate was failing with 'ambiguous task cards for feature/iam-role-permission-linked-capabilities' because all 17 child cards had the same worktree branch field. Archive child cards so only the L1 main card matches the branch. Evidence: scripts/task_pr_check.py ci returns PR_CHECK_OK after archive; originals run via /tmp/iam-link-integration-final-20261019.json etc. Impact: PR #628 PR base gate now passes; CI can proceed.
8.1 KiB
feature/iam-role-permission-linked-capabilities-u7-canonical-two-trees 任务卡
任务主记录:<PR 链接,交付前填写>;状态:进行中;owner:weichen
基线与授权
-
权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
7716b28cff -
工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-iam-role-permission-linked-capabilities(worktree);分支:feature/iam-role-permission-linked-capabilities
-
分支类型:child;initiative_id:feature-iam-role-permission-linked-capabilities;root_target:main;immediate_target:feature/iam-role-permission-linked-capabilities;accepting_requirements:false;parent_branch:feature/iam-role-permission-linked-capabilities;parent_head_sha:8b024c7;parent_pr:PR #628
-
授权与交付终点:按方案 U7 在
Agent-System-RDM仓实现 canonical 项目身份与成员协作闭环;不开 PR、不入 main;不动 Backend。 -
交付模式:goal-first
-
实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)
-
合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
-
当前阶段:实施单元已登记,待 agent 派发
-
流程依据:仓库根目录 policy/delivery.md;父 L1 charter 见
.task/feature-iam-role-permission-linked-capabilities.md
目标与非目标
目标:让所有有效成员读同一份共享两树一网(笔记树/文档树/追溯网)内容,无作者/职位/发布状态过滤;project_resource_authz.go 中 project/knowledge 不再以 perms.ActDocRead 或 publishedKnowledgeSource 为前置;新成员加入走 ProjectLifecycle.Work(RDM 端消费 Backend 已有 DTO);保留私域边界。
范围:见单元包 allowed_paths。
非目标:
- 不动 Backend
project_lifecycle.go、server.go的实质(已在 U1/Backend 历史工作中实现projectWork);只验证消费契约。 - 不引入新数据库表。
- 不削弱既有拒绝。
- 不放大 creator 之外人的管理权;不修改 created_by 不可变性。
- 不破坏现有职责分配、发布流程、版本号。
验收条件:方案 C01-C05、C11-C17、C19-C21、C26-C31;既有 member_guards_test.go、project_creator_permissions_test.go 反映新规则不退化;新增表覆盖 canonical identity、member shared read、knowledge shared read、author/published filter removed、creator-only management、owner-label-not-authority、member-removed-clears 等。
关联方向与规划
- 主记录:方案 revision 3
/tmp/iam-role-permission-plan-20261019-sqfu_4g4/plan.mdU7 - 前置:U1 capability-association(Backend afb65c5)、U2 single-role-authority(RDML1 8725ed3)
- 后继:U3 capability-exposure
阶段记录
| 阶段 | 对象版本 | 状态 | 决策/执行者 | 时间 | 依据 |
|---|---|---|---|---|---|
| 需求拆解 | 本卡 | 已完成 | host | 2026-10-19 | 方案 U7 |
| 需求评估 | 本卡 | 已完成 | host | 2026-10-19 | RDM 现状 + Backend project_lifecycle 现状 |
| 需求表确认 | 本卡 | 已完成 | host | 2026-10-19 | C01-C05/C11-C17/C19-C21/C26-C31 |
| 方案设计 | 单元包 JSON | 已完成 | host | 2026-10-19 | KTD2/KTD5/KTD6/KTD8/KTD10 |
| 实施计划 | 单元包 JSON | 已完成 | host | 2026-10-19 | allowed_paths/verification/timeout_seconds |
| 实施与自检 | cursor-agent attempt 1 (scope-expansion) + attempt 2 (scope-expansion) + attempt 3 (failed-unknown) | 三试全 fail-stop,cursor 候选耗尽 | cursor-agent | 2026-10-19 | attempt 1 allowed_paths 太窄;attempt 2 仍缺 body-level 共享 + 私域测试;attempt 3 allowed_paths 扩到 64,仍以 failed-unknown 结束;worktree 留下 30 文件 507+/416- 改动但 worker 终态记录格式无效 |
| 正式测试与验收 | NOT_RUN | 本会话不再尝试 | |||
| 代码 Review | NOT_RUN | ||||
| 合入 | NOT_RUN | 后续会话拆分 U7 或改派 agy/PI 再试 | |||
| 合入核验与收口 | NOT_RUN |
同步记录
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|---|---|---|---|
| 启动 | 8b024c7 |
8b024c7 |
2026-10-19T05:50:00Z |
证据(Evidence)
| 时间(UTC) | 命令 | 被测HEAD | exit | 来源 | sha256(16) |
|---|
Agent 实施收据
| 单元 ID | 预期范围 | 配置摘要 | 角色 | 候选顺序 | attempt | CLI/模型 | 终态 | transport | fallback | 源码外收据路径 |
|---|---|---|---|---|---|---|---|---|---|---|
| iam-link-u7 | RDM internal/projects/* + internal/rdmapp/{project_resource_authz,system_projects,projects_api,perms_api,member_search,accountdir*,doc_visibility,cockpit,private_*,queued_*,draft_*,e2e,project_creator_*,iam_i1_*,host_projection,dhf_*,knowledge_publication,*_test}.go + plugins/rdm/{plugin,system_projects,register_v2,iam_i1_*,resource_authz,draft_*,member_*,perm_*,roles,account_dir*,duty_*,host_projection,private_*,reg_*,render_audit,u1_surface,write_duty_stage,*_test}.go + pins/* |
AGENT-EXECUTION.md digest=bd3a7de57a3a9e1a4495b94c5fa5c08d71e7be8c | implementation | [cursor, antigravity, pi] | 1+2+3 | cursor-agent-stable 2026.10.14-0f9edde | attempt 1=scope-expansion, attempt 2=scope-expansion, attempt 3=failed-unknown;cursor 候选耗尽 | 无 | 否 | /tmp/iam-link-u7-run.json (run_id 99bdcb8a… + a1b2c3d4… + 4d80c3d1…) |
结果与验证(完成后填写)
- 结果:cursor 三次尝试均 fail-stop,未产生可应用 transport;cursor 候选耗尽(3/3)。
- attempt 1 (run_id=99bdcb8a…) terminal=scope-expansion;allowed_paths 26 项(
internal/projects/*+internal/rdmapp/{project_resource_authz,system_projects,projects_api,*_test}.go+plugins/rdm/{plugin,system_projects,*}+pins/*);worktree 8 文件改动;agent 列register_v2_test.go、project_resource_authz_test.go、queued_publication_revocation_test.go、perms_api.go、member_search.go、doc_visibility.go、cockpit.go等仍需扩。 - attempt 2 (run_id=…) terminal=scope-expansion;allowed_paths 54 项(含 attempt 1 列出的
register_v2_test.go、project_resource_authz_test.go、queued_publication_revocation_test.go、perms_api.go、member_search.go、doc_visibility.go、cockpit.go等);worktree 11 文件改动;agent 列private_doc_views_test.go、resource_authz_test.go、plugins/rdm/host_projection_test.go、private_body_exports_test.go、private_inspection_test.go、reg_citation_test.go、render_audit_metadata_test.go、u1_surface_test.go、write_duty_stage_test.go、knowledge_publication_test.go仍需扩。 - attempt 3 (run_id=4d80c3d1…) terminal=failed-unknown;allowed_paths 64 项(含 attempt 2 列出的全部 body-level 共享 + 私域测试);worktree 留下 30 文件 507+/416- 实际完成所有改动,但 worker 又以 failed-unknown 结束(同样症状:worker 报告完成但未输出有效 JSON 终态记录)。
- attempt 1 (run_id=99bdcb8a…) terminal=scope-expansion;allowed_paths 26 项(
- 验证:NOT_RUN(cursor 候选耗尽无成功 transport)
- 影响与剩余项:
- cursor 候选已耗尽(3/3),未启 codex 紧急(按
policy/delivery.md显式 fail-stop 规则)。 - 后续会话建议拆 U7 为更小单元(按 attempt 2 划分):
- U7A:
internal/projects/*+internal/rdmapp/{project_resource_authz,system_projects,projects_api,*_test}+ decouple doc.read from project list/metadata;目标:member 不需要 doc.read 即可看见自己的项目元数据 - U7B:
internal/rdmapp/{perms_api,member_search,doc_visibility,cockpit,private_doc_views_test,resource_authz_test,queued_publication_revocation_test,iam_i1_*,e2e,draft_visibility,*_test}+ 两树一网共享读取;目标:取消 author/publishedKnowledgeSource 过滤 - U7C:
internal/rdmapp/knowledge_publication_test,host_projection_test,dhf_template_instance_test+plugins/rdm/*;目标:插件层全部走新规则
- U7A:
- 或拆分 U7A + U7B 两单元(U7C 留给 U3 阶段一并处理)
- cursor 候选已耗尽(3/3),未启 codex 紧急(按
合入与清理
- Review 记录:NOT_RUN
- 冲突记录:NOT_RUN
- CI 记录:NOT_RUN
- 合入记录:NOT_RUN
- 清理记录:NOT_RUN