feat(harness): add chat application use case
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# 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。
|
||||
Reference in New Issue
Block a user