3.2 KiB
3.2 KiB
Acceptance
实现结果
- OpenSpec tasks:
42/42complete。 - Phase commits:
52bf030 feat(trace): add session run isolation schema6fdbd34 docs(openspec): tighten run isolation contract26d5529 feat(trace): isolate chat runs027aed1 feat(trace): add run-scoped trace readsd928a19 feat(trace): bind feedback to runs78c1477 feat(trace): isolate aiops runsf9df943 feat(trace): finish run-aware demo verification
- OpenSpec archive:
openspec/changes/archive/2026-07-10-session-run-trace-isolation
静态验证
node --check src\main\resources\static\app.js
node --check src\main\resources\static\trace.js
openspec validate session-run-trace-isolation --strict
git diff --check -- . ':!devflow/index.md'
结果:通过。
脚本验证
PowerShell demo 脚本解析:
$scripts = @(
'mvp\demo\scripts\run-payment-timeout-demo.ps1',
'mvp\demo\scripts\run-interview-demo-check.ps1'
)
foreach ($script in $scripts) {
[scriptblock]::Create((Get-Content -Raw -Encoding UTF8 $script)) | Out-Null
}
结果:通过。
Focused tests:
mvn -q "-Dtest=ChatControllerTest,DiagnosisTraceServiceTest,FeedbackControllerTest,FeedbackServiceTest,AiOpsServiceTest" test
结果:通过。
Baseline / regression:
mvn -q "-Dtest=DiagnosisTraceEvaluatorTest,DiagnosisEvalBaselineDiffTest" test
mvn -q "-Dtest=DiagnosisTraceEvaluatorTest,DiagnosisEvalBaselineDiffTest,ExecutorGatekeeperServiceTest,VerifierInputHookTest,ChatServiceSequentialAgentTest" test
结果:通过,无 baseline drift。
E2E 验证
使用 Maven 启动:
mvn spring-boot:run -Dspring-boot.run.profiles=mvp-demo
E2E 使用同一 sessionId 连续两轮 Chat:
sessionId:e2e-phase6-chat-codex-20260710-2120run1:run-e2a97696-4398-4abc-90e4-28f45c838f92run2:run-76ce6a6e-92ab-40c9-800a-eca0c1bb5172
验证结果:
- Chat1 / Chat2 均成功。
- run1 exact trace 返回 run1。
- run2 exact trace 返回 run2。
- session-only latest trace 返回 run2。
- DB 中同一 session 有两条
diagnosis_run。 - step/tool rows 按
run_id隔离,mixed row check 为 0。 chat_session.message_pair_count = 2。
日志验证
检查:
target/e2e/phase6-mvn-20260710-211831.out.loglogs/application.loglogs/chat.log
结果:能找到 E2E sessionId、两个 runId、Chat execution、run persistence 和 trace lookup 相关日志。
浏览器/人工验证
未单独进行浏览器点击验证。Trace UI 的本次验收通过静态语法检查、URL/runId 参数代码审查和后端 exact trace E2E 共同覆盖。建议后续手动打开 trace.html?sessionId=...&runId=... 做展示层冒烟。
剩余风险 / 后续事项
- 缺少
runId的 Feedback fallback 是短期兼容路径,客户端全部迁移后可收紧。 diagnosis_session仍保留为历史兼容和回滚表,后续需要观察窗口后再评估约束收紧或归档策略。case_library.diagnosis_id仍是过渡字段,旧值可能为session_id,新自动值为run_id。- 历史 mixed trace 不能恢复真实多轮边界,只能按 compatibility run 查询。