Files
Agent-System-Dev/.task/archive/feature-iam-role-permission-linked-capabilities-u1-capability-association.md
T
weichen 35ef55822a
ci / svc-realcombo (pull_request) Failing after 2m7s
ci / test-pg (pull_request) Failing after 3m38s
ci / test (pull_request) Failing after 6m17s
Archive completed U1-U7 + blocked U5-RDM/U5-Frontend child task cards
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.
2026-10-19 23:16:44 +00:00

12 KiB
Raw Blame History

feature/iam-role-permission-linked-capabilities-u1-capability-association 任务卡

任务主记录:<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:90317d02a746ea3cd25021561ef40e8cd7498963;parent_pr:PR #628

  • 授权与交付终点:在 feature/iam-role-permission-linked-capabilities 之上按方案 U1 修改 Backend 与 RDM 公开能力文件,实现业务能力联动(R3/R6/R16, KTD1/KTD3/KTD4),交付到 L1 initiative 分支;不开 PR、不入 main。

  • 当前实际交付:Backend L1 子分支 feature/iam-link-u1-capability-association @ afb65c5678d8e17544f045ef7143866ffdc703e3 已推送(Agent-System-Backend 远端);RDM role_provider.go 迁移按方案依赖链留待 U2。

  • 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)

  • 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)

  • 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)

  • 人工决策点:仅限目标/范围/验收变更、重大取舍、高后果操作或无法自动判定的业务验收

  • 当前阶段:需求拆解;当前增量:U1 capability-association

  • 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位);父 L1 charter 见 .task/feature-iam-role-permission-linked-capabilities.md

目标与非目标

目标:实现"创建能力开启即联动获得本人项目管理资格"的业务能力关联规则;服务端原子展开、保存校验、HTTP/command 同一服务端关联规则;显式冲突整笔拒绝;关闭创建能力不破坏已有项目。

范围:

  • Backend internal/authz/catalog/catalog.go:仅在必要时新增 project.work 等用于基础协作判定的描述项;不引入与方案 §"Capability Association Map" 不一致的描述。
  • Backend internal/store/role_policy.go:扩展 ReplaceRolePermissions、ReplaceSystemGrants、ImportRoleAuthority、ActivateRoleAuthorityImport 使其在同一事务内做"业务能力关联"校验;提供导出给 RDM/Backend Host 的联动投影。
  • Backend internal/authz/service.go:扩展 AuthorizeSystem 与必要新方法(EffectiveLinkedCapabilities 等),使 actor 在持有 project.create 时自动获得本人项目管理资格所需能力;不再要求 actor 通过 RolePermissionAllowed 逐项补齐(保留显式拒绝与平台硬禁止)。
  • Backend pkg/extension/:在 RolePolicySnapshot 等公开 DTO 暴露联动结果、关联来源与差异。
  • RDM internal/perms/role_provider.go:把 RDM 端的创建能力判定迁移到消费 Backend 的公开 RolePolicyProvider/SystemActionProvider,不再自构;保留旧动作名通过映射消费。
  • 测试:复用既有 internal/store/role_policy_test.go、internal/server/role_authorization_test.go、internal/authz/catalog/catalog_test.go,增加新表(创建能力联动:仅 create=true ⇒ 完整管理;显式冲突/平台禁止/版本冲突 ⇒ 整笔拒绝;直接系统 grant 无职位 ⇒ 同源闭环;仅关闭未来创建不影响现存)。

非目标:

  • 不触动 U2 单一角色权威的 AccountRoleOf/RoleActionOf 切换分支(U2)。
  • 不触动 RDM project_resource_authz.go 中两树一网共享语义(U7)。
  • 不引入新数据库表;只在既有 role_permissions / system_grants 上做一致性校验与联动。
  • 不引入通用权限引擎;保留既有 allowed/capAllowed 二元语义。
  • 不引入前端改动(U4)。
  • 不部署、不写生产数据。

验收条件:方案 C06/C08/C09/C10 全部 PASS;既有 C01-C05、C22、C24-C25 在 U2/U7/U5 阶段完成,本单元独立验证上述子集与既有测试不退化。

