Files
zhuyongxin 38f781b157 feat(harness): complete protocol repair stop and archive ISS-016
Add repairable INVALID_PROGRESS_PROTOCOL observations, independent
PROGRESS_PROTOCOL_VIOLATED saturation, and controlled release paths.
Archive the OpenSpec change after syncing main specs and devflow.
2026-07-27 19:10:07 +08:00

2.7 KiB
Raw Permalink Blame History

Diagnosis 信息增益停止契约 Evidence

证据

来源 证据 结论 是否已汇报
HarnessEvidenceTools / request records Agent-facing Tool 直接使用业务 request 生成 Schema 要增加 previous_observation + input 必须显式演进 Tool Schema 是
HarnessToolInterceptor 曾把完整 agentResult 放入 Tool Response 必须拆分控制视图与模型观察 是
RunContext / DiagnosisHarnessCore.startRun 结构不可变 + 线程安全 handle 进展 tracker 放 RunContext,不扩 Redis 枚举 是
CanonicalInvocationStore 仅 begin/find/markReady/markError tracker 只存 identity,结束时投影 是
RagResultProjector 只按 evidence 空否生成状态 需兼容 relevanceLevel/relevance_level 是
DiagnosisReleaseUseCase / EvidenceGuard 强制 draft 非空且空 analysis=ANALYSIS_MISSING 与合法无结论冲突,需统一 Release 是
ChatApplicationUseCase.recoverBudgetExhaustion 未提交预算 Fallback 绕过 Release 迁移意图到 Diagnosis Release 是
前端 app.js 已渲染 observed_facts/sources/limitations/next_steps 不新增公开 SSE 字段 是
真实 E2E(实施前) 多轮空转后 BUDGET_EXHAUSTED/INTERNAL_FAILURE 需要信息增益停止契约 是
真实 E2E(实施后) iss016-final-20260726-a → MISSING_REQUIRED_CONTEXT FALLBACK 未知 Query 可正常业务结束 是
Token/拒绝审计 E2E 9 次 INVALID_PROGRESS_PROTOCOL 拒绝不累计 NO_GAIN 需独立协议错误阈值与 STOP 是

Evidence-driven 结论

  • 结论:Tool Envelope 是 L3 模型侧协议变更,业务 request 在 interceptor 解包后保持不变。

    • 证据:三个 FunctionToolCallback inputType、adapter bridge 只收业务 JSON。
    • 风险:框架 Schema/拦截器假设不匹配。
    • 用户确认:不需要(技术事实)
  • 结论:协议错误不得累计为 NO_GAIN,必须独立 PROGRESS_PROTOCOL_VIOLATED。

    • 证据:真实审计 9 次协议拒绝 + 13 Agent 轮次;OpenSpec design 6.1。
    • 风险:只返回通用错误码不足以自修复。
    • 用户确认:已通过 Task 8 OpenSpec 与实现收口
  • 结论:Release 是业务 Fallback 唯一决策入口;Application 不重建业务内容。

    • 证据:DiagnosisReleaseUseCase 统一路径 + Application 窄化预算终态持久化。
    • 用户确认:已确认

实现期补充证据

  • Draft 合同失败窄化降级:非法 Draft 丢弃;仅当 ProgressSnapshot 有已验真 facts 时发 INSUFFICIENT_EVIDENCE。
  • Task 8 focused tests:tracker / interceptor / release / agent-loop / config 全部通过。