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

2.2 KiB
Raw Blame History

MODIFIED Requirements

Requirement: command target 配置

系统 SHALL 支持 type: cmd 的 target 配置,通过 cmd.execcmd.args 描述本地命令,并使用 cmd 专用字段配置工作目录、环境变量和输出限制。

Scenario: 解析 cmd target

  • WHEN YAML 中 target 配置 type: cmdcmd.exec: "pgrep"cmd.args: ["nginx"]
  • THEN 系统 SHALL 将其解析为 cmd checker并保留 exec、args、cwd、env、maxOutputBytes、interval、timeout 和 expect 配置

Scenario: cmd target 缺少 exec

  • WHEN YAML 中 target 配置 type: cmd 但缺少 cmd.exec
  • THEN 系统 SHALL 以配置错误退出,并提示该 target 缺少 cmd.exec 字段

Scenario: cwd 相对配置文件目录解析

  • WHEN cmd target 配置 cmd.cwd: "scripts" 且配置文件位于 /opt/checker/probes.yaml
  • THEN 系统 SHALL 将 cwd 解析为 /opt/checker/scripts

Scenario: cmd 不使用 shell

  • WHEN cmd target 配置 execargs
  • THEN 系统 MUST 直接执行该程序和参数,不通过 shell 解释整段命令字符串

Scenario: env 默认继承并允许覆盖

  • WHEN cmd target 配置 cmd.env: {LANG: "C"} 且当前进程环境包含 PATH
  • THEN 系统 SHALL 继承当前进程的全部环境变量,并将 LANG 覆盖为 "C"

Requirement: command checker 执行

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

Requirement: command expect 校验

系统 SHALL 支持 cmd 专用 expect包括 exitCodestdoutstderr,并按 exitCode、duration、stdout、stderr 的阶段顺序快速失败。

Requirement: command checker 启动期配置校验

系统 SHALL 在启动期对 cmd checker 的配置契约和语义执行严格校验。Cmd target 的 cmd 分组 SHALL 只允许 execargscwdenvmaxOutputBytes 字段Cmd expect SHALL 只允许 exitCodemaxDurationMsstdoutstderr 字段。未知字段、非法类型和不可编译正则 MUST 导致启动期配置错误。expect.exitCode SHALL 保留原有有限整数数组语义,不限制到特定平台范围。