2.0 KiB
2.0 KiB
Evidence: single-react-chat-application-usecase
Code and Contract Evidence
DiagnosisHarnessCore/RunContext已提供 Run ID、预算、取消和 first-terminal-wins,应用用例无需创建第二套生命周期。GuardModelCall/HarnessRetryExecutor提供单轮模型 timeout、Token 记账和两次 Router attempt。HarnessEvidenceTools/RagToolResult提供 Knowledge 路径唯一 lookup 和有界 projection。DiagnosisAgentUseCase/DiagnosisReleaseUseCase已形成 Diagnosis Draft 与安全发布边界。DiagnosisRun/DiagnosisRunRepository/V011 提供既有 Run 持久化,V012 以 nullable additive 字段扩展。
Confirmed Boundaries
- Router 输入只含原始 Query、可选 last intent 和 last user query;最终失败不得默认进入 Diagnosis。
- 三类 executor 不互相调用,所有路径接收未改写 Query。
- PreviousTurn 只来自同 Session 最近
DIAGNOSIS + SUCCESS + published_result,且必须在保存当前 Run 前读取。 - Knowledge 公开内容只保留 stable document metadata,不发布 direct Tool Call ID。
PublishedResult不保存 Tool ID、raw evidence、完整 Draft 或 SemanticGuard reason;Fallback/Failed/Cancelled 不写安全历史。- Controller/SSE/前端切换属于阶段 6B,本阶段保持公开协议不变。
Diagnosis Finding
- 综合回归暴露
SemanticGuardTest的负载竞态:第二个 Future 可能在获得线程前被取消,因而不会产生第二次 interrupt。 - 生产代码已对每次 timeout 调用
Future.cancel(true);测试改为验证两次 TIMEOUT attempt、两次模型预算预留,以及至少一个运行中调用被中断。 - 分类为测试假设偏差,不是生产代码或 OpenSpec 偏离。
Verification Evidence
- Stage 6A focused tests:13 tests 通过。
- Stage 2-5 与 6A 综合回归:18 suites / 76 tests,0 failure/error/skipped。
- Maven compile 与 change strict validation 通过。
- 公开 Controller/前端零 diff;Router/System executor 无 Tool、ReactAgent、ThreadLocal 或手写 loop。