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.
7.1 KiB
feature/iam-role-permission-linked-capabilities-u2a-perms-and-perms-api 任务卡
任务主记录:<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:71d6945;parent_pr:PR #628
-
授权与交付终点:U2 在 cursor 3/3 fail-stop 后按治理拆分,本卡为 U2A 子单元;目标 RDM
internal/perms+internal/rdmapp/{perms_api,member_search,accountdir};不开 PR、不入 main;不动 U2B 路径(system_projects/projects_api/project_resource_authz/settings_duties/runtime/plugins/rdm)。 -
交付模式: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;父单元 U2 任务卡见.task/feature-iam-role-permission-linked-capabilities-u2-single-role-authority.md
目标与非目标
目标:让 internal/perms 与 internal/rdmapp/perms_api.go / member_search.go / accountdir*.go 走 Backend 的公开 provider;AccountRoleOf/RoleActionOf 返回 ErrRoleAuthorityMoved;ready/legacy 切换、首 HTTP、无预热、停用绑定、schema 错、缺提供者、actor 错均有明确判定。
范围:见单元包 allowed_paths。
非目标:
- 不动
system_projects、projects_api、project_resource_authz、settings_duties、runtime、plugins/rdm(U2B 子单元)。 - 不动 Backend / Frontend / Documents / Dev。
- 不引入新数据库表。
- 不删除
AccountRoleOf/RoleActionOf符号。 - 不削弱既有拒绝。
验收条件:U2A 子单元 dispatch success;既有 role_migration_test.go 仍观察到 ErrRoleAuthorityMoved;新表覆盖七类场景全 PASS;C22 + C08/C09 不退化。
关联方向与规划
- 主记录:方案 revision 3
/tmp/iam-role-permission-plan-20261019-sqfu_4g4/plan.mdU2 + 父单元 U2 - 前置:U1 capability-association(Backend L1 afb65c5)
- 后继:U2B sub-unit(system_projects + projects_api + project_resource_authz + settings_duties + runtime + plugins/rdm)
阶段记录
| 阶段 | 对象版本 | 状态 | 决策/执行者 | 时间 | 依据 |
|---|---|---|---|---|---|
| 需求拆解 | 本卡 | 已完成 | host | 2026-10-19 | U2 拆分决定 |
| 需求评估 | 本卡 | 已完成 | host | 2026-10-19 | U2 cursor 3/3 fail-stop 收据 |
| 需求表确认 | 本卡 | 已完成 | host | 2026-10-19 | 范围 |
| 方案设计 | 单元包 JSON | 已完成 | host | 2026-10-19 | KTD7 |
| 实施计划 | 单元包 JSON | 已完成 | host | 2026-10-19 | allowed_paths/verification/timeout_seconds |
| 实施与自检 | RDM 1d9de398 (transport 255b63b7…/537daf57a809) |
已完成 | cursor-agent-stable | 2026-10-19 | scripts/agent-exec run terminal_status=success,9 文件改动全在 allowed_paths |
| 正式测试与验收 | RDM 1d9de398 SELF |
PASS | host | 2026-10-19 | make evidence exit=0,perms + rdmapp + dhffidelity + dhfmatrix 全 ok |
| 代码 Review | 待独立会话 | 待执行 | — | — | fresh session, --role review |
| 合入 | 待 host | 待执行 | — | — | RDM L1 transport apply 已完成;待 host 后续 bump Dev modules/rdm gitlink + U2B 实施 |
| 合入核验与收口 | 待 host | 待执行 | — | — | L1 PR #628 base gate |
同步记录
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|---|---|---|---|
| 启动 | 71d6945 |
71d6945 |
2026-10-19T04:00:00Z |
证据(Evidence)
| 时间(UTC) | 命令 | 被测HEAD | exit | 来源 | sha256(16) |
|---|
Agent 实施收据
| 单元 ID | 预期范围 | 配置摘要 | 角色 | 候选顺序 | attempt | CLI/模型 | 终态 | transport | fallback | 源码外收据路径 |
|---|---|---|---|---|---|---|---|---|---|---|
| iam-link-u2a | RDM internal/perms/* + internal/rdmapp/{perms_api,member_search,accountdir*,*_test}.go + pins/{agent-system-backend,agent-system-core} |
AGENT-EXECUTION.md digest=bd3a7de57a3a9e1a4495b94c5fa5c08d71e7be8c | implementation | [cursor, antigravity, pi] | 1 | cursor-agent-stable 2026.10.14-0f9edde | completed (success) | refs/agent-exec/255b63b7fce6cfef8f38c24167bb2bd3/537daf57a809 → RDM commit 1d9de39870141cb4030f2020b8a1dc553423ce89 | 否 | /tmp/iam-link-u2a-run.json (run_id 255b63b7… attempt 1) |
结果与验证(完成后填写)
- 结果:U2A 实施成功。RDM L1 子分支
feature/iam-link-u2-single-role-authority@1d9de398已推送(Agent-System-RDM origin)。9 文件改动,938+/106-,分布:internal/perms/role_provider.go+118(provider 主体/版本校验、新增RoleAuthorityActive接口与 subject 校验)internal/perms/role_provider_test.go+153(新表 6 项 PASS)internal/perms/role_migration_test.go+59(既有ErrRoleAuthorityMoved测试保留)internal/perms/roles.go+71(AccountRoleOf/RoleActionOf一律ErrRoleAuthorityMoved)internal/rdmapp/perms_api.go+254/-(HTTP 入口切到RoleAuthority.PolicyForUser、新增 subject 校验)internal/rdmapp/perms_test.go+276(HTTP 表覆盖 ready/首请求/停用/schema 错/缺 provider/actor 错)internal/rdmapp/accountdir.go、member_search.go、member_search_test.go小幅接入
- 验证:PASS
internal/perms:ok(6 项新表 PASS:TestLegacyReadinessShimOnlyBeforeBackendReady、TestSingleRoleAuthorityDecideRoleAction、TestDisabledBindingRejectedWithReason、TestSchemaMismatchReturnsProviderVersion、TestMissingProviderReturnsUnavailable、TestWrongActorPolicyRejected)internal/rdmapp:ok(78.3s,含既有 + 新表)internal/rdmapp/dhffidelity/dhfmatrix:okgo vet ./internal/...exit=0;git diff --checkexit=0- 既有
role_migration_test.go仍观察到AccountRoleOf/RoleActionOf返回ErrRoleAuthorityMoved
- 影响与剩余项:
- U2B 子单元(
system_projects、projects_api、project_resource_authz、settings_duties、runtime、plugins/rdm/*)尚未派发,依赖 U2A 的RoleAuthority接口稳定 - 独立 Review 待 fresh session
--role review - Dev
modules/rdmgitlink bump + RDM L1→main 合入待 host 后续
- U2B 子单元(
合入与清理
- Review 记录:NOT_RUN
- 冲突记录:NOT_RUN
- CI 记录:NOT_RUN
- 合入记录:NOT_RUN
- 清理记录:NOT_RUN