# Acceptance ## 实现结果 - OpenSpec tasks: `42/42` complete。 - Phase commits: - `52bf030 feat(trace): add session run isolation schema` - `6fdbd34 docs(openspec): tighten run isolation contract` - `26d5529 feat(trace): isolate chat runs` - `027aed1 feat(trace): add run-scoped trace reads` - `d928a19 feat(trace): bind feedback to runs` - `78c1477 feat(trace): isolate aiops runs` - `f9df943 feat(trace): finish run-aware demo verification` - OpenSpec archive: `openspec/changes/archive/2026-07-10-session-run-trace-isolation` ## 静态验证 ```powershell 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 脚本解析: ```powershell $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: ```powershell mvn -q "-Dtest=ChatControllerTest,DiagnosisTraceServiceTest,FeedbackControllerTest,FeedbackServiceTest,AiOpsServiceTest" test ``` 结果:通过。 Baseline / regression: ```powershell mvn -q "-Dtest=DiagnosisTraceEvaluatorTest,DiagnosisEvalBaselineDiffTest" test mvn -q "-Dtest=DiagnosisTraceEvaluatorTest,DiagnosisEvalBaselineDiffTest,ExecutorGatekeeperServiceTest,VerifierInputHookTest,ChatServiceSequentialAgentTest" test ``` 结果:通过,无 baseline drift。 ## E2E 验证 使用 Maven 启动: ```powershell mvn spring-boot:run -Dspring-boot.run.profiles=mvp-demo ``` E2E 使用同一 `sessionId` 连续两轮 Chat: - `sessionId`: `e2e-phase6-chat-codex-20260710-2120` - `run1`: `run-e2a97696-4398-4abc-90e4-28f45c838f92` - `run2`: `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.log` - `logs/application.log` - `logs/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 查询。