关联方向与规划

  • 适用状态:已核对
  • 主记录路径/版本:方案 revision 3 /tmp/iam-role-permission-plan-20261019-sqfu_4g4/plan.md(U1)
  • 对应里程碑:业务能力联动 + 单一角色权威(U1→U2 顺序)

需求分析

ID 描述 项目符合度及依据 优先级 验收条件 依赖 结论
U1-R1 创建能力联动管理资格(R3/KTD1) 既有 RolePermissionAllowed、AuthorizeSystem 已能逐项判定;缺联动投影与保存校验 P0 ReplaceRolePermissions 允许 project.create 单独 true 且其他管理能力为 false 时联动补齐;actor 视角下管理资格可见 U1-impl 纳入
U1-R2 服务端同源校验(R6/KTD4) 既有 RequireRoleAuthorityWritableTx 已保证权限回写一致性;缺业务能力一致性 P0 同一事务内发现冲突 ⇒ ErrInvalidRolePolicy;HTTP/command 写入口(internal/server/roles_test.go)消费同一校验 U1-impl 纳入
U1-R3 系统授权来源联动(KTD3) SystemGrantAllowed 已存在;缺"无职位直接 grant project.create"的联动 P0 直接 ReplaceSystemGrants 注入 project.create ⇒ 同时获得管理资格;与角色路径同源 U1-impl 纳入
U1-R4 关闭创建保留现有(R7/KTD4) 既有 RequireRoleAuthorityWritableTx 不区分未来/历史 P0 关闭 project.create 不删除既有 project.settings 等行;显式记录差异 U1-impl 纳入
U1-R5 解释区分关联/禁止/失效(R9) 现有 Decision.Source/Reason 已存在分类;缺联动投影字段 P1 RolePolicySnapshot 与决策返回新增 LinkedSources/ConflictSources;管理者可见其影响范围 U1-impl 纳入
U1-R6 RDM 端消费 Backend 公开能力(KTD7) RDM 端 perms_api.go 仍按旧 rdm.db 角色判定 P0 RDM 创建能力判定不再读 rdm.db 角色表;改用 Backend 公开 provider U1-impl → U2 纳入

方案与计划

  • 方案引用:方案 revision 3 §"Implementation Units > U1" + §"Capability Association Map" + KTD1/KTD3/KTD4
  • 实施计划引用:本卡 ## 需求分析(U1-R1..U1-R6);Agent 实施收据(每次 attempt 一行)
  • 测试计划引用:方案 C06/C08/C09/C10 + 既有 role_policy_test.go/role_authorization_test.go/catalog_test.go/project_creator_permissions_test.go/role_provider_test.go 不退化

阶段记录

阶段 对象版本 状态 决策/执行者 时间 依据
需求拆解 本卡 已完成 host 2026-10-19 L1 charter U1 章程 + 方案 U1
需求评估 本卡 已完成 host 2026-10-19 既有代码 F1/F4/F6 证据
需求表确认 本卡 已完成 host 2026-10-19 U1-R1..U1-R6
方案设计 本卡 + 单元包 JSON 已完成 host 2026-10-19 KTD1/KTD3/KTD4
实施计划 单元包 JSON 已完成 host 2026-10-19 allowed_paths/verification/timeout_seconds
实施与自检 Backend afb65c5 (transport dd2fa5d8…/4fd52114d316) 已完成 cursor-agent-stable 2026-10-19 scripts/agent-exec run terminal_status=success,11 文件改动全在 allowed_paths
正式测试与验收 Backend afb65c5 SELF PASS host 2026-10-19 make evidence exit=0,5 个 package all-ok;6 项能力联动测试 + 1 项 HTTP 测试 PASS
代码 Review 待独立会话 待执行 — — fresh session, --role review
合入 待 host 待执行 — — make task-sync + Backend→Dev gitlink bump
合入核验与收口 待 host 待执行 — — L1 PR #628 base gate

探索试验与迭代

增量/试验 假设 范围 判断和停止条件 授权/决策依据 结果 变更影响 需重审补测
待定义 — — — 待核对 NOT_RUN 待评估 待评估

