Archive the arch/parity/short evidence and mark the U1 claim done so U2 can take the intent mutex next. Co-authored-by: Cursor <cursoragent@cursor.com>
4.6 KiB
4.6 KiB
多意图 HITL U1 契约冻结 测试报告
一、 测试背景 (Background)
多意图识别目前最多拆两段且写意图直接丢弃;确认只是 coordinator 文本提示。方案已复核为「持久计划深模块」,U1 必须先冻结边界、事件、状态机和 BatchActionPolicy,避免后续单元向 intent / coordinator 堆叠职责。
二、 测试目标 (Test Objectives)
app/intentflow进入 import allowlist;三张计划表 owner 仅为app/intentflow- 三条
intent.plan.*事实事件 YAML ↔StaticContracts对等,payload 不含 prompt/slots/权限 - 默认
MULTI_INTENT_PLAN_TIER=legacy;未知 policy key fail closed - ActionRegistry 不出现 batch/tier/adapter 字段
intent -> maturity与全仓 short 测试无回归- 无运行时路由变更,因此不做真实 PI / 浏览器验收
三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| OS | Linux 7.0.0-31-generic |
| Go | go1.27.1 linux/amd64 |
| 分支 | feature/multi-intent-u1-contracts(从本地 dev@9874237 检出) |
| Schema | 43(本单元不迁移) |
| 容器 | 不 rebuild |
| 项目 143 | 只读 |
| 证据 | .doc/test-reports/assets/2026-09-15-multi-intent-u1-contracts/ |
测试层级:archtest / events parity / intentflow 单测 / go test -short ./...。无 PG 集成、无真实 PI。
四、 预期结果 (Expected Results)
| 用例 | 判定 |
|---|---|
| YAML ↔ StaticContracts | 三条 intent.plan.* 生产者含 app/intentflow+events,消费者 projection+notify |
| 未知 action key | Lookup 失败;构造期缺行/多行失败 |
task.run |
批量必须确认,OpenFromTier=confirm |
regulation.query |
不要求批量确认,OpenFromTier=auto_read |
| 默认 tier | legacy;MULTI_INTENT_ENABLED=true 不升档 |
| ActionSpec | 无 batch/tier/adapter 字段 |
| arch-check block | production gate passed |
| 全仓 short | PASS |
五、 实际测试结果与判定 (Actual Results & Evaluation)
5.1 事件 parity 与安全 payload
- 测试输入 (Input):
go test -count=1 ./internal/events -run 'RegistryParity|IntentPlan' - 实际输出 (Actual Output):
ok chat-agent-system/internal/events 0.004s
(完整包输出见 unit.txt)
- 评价判定 (Evaluation / Verdict):PASS。
TestRegistryParityWithYAML、TestIntentPlanContractsOmitSensitivePayload绿。 - 性能与耗时 (Duration & Latency):约 5ms
5.2 archtest / arch-check
- 测试输入:
./scripts/arch-check.sh --mode block;go test -count=1 ./internal/archtest - 实际输出:
arch-check mode=block
ok chat-agent-system/internal/archtest 0.173s
ok chat-agent-system/internal/archtest 0.154s
arch-check block: production gate passed
- 评价判定:PASS。
intent.plan.*字面量可被扫描;events已登记为生产者,registry.go 不误报。 - 性能与耗时:约 1.1s
5.3 intentflow 政策与 tier
- 测试输入:
go test -count=1 ./internal/app/intentflow - 实际输出:
ok chat-agent-system/internal/app/intentflow 0.002s - 评价判定:PASS。未知 key fail closed;
task.run批量确认;查询不要求确认;ActionSpec 无 HITL 字段;默认 legacy。 - 性能与耗时:约 2ms
5.4 全仓 short 回归
- 测试输入:
unset TEST_DATABASE_URL; go test -short -count=1 ./...;go vet ./...;git diff --check - 实际输出:见 short.txt。
internal/server9.920s;全包 ok。go vet无输出。git diff --check无空白错误。 - 评价判定:PASS。单意图路径无运行时改动,
internal/intent/internal/coordinator/internal/chat均绿。 - 性能与耗时:约 12s
六、 自动化测试套件汇总 (Test Suite Execution)
| 命令 | 结果 |
|---|---|
go vet ./... |
PASS |
go test -short -count=1 ./internal/app/intentflow ./internal/events ./internal/archtest ./internal/intent |
PASS |
go test -short -count=1 ./... |
PASS |
./scripts/arch-check.sh --mode block |
PASS |
通过率 100%。未跑 PG / 真实 PI(本单元无副作用路径)。
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
U1 达到合入标准:契约冻结完成,默认 legacy,确认前零副作用保持不变。
后续:U2 在独立分支 feature/multi-intent-u2-segmenter 做规则分段 shadow;不得把 HITL/tier 回灌 ActionRegistry。
CSRF:现有 Bearer / X-Session-Token + CORS allowlist 对 U5 足够,不是 blocker。nonce 不替代认证。