Files
SuperBizAgent-java/devflow/projects/2026-07-17-chat-diagnosis-stategraph-test-suite/decisions.md
T

8.8 KiB
Raw Blame History

Chat Diagnosis StateGraph Test Suite Decisions

Entry Summary

  • 问题:阶段 1–3 的安全覆盖已充足,但测试命名/组织仍是逐步实现产物,尚未形成 ISS-011 指定的 Workflow、Node Contract、Chat Integration 三层权威体系。
  • 期望:阶段 4只重构测试结构并补齐矩阵,不改变生产行为;归档并提交后才进入阶段 5。
  • 分档:complex(路径矩阵广、涉及旧安全测试退役,但接口影响为 L1 test-only)。
  • Change:chat-diagnosis-stategraph-test-suite。
  • 授权:用户已要求直接实现,阶段门禁与阶段 5 才 live E2E 的约束不变。

Context Sources

  • ISS-011 阶段 4、测试策略和验收标准。
  • chat-diagnosis-stategraph-design-freeze 的 test migration requirement。
  • 阶段 1–3 archive/acceptance 和当前 119-test focused baseline。
  • DiagnosisGraphRoutingTest、各 Node tests、DiagnosisRealGraphIntegrationTest、ChatDiagnosisGraphRuntimeTest、ChatServiceGraphIntegrationTest。
  • VerifierInputHookTest、protocol parser tests、ExecutorGatekeeperServiceTest 与 Trace/Controller/Repository/Eval tests。

Question Pool

# 维度 问题 模式 状态
Q1 术语 Workflow、Node Contract、Chat Integration 的职责边界是什么? evidence-driven 已解决
Q2 边界 是否把所有现有 Graph unit tests 合并成三个巨型类? evidence-driven 已解决
Q3 旧测试 VerifierInputHookTest 在显式 Graph Gatekeeper 后应保留、改写还是删除? evidence-driven 已解决
Q4 验收 如何证明阶段 4矩阵完整且没有恢复固定 Sequential 顺序? evidence-driven 已解决
Q5 阶段 是否允许为测试可测性改生产代码或执行 live E2E? user-interview(既有冻结规则) 已确认

Evidence-driven Findings

  • Q1:Issue 已明确三类测试;现有 DiagnosisGraphRoutingTest 对应 Workflow,分散 Node/Protocol tests 对应 Node Contract,ChatServiceGraphIntegrationTest 对应外部生命周期。
  • Q2:现有细粒度测试失败定位清晰,全部合并会制造大文件;应保留专用 unit tests,同时新增/重命名三层权威入口并共享夹具。
  • Q3:生产 Graph Verifier 已不注册 Hook,Hook test 仍验证 raw/full-trace/ThreadLocal payload,与 verified-only 生产协议冲突;parser/Gatekeeper/投影行为已有独立 tests,故阶段 4删除 Hook test,生产类型留到阶段 5。
  • Q4:以 Issue 必需路径清单建立 requirement-to-test matrix;source check 禁止 SequentialAgent/VerifierInputHookTest 成为新 suite 依赖,并运行保留安全回归。

User-interview Confirmation

问题 用户原话/既有确认 状态 OpenSpec 回写
Q5 阶段边界 “端到端只在最后阶段全部完成后才验证;每个阶段如果有必要添加单元测试验收的话,就加” 已确认 proposal

Grill-with-docs Result

  • 术语不进入业务 glossary:Workflow/Node Contract/Integration 是测试架构术语,不改变 Session、Run、Trace、Gatekeeper 或 evidence gap 领域定义。
  • 具体场景压力测试:同 session 多 run 属于 Chat Integration;Gatekeeper REJECT/LOW_CONFID 与 retry exhaustion 属于 Workflow;failed binding 过滤与 verified-only payload 属于 Node Contract。
  • 旧 Hook test 的有效行为已分别迁移到 ExecutorEvidenceParserTest、ExecutorGatekeeperServiceTest、GatekeeperNodeTest 和 VerifiedInputNodeTest;删除不会丢失安全真理源。
  • 没有难以逆转的新架构取舍,不创建 ADR;测试组织可以在保持行为矩阵的前提下继续演进。

Discover Status

  • devflow/index.md:命中阶段 0–3 archive。
  • 生产调用链:阶段 3 已冻结且测试阶段默认不修改。
  • 接口影响:L1 test-only;无 API/DTO/DB/Prompt/运行时消费者变化。
  • 未解决问题:0。
  • Draft 产物:proposal + decisions;尚未生成 design/spec/tasks,尚未修改测试代码。

Architecture Audit

Test ownership map

