Register U2A perms-and-perms-api sub-unit; plan U2B
ci / test (pull_request) Failing after 11s
ci / svc-realcombo (pull_request) Successful in 2m36s
ci / test-pg (pull_request) Failing after 13m8s

Why: U2 cursor 3/3 attempts all fail-stop per AGENT-EXECUTION.md explicit fail-stop; redesign the unit as two narrower sub-units instead of retrying the same unit.

Evidence: U2 child card .task/feature-iam-role-permission-linked-capabilities-u2-single-role-authority.md (cursor 3/3 receipts); U2A sub-unit card .task/feature-iam-role-permission-linked-capabilities-u2a-perms-and-perms-api.md.

Impact: U2 split into U2A (perms + perms_api + member_search + accountdir) and U2B (system_projects + projects_api + project_resource_authz + settings_duties + runtime + plugins/rdm); U2B child card deferred until U2A transport lands.

Refs: plan revision 3 U2; PR #628.
This commit is contained in:
2026-10-19 04:55:25 +00:00
parent 71d694500d
commit 17ee79d405
2 changed files with 88 additions and 1 deletions
@@ -0,0 +1,85 @@
# 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)= 7716b28cfff5200e7cfe9ec75aff5bcd71b234ed
- 工作区:/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.md` U2 + 父单元 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 |
| 实施与自检 | 待 worker | 待执行 | — | — | `scripts/agent-exec run` |
| 正式测试与验收 | 待 worker 自检 + host 验证 | 待执行 | — | — | 子单元验证 + 既有不退化 |
| 代码 Review | 待独立会话 | 待执行 | — | — | fresh session, `--role review` |
| 合入 | 待 host | 待执行 | — | — | RDM L1 transport apply + Dev gitlink bump |
| 合入核验与收口 | 待 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 | 待记录 | 待记录 | 待记录 | 否 | 待记录 |
## 结果与验证(完成后填写)
- 结果:
- 验证:PASS/FAIL/SKIP/NOT_RUN 逐项
- 影响与剩余项:U2B 子单元待派发
## 合入与清理
- Review 记录:NOT_RUN
- 冲突记录:NOT_RUN
- CI 记录:NOT_RUN
- 合入记录:NOT_RUN
- 清理记录:NOT_RUN
<!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. -->
@@ -60,7 +60,9 @@
| 子任务分支 | 必需 | 状态 | PR | 单元 | 范围摘要 |
|---|---|---|---|---|---|
| feature/iam-role-permission-linked-capabilities-u1-capability-association | 是 | 已完成(Backend 子分支 afb65c5 推送,Dev gitlink bump 待 host;独立 Review 待 fresh session) | —(child 不开 PR) | U1 | Backend `internal/authz/catalog`、`internal/store/role_policy`、公开扩展 DTO;RDM `internal/perms/role_provider.go` 与创建能力判定;KTD1/KTD3/KTD4;C06/C08/C09/C10 |
| feature/iam-role-permission-linked-capabilities-u2-single-role-authority | 是 | blocked(cursor 3 次均 fail-stop:failed-unknown + scope-expansion + failed-unknown;cursor 候选耗尽 3/3;后续会话拆 U2 或改派 agy) | —(child 不开 PR) | U2 | RDM `perms_api.go`、`system_projects.go`、`plugins/rdm/{system_projects,plugin}.go`;Backend `hostcaps.go`;KTD7;C22 |
| feature/iam-role-permission-linked-capabilities-u2-single-role-authority | 是 | blocked(cursor 3/3 fail-stop;拆分为 U2A 与 U2B 两个子单元重新派发) | —(child 不开 PR) | U2 | RDM `perms_api.go`、`system_projects.go`、`plugins/rdm/{system_projects,plugin}.go`;Backend `hostcaps.go`;KTD7;C22 |
| feature/iam-role-permission-linked-capabilities-u2a-perms-and-perms-api | 是 | 已登记卡片,待 agent 派发 | —(child 不开 PR) | U2A(U2 拆分) | RDM `internal/perms/*` + `internal/rdmapp/{perms_api,member_search,accountdir*,*_test}.go`;KTD7;U2A 子表 |
| feature/iam-role-permission-linked-capabilities-u2b-system-projects-and-plugins | 是 | 待登记(U2A 完成后) | —(child 不开 PR) | U2B(U2 拆分) | RDM `internal/rdmapp/{system_projects,projects_api,project_resource_authz,settings_duties,runtime}` + `plugins/rdm/{plugin,system_projects,*}`;KTD7 |
| feature/iam-role-permission-linked-capabilities-u7-canonical-two-trees | 是 | 待启动 | — | U7 | RDM `internal/projects/{projects,provisioning,projection_rename}.go`、`internal/rdmapp/{projects_api,system_projects,project_resource_authz}.go`;Backend `internal/server/{project_lifecycle,server}.go`;KTD2/KTD5/KTD6/KTD8/KTD10;C01-C05/C11-C17/C19-C21/C26-C31 |
| feature/iam-role-permission-linked-capabilities-u3-capability-exposure | 是 | 待启动 | — | U3 | Backend/RDM 解释接口、HTTP/command 错误分类、创建/添加成员/对话失败原因;KTD1/KTD2/KTD6 |
| feature/iam-role-permission-linked-capabilities-u4-frontend-auto-discover | 是 | 待启动 | — | U4 | Frontend `RolePermissionsPanel.tsx`、`AccountUsersPanel.tsx`、`adminRdmSections.tsx`、`TaskSidebar.tsx`、`App.tsx`、`store.ts`、`api.ts`、`rolePermissions.ts`、`projectmeta.ts`;KTD9;C13-C15/C19-C21/C23 |