1
0
Files
DiAL/openspec/changes/checker-observation/specs/cmd-checker/spec.md

1.6 KiB
Raw Blame History

MODIFIED Requirements

Requirement: cmd checker 执行

系统 SHALL 按 cmd target 配置执行本地命令记录执行耗时、退出码、stdout 和 stderr observation并在执行失败时产生结构化错误信息。

Scenario: 命令正常退出

  • WHEN cmd target 执行的进程正常退出且 exit code 为 0
  • THEN 系统 SHALL 记录 durationMs 和包含 exitCode、stdoutPreview、stderrPreview 的 observation并进入 expect 校验API detail SHALL 为 exitCode=0

Scenario: 命令非零退出

  • WHEN cmd target 执行的进程正常退出但 exit code 为 1
  • THEN 系统 SHALL 记录包含 exitCode、stdoutPreview、stderrPreview 的 observation并由 expect.exitCode 决定 matched 结果API detail SHALL 为 exitCode=1

Scenario: 命令启动失败

  • WHEN cmd target 的 exec 不存在或无法启动
  • THEN 系统 SHALL 记录 matched=falseobservation SHALL 为 null并在 failure 中写入 kind=error 和可读错误信息

Scenario: 命令超时

  • WHEN cmd target 在 timeout 时间内未结束
  • THEN 系统 MUST 终止该子进程,记录 matched=false,并在 failure 中写入命令超时信息如已收集输出片段observation SHALL 包含 stdoutPreview、stderrPreview 和 error

Scenario: 命令输出超限

  • WHEN cmd target 的 stdout 和 stderr 合计输出超过 maxOutputBytes
  • THEN 系统 MUST 停止收集输出并终止该检查,记录 matched=false,并在 failure 中写入输出超限信息observation SHALL 包含已截断输出预览和 error