ISS-011 path matrix -> DiagnosisGraphWorkflowTest -> ScriptedDiagnosisGraphActions -> real DiagnosisGraphFactory 负责控制流;Node/protocol contracts -> DiagnosisGraphNodeContractTest + focused component tests -> real Node actions/parsers/Gatekeeper 负责安全投影;public lifecycle -> ChatServiceGraphIntegrationTest -> Run repositories/Eval/Trace mapping 负责外部行为。Controller、Repository、Trace、Eval 和 protocol tests 是三层体系的下游安全消费者,不应被重写成 Graph 内部顺序断言。

Data and lifecycle ownership

  • Workflow fixtures 只拥有脚本状态、调用计数和 events,不创建 Session/Run。
  • Node Contract fixtures 只拥有 invoker input/output 和 mock Gatekeeper current-run result,不持久化生产实体。
  • Chat Integration fixtures 只观察 ChatService public result 和 current Run persistence,不推断内部 Node 次序。
  • VerifierInputHookTest 删除后不产生数据契约缺口:Executor parser、Gatekeeper、passed-binding projection 各自已有单一测试所有者。

Coupling risks

  • 最大风险是 Workflow 与 Node Contract 都断言完整路径而重复;设计将 Fake route matrix 与 real-node input/security matrix分开。
  • ScriptedDiagnosisGraphActions 是唯一 Fake topology fixture;不新增第二套 Graph builder。
  • 测试-only阶段禁止 src/main diff,避免为测试便利扩大 production API。
  • 类重命名使用 Git rename,旧名称仅允许出现在 OpenSpec/devflow迁移说明中。

Cross-artifact alignment

上游 → 下游 检查内容 状态
brief/proposal → proposal 三层体系、旧 Hook test退役、保留安全回归、阶段 5 E2E 延期 已对齐
proposal → design rename-not-copy、职责归属、production diff=0、rollback 已对齐
design → specs/tasks Workflow/Node/Integration矩阵、Hook test删除、source inventory和验证门禁 已对齐
specs → tasks 每类 scenario 均有 rename、补缺、回归或静态验收任务 已对齐

Audit result

架构审计未发现业务 glossary、阶段 0–3 specs 或生产行为冲突。新 capability 只描述测试验证系统,modified design-freeze requirement 完整保留并细化旧测试替换边界。接口影响保持 L1,cross-artifact gap=0,无需回写生产 spec 或创建 ADR。

Commit Gate

  • schema:spec-driven;proposal/design/2 delta specs/tasks 全部 done,applyRequires=tasks 已满足。
  • OpenSpec:当前 change strict pass;15 个主 specs strict pass。
  • Cross-artifact:4/4 已对齐,gap=0。
  • Question pool:4 个 evidence-driven 已查证,1 个 user-interview 由用户既有原话确认,无未决项。
  • Interface impact:L1 test-only;design 有独立影响/回滚章节,默认 src/main diff=0。
  • Preflight:git diff --check 通过,当前仅 Draft OpenSpec/devflow 与根目录计划文件,无测试/生产代码修改。
  • 结论:Draft OpenSpec 达到可执行状态,创建 .committed 后进入 Apply。

Apply Completion

  • DiagnosisGraphRoutingTest 已以 Git rename 演进为 DiagnosisGraphWorkflowTest;所有 scripted run 统一断言 events 与真实 sequence 完全一致。
  • DiagnosisRealGraphIntegrationTest 已演进为 DiagnosisGraphNodeContractTest;补齐合法工具失败限制、partial-pass REJECT 和 Verifier invalid 无伪 verdict。
  • Workflow 显式断言 Gatekeeper ceiling 将模型 PASS 限制为 LOW_CONFID 且不触发 evidence retry,以及第二次 LOW_CONFID 不再补证据。
  • ChatServiceGraphIntegrationTest 增加 SessionContextHolder finally cleanup 断言;public Run/Trace/Eval/multi-run 覆盖保持。
  • VerifierInputHookTest 已删除;生产 Hook/ThreadLocal 类型未修改,留待阶段 5清理。
  • 新增 DiagnosisGraphTestSuiteStructureTest,保证三个权威类存在、Sequential/Hook实现测试不存在且权威测试不引用旧实现。

Verification Summary

  • 新权威层:4 suites / 43 tests,0 failures/errors/skipped。
  • 完整保留安全回归:31 suites / 126 tests,0 failures/errors/skipped。
  • Maven test compilation:通过。
  • OpenSpec:当前 change strict pass;主 specs 15/15 strict pass。
  • 静态门禁:git diff --check 通过;required authoritative classes=3;legacy tests=0;scripted fixture definitions=1;src/main diff=0。
  • 按阶段门禁未运行 Maven live E2E、未检查 logs/、未执行 scripts/query_mysql.py;统一保留到阶段 5。

Archive Result

  • 2 份 delta specs 已同步:新增 test-suite capability 6 条 requirements,修改 design-freeze test migration requirement 1 条。
  • OpenSpec 已归档到 openspec/changes/archive/2026-07-17-chat-diagnosis-stategraph-test-suite/。