同步记录

节点 sync_base_sha tested_head_sha checked_at
启动 90317d02a7 90317d02a7 2026-10-19T02:30:00Z

证据(Evidence)

时间(UTC) 命令 被测HEAD exit 来源 sha256(16)

Agent 实施收据

路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。

单元 ID 预期范围 配置摘要 角色 候选顺序 attempt CLI/模型 终态 transport fallback 源码外收据路径
iam-link-u1 Backend authz/catalog + role_policy + service + extension DTO + RDM role_provider AGENT-EXECUTION.md digest=6c019595 (Dev), digest=76bc59db… (Backend dispatch repo pin) implementation [cursor, antigravity, pi] 1 cursor-agent-stable 2026.10.14-0f9edde completed (success) refs/agent-exec/dd2fa5d8f3774523c4c97a4afaa4360d/4fd52114d316 → Backend commit afb65c5678d8e17544f045ef7143866ffdc703e3 否 /tmp/iam-link-u1-run.json (receipt_sha256=… see file)

交付调度

  • 调度状态:未入队;调度记录:无
  • entry_id:无;attempt_id:无;窗口执行者:无
  • 固定候选:无
  • 调度依据:policy/delivery.md#合入调度

结果与验证(完成后填写)

  • 结果:Backend 端 U1 实现成功(11 文件,767+/7-)。RDM 端 internal/perms/role_provider.go 与 system_projects.go 中的创建能力联动迁移留待 U2,按方案依赖链 U1→U2。
  • 验证:PASS
    • C06 创建者自动管理:实现于 internal/store/role_policy.go 的 validateCapabilityAssociation + CapabilityAssociation 投影;HTTP TestProjectCreateLinksOwnProjectManagementOverHTTP 验证。
    • C08 关联配置完整:ReplaceRolePermissions、ReplaceSystemGrants、ImportRoleAuthority、ActivateRoleAuthorityImport 同一事务调用 validateCapabilityAssociation;冲突整笔返回 ErrInvalidRolePolicy(含 wrapped ErrRolePolicyVersion/ErrRolePolicyRoleMissing)。
    • C09 上限与授权来源:AuthorizeSystem(internal/authz/service.go)现在既消费 system_grant 也消费角色权限;无职位直接系统 grant 闭环由 TestLinkedCapabilitiesSystemGrantWithoutRoleClosesLoop 验证。
    • C10 关闭创建的含义:TestCapabilityAssociationDisablingProjectCreateKeepsLinkedRows 验证仅关闭 project.create 不删除既有 project.settings 等行;PolicyReceipt.MigrationNote 记录差异。
    • 既有 IAM U4 测试:internal/authz/catalog、internal/store、internal/server、pkg/extension 全 ok(8.4s + 25.0s + 4ms + 4ms)。
    • go vet ./... exit=0;git diff --check exit=0。
  • 影响与剩余项:
    • RDM 侧 internal/perms/role_provider.go + plugins/rdm/{system_projects,plugin}.go 切换到消费 Backend 公开 provider 属于 U2 范围。
    • L1 端需要 host 后续 bump Dev modules/backend gitlink 到 afb65c5 并在 Dev 仓组合测试。
    • 独立 Review 待 fresh session 执行 --role review。

规划进展与下一步

  • 本次推进/剩余:实施单元未启动
  • 首选下一任务:U2 single-role-authority
  • 推荐依据:方案依赖链 U1→U2→U7→U3→U4→U5→U6
  • 前置条件/待确认:U1 终态为 completed(有效 transport 收据)且独立 Review 通过
  • 预期产物/验收条件:Backend 联动能力 + RDM 改消费 Backend 公开能力;既有测试不退化
  • 重复任务核对:未重复
  • 启动授权:已授权(用户回复"同意"对应本卡父 L1 charter)

合入与清理

  • Review 记录:NOT_RUN
  • 冲突记录:NOT_RUN
  • CI 记录:NOT_RUN
  • 合入记录:NOT_RUN
  • 清理记录:NOT_RUN