test-spec.md 4.1 KB

测试规格 — Forge AI 中枢高风险动作人工审批

status: passed_with_environment_limits created: 2026-07-12

1. P0 安全矩阵

  • HIGH invoke 在审批前零 BusinessActionExecutionService 调用;
  • SERVICE、scope/grant/权限撤销、tenant/org 不一致、MEDIUM/HIGH 路径混用均失败关闭;
  • 客户端审批人、候选组、flowModelKey、expire、身份和未知字段全部拒绝;
  • 无 KEK/错误 keyId/tag/ciphertext/AAD/digest 时零执行;
  • 明文参数、密钥、Token、Header 不出现在表、日志、MCP 输出;
  • 审批通过后客户端停用、credentialVersion 变化、grant 撤销、用户停用、权限撤销、能力/版本/policy 漂移、业务状态变化均零执行;
  • 重复 APPROVED/REJECTED/CANCELLED 回调与并发恢复最多一次副作用;
  • approval.get 跨 client/actor/tenant/org 查询拒绝。

2. P0 幂等与状态机

  • 20 路相同请求只一条有效 approval 和一个固定 businessKey 流程;
  • 同幂等键异摘要冲突;相同摘要返回同 approvalRequestId;
  • Flow 启动成功本地回填失败可用 RESERVED 恢复;
  • RESERVED/PENDING/EXECUTING 超时不被普通调用抢占重复执行;
  • terminal 状态不可回退,EXPIRED/REJECTED/CANCELLED 永不解密执行。

3. P1 功能与协议

  • HIGH 发布版本、policy、Schema、字段和动作快照正确;
  • 默认 BPMN 不覆盖非空设计,候选组只来自 policy;
  • 审批表单只读展示安全摘要;
  • approval.get 返回稳定结构;
  • MCP 2025-06-18、单 Streamable HTTP,固定工具增加 approval.get;
  • MEDIUM 与 FLOW_ACTION 既有行为不回归。

4. 计划命令

cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-capability-high-risk-approval -am install -DskipTests

mvn -Penable-tests -f forge-framework/forge-plugin-parent/forge-plugin-capability-high-risk-approval/pom.xml test
mvn -Penable-tests -f forge-framework/forge-plugin-parent/forge-plugin-capability-secure-actions/pom.xml test
mvn -Penable-tests -f forge-framework/forge-plugin-parent/forge-plugin-capability-identity/pom.xml test
mvn -Penable-tests -f forge-framework/forge-plugin-parent/forge-plugin-mcp/pom.xml test
mvn -pl forge-admin-server,forge-flow/forge-flow-server -am package -DskipTests

5. 条件跳过

  • 无隔离 MySQL 时不执行真实 Flyway,只做 SQL/XML 静态检查;
  • 无独立 Flow 测试数据和审批人时不冒充真实人工审批 E2E;通过 mock FlowClient、回调和真实模块编译验证;
  • 不调用真实大模型;本阶段验证治理和人工审批链路。

6. 最终执行结果

验证范围 结果
High Risk Approval 24/24 PASS,包含 20 路并发收敛、加密篡改、模型保留、审批归属、回调幂等和只读表单脱敏
Secure Actions 32/32 PASS,HIGH 路由到审批适配器并审计 PENDING_APPROVAL,MEDIUM 保持同步执行
Flow Actions 19/19 PASS
Flow Client / Flow Controller / 委托桥 2/2、3/3、7/7 PASS
Control Plane / Identity / MCP 29/29、35/35、16/16 PASS
Admin + Flow Server 聚合 44 模块 package PASS,包含 High Risk 模块装配
静态安全检查 Mapper XML、Flyway placeholder/tenant、禁止依赖、旧 transport 扫描 PASS

条件限制保持不变:未执行真实 MySQL Flyway、真实 Flowable 人工审批 E2E、真实模型调用;未启动 Admin/Flow 服务,不产生服务 PID。

7. 归档前增量验证

  • 变更范围:最后的 expireSeconds @NotNull、固定 flow-model-key、EXECUTING 状态及聚合装配;
  • 复用已通过的 High Risk 24/24 和全阶段回归基线,归档前增量复跑 Admin + Flow Server 44 模块 package;
  • 结果:BUILD SUCCESS;Mapper/Flyway/禁止依赖/旧 transport/空白静态检查 PASS;
  • 跳过项:真实 MySQL Flyway 和 Flowable 人工审批 E2E,原因是本轮不启动会更改数据库/流程运行态的服务。