4.2 KiB
4.2 KiB
多意图 HITL U8 task generate adapter 测试报告
一、 测试背景 (Background)
U7 只在 auto_read 执行独立查询,QueryGuard 拒绝 task.run。U8 要在 confirm tier 把「查询+生成」落成 awaiting 写计划,确认后经 OwnerMux 只开放 task.run / task.run.adhoc,并用稳定幂等键避免双跑。默认 MULTI_INTENT_PLAN_TIER=legacy 仍不得落盘。
二、 测试目标 (Test Objectives)
- confirm 话语确认前零 generate 副作用
- 同 scope 第二活动写计划冲突
- 确认后 mux 执行 generate,重放
StartCount=1 - QueryGuard 继续拒绝 generate;adapter 拒绝查询 key;撤销 Denied fail closed
LiveTaskStarter同幂等键重放- 无
PI_AGENT_RUNNER_URL时真实 PI 记 stop-gate(SKIP,不冒充验收) - arch-check /
-short相关包绿
三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|---|---|
| 分支 | feature/multi-intent-u8-task-generate |
| OS | linux |
| 账本 | 内存 SerialUoW + MemoryStore |
| Owner | OwnerMux{Query: QueryGuard{Fake}, Task: TaskRunAdapter} |
| 真实 PI | PI_AGENT_RUNNER_URL 未设置 → SKIP |
| 共享环境 | 不 rebuild :8080;项目 143 只读 |
四、 预期结果 (Expected Results)
| 用例 | 预期 |
|---|---|
| legacy / auto_read 写话语 | 不落盘 |
| confirm + 「查一下相关法规,然后帮我生成报价单」 | awaiting,步骤 pending |
| 第二 ClientTurn 同 scope | PLAN_DECISION_CONFLICT |
| 确认 + AdvanceEligible | generate starts=1;再推进仍为 1 |
QueryGuard task.run |
PLAN_ACTION_FORBIDDEN |
| 真实 PI | 无 URL 则 SKIP |
五、 实际测试结果与判定 (Actual Results & Evaluation)
5.1 HandleTurn confirm
- 测试输入:
go test ./internal/app/intentflow -run 'TestHandleTurn|TestOwnerMux|TestQueryGuard' -count=1 -v - 实际输出:
TestHandleTurnConfirmPersistsAwaitingWithoutExecute、TestHandleTurnConfirmRejectsSecondActiveWritePlan、TestHandleTurnWriteUtteranceStaysLegacyUnderAutoRead、TestQueryGuardRejectsGenerate、TestOwnerMux*PASS。完整日志:assets/2026-09-16-multi-intent-u8-task-generate/intentflow.txt - 评价判定:PASS。
- 性能与耗时:8ms
5.2 Adapter / mux 闭环
- 测试输入:
go test ./internal/app -run 'TestTask|TestConfirmThenMux|TestLiveTask' -count=1 -v - 实际输出:
TestConfirmThenMuxExecutesGenerateOncePASS(确认前 starts=0,确认后 starts=1);TestTaskRunAdapterIdempotentExecute/RejectsQueryKey/DeniedAfterRevoke/TestLiveTaskStarterReplaysIdempotencyKeyPASS;TestTaskGenerateRealPIStopGateSKIP(PI_AGENT_RUNNER_URL未设置)。日志:assets/2026-09-16-multi-intent-u8-task-generate/app-adapter.txt - 评价判定:PASS(真实 PI 为 stop-gate,不计入首版冒充验收)。
- 性能与耗时:5ms
5.3 回归与边界
- 测试输入:
go test -short ./internal/app/intentflow ./internal/app ./internal/archtest ./internal/chat ./internal/server ./internal/taskrun;./scripts/arch-check.sh --mode block - 实际输出:全部 ok;
arch-check block: production gate passed。 - 评价判定:PASS。
- 性能与耗时:约 13s(含 server)
六、 自动化测试套件汇总 (Test Suite Execution)
| 命令 | 结果 |
|---|---|
go test ./internal/app/intentflow ./internal/app ./internal/archtest |
PASS |
go test -short ./internal/chat ./internal/server ./internal/taskrun |
PASS |
./scripts/arch-check.sh --mode block |
PASS |
TestTaskGenerateRealPIStopGate |
SKIP(无 PI_AGENT_RUNNER_URL) |
未跑 go test ./internal/chat 无 -short:既有 TestChatSession_SemanticMemoryRecallAndAsyncTurnRecord flake,与 U8 无关。
七、 测试结论与后续优化建议 (Conclusion & Next Steps)
U8 达到合入标准:核心首版 U1–U8 在默认 legacy 零行为、confirm 确认后只开放 generate adapter 的前提下可关闭。U9–U12 不阻塞首版。真实 PI 生成闭环仍待 PI_AGENT_RUNNER_URL 窗口;共享环境 schema 仍为 43,goose 45 待晋升窗口,本单元不 rebuild。