execution-log.md 4.9 KB

执行日志 — Forge AI 中枢高风险动作人工审批

change: forge-ai-hub-high-risk-approval status: done created: 2026-07-12

1. 启动记录

时间 阶段 事件 结论
2026-07-12 Archive 归档 forge-ai-hub-flow-actions 二次 Review PASS;Flow Actions 19/19,MCP 16/16,聚合 43/43
2026-07-12 Direction 用户要求继续完成下一阶段 进入阶段 2.3 HIGH 人工审批
2026-07-12 Proposal 读取路线图 R3 状态机和阶段 2 闸门 采用加密快照 + 专用 Flowable + 回调重新授权

2. 已冻结边界

  • 只处理显式 HIGH 的已发布 BUSINESS_ACTION;
  • Agent 只提交审批,不直接执行;
  • 外部 Secret 版本化 KEK,不复用前端报文密钥;
  • 专用 Flowable 和现有待办,不建设第二套设计器;
  • 固定 approval.get,不动态发布审批实例 Tool;
  • 不含 DELETE、消息、Nacos、Agent Runtime 或真实模型调用。

3. Proposal 结论

状态为 proposed。用户已授权 Proposal 后自动 Apply;下一步按 tasks 增量 TDD 实施。

4. Apply 记录

时间 范围 结论
2026-07-12 模块/装配 新增 high-risk-approval,接入 plugin parent、BOM、Admin;44 模块聚合 package PASS
2026-07-12 HIGH 发布/路由 专用发布入口、真实 riskLevel、policy、HIGH adapter 完成;MEDIUM 不回归
2026-07-12 信封加密 AES-256-GCM + 每记录 DEK + AESWrap KEK + AAD + key rotation 完成
2026-07-12 审批状态机 RESERVED/PENDING_APPROVAL/EXECUTING/终态、唯一幂等域和固定 businessKey 完成
2026-07-12 Flowable 默认单节点审批、非空 BPMN 保留、USER A delegated start、只读表单和幂等回调完成
2026-07-12 查询工具 固定 capability.approval.get 完成,只按完整原始身份元组查询安全摘要

5. 首轮 Review 与 Fix

首轮发现 7 项问题并已写入 fix-plan.md:回调未装配、跨 USER 幂等复用、回调重新授权缺口、HIGH 提交前动作复核缺口、模型查询失败误判、默认流程/表单/查询工具缺失、送审审计结果码错误。

Fix 后新增:

  • 回调重查 policy、固定 flowModelKey、客户端过期/credentialVersion、服务账号、USER A tenant/org、grant、能力版本、业务状态;
  • 幂等复用精确比较 actor/serviceUser/org/credentialVersion/capabilityVersion,跨用户碰撞返回 IDEMPOTENCY_CONFLICT
  • HIGH 在 elicitation 前重新解析发布动作、递归步骤和可写字段;
  • 模型 lookup 失败关闭,只有成功返回空模型时创建默认 BPMN;已有非空 BPMN 永不覆盖;
  • capability.invoke 可选输出 approvalRequestId,Capability 审计最终 resultCode 为 PENDING_APPROVAL
  • 只读审批表单对 token/header/password/secret/API key 类字段二次遮蔽。

6. 最终验证证据

命令/范围 结果
high-risk 模块 mvn -Penable-tests test 24/24 PASS
secure-actions 模块 mvn -Penable-tests test 32/32 PASS
flow-actions 模块 mvn -Penable-tests test 19/19 PASS
flow-client / flow-server / starter-auth 2/2、3/3、7/7 PASS
control-plane / identity / MCP 29/29、35/35、16/16 PASS
mvn -pl forge-admin-server,forge-flow/forge-flow-server -am package -DskipTests 44/44 模块 BUILD SUCCESS
xmllint + SQL placeholder/tenant + 禁止依赖/transport 扫描 PASS,无违规命中

测试启用说明:仓库默认 forge.compiler.skip=trueforge.tests.skip=true,模块测试必须使用 -Penable-tests。一次使用 -am 的测试尝试在无测试引擎的上游 datascope 模块触发 Surefire groups 配置失败,随后按项目既有方式先安装依赖、再执行模块级测试;该尝试未影响最终通过结论。

7. 条件限制与清理

  • 未启动 Admin 或 Flow 服务,未触发真实 Flyway;V1.0.26 仅做静态验收;
  • 未执行真实 Flowable 待办的人工 APPROVE/REJECT E2E;默认模型、委托入口和回调通过模块测试与聚合编译验证;
  • 未调用真实大模型;本阶段不包含模型调用;
  • 本轮未启动后台服务,无 PID 需要停止;未 commit、未 push。

8. 归档前最终验收(2026-07-12 17:42)

  • 复跑 mvn -pl forge-admin-server,forge-flow/forge-flow-server -am package -DskipTests:44/44 模块 BUILD SUCCESS,总耗时 19.567s;
  • xmllint --noout 校验两个 High Risk Mapper XML:PASS;
  • V1.0.26 无 Flyway ${...} 占位符、tenant_id=0、禁止依赖或旧 transport 配置;
  • 相关未跟踪文件尾随空白检查与全工作区已跟踪差异 git diff --check:PASS;
  • 编译仅有工程既有 deprecated/unchecked 提示,不阻断归档;
  • 未启动任何服务,未触发真实 Flyway、Flowable 待办或大模型调用,无 PID 需清理。

归档结论:阶段 2.3 代码验收完成,状态置为 done;阶段 2 总体环境验收仍为后续 HARD-GATE。