Files
ai-workflow-skill/docs/tests/inbox/update/README.md
T

3.3 KiB
Raw Blame History

Inbox update Test Plan

Scope

This document covers progress and blocked transitions via inbox update.

Shared conventions live in ../_shared/README.md.

case: update-moves-thread-to-in-progress

用例意义

验证租约拥有者可以把线程推进到 in_progress,并生成进度消息。

前置条件

  • worker-a 已成功 claim 线程 THREAD_ID

输入

inbox --db TMPDIR/coord.db --json update --agent worker-a --thread THREAD_ID --status in_progress --summary "Implementation started" --body "Scanning current HTTP client usage."

预期输出

  • 命令退出码为 0
  • thread.status == "in_progress"
  • message.kind == "progress"
  • message.to_agent 指向线程创建者

断言结论

  • update 会把状态推进和消息追加合并为同一次事务

case: update-moves-thread-to-blocked-with-payload

用例意义

验证 update --status blocked 会写入阻塞问题消息,并保留结构化 payload。

前置条件

  • worker-a 已成功 claim 线程 THREAD_ID

输入

inbox --db TMPDIR/coord.db --json update --agent worker-a --thread THREAD_ID --status blocked --summary "Need timeout decision" --payload-json '{"question":"Should retries apply to read timeouts?"}'

预期输出

  • 命令退出码为 0
  • thread.status == "blocked"
  • message.kind == "question"
  • message.payload_json.question 保存提问内容

断言结论

  • blocked 更新会生成面向创建者的问题消息

case: update-accepts-body-file-and-artifact

用例意义

验证 update 支持通过 body-file 与 artifact 发送结构化进度材料。

前置条件

  • worker-a 已成功 claim 线程 THREAD_ID
  • TMPDIR/progress.md 已存在

输入

inbox --db TMPDIR/coord.db --json update --agent worker-a --thread THREAD_ID --status in_progress --summary "Implementation started" --body-file TMPDIR/progress.md --artifact TMPDIR/progress.md --artifact-kind note
inbox --db TMPDIR/coord.db --json show --thread THREAD_ID

预期输出

  • update 成功
  • 对应消息 body 等于文件内容
  • 对应消息包含 1 个 artifactkind 为 note

断言结论

  • update 的正文与 artifact 支持与 send/reply/done/fail 保持一致

case: update-rejects-invalid-payload-json

用例意义

验证 update 对非法 --payload-json 输入返回稳定错误契约。

前置条件

  • worker-a 已成功 claim 线程 THREAD_ID

输入

inbox --db TMPDIR/coord.db --json update --agent worker-a --thread THREAD_ID --status blocked --summary "Need timeout decision" --payload-json not-json

预期输出

  • 退出码为 30
  • JSON 错误码为 invalid_input

断言结论

  • 阻塞问题的 payload 需要满足合法 JSON 约束

case: update-rejects-non-owner

用例意义

验证非租约拥有者不能更新线程状态。

前置条件

  • worker-a 已成功 claim 线程 THREAD_ID

输入

inbox --db TMPDIR/coord.db --json update --agent worker-b --thread THREAD_ID --status in_progress --summary "Implementation started"

预期输出

  • 退出码为 20
  • JSON 错误码为 lease_conflict

断言结论

  • update 明确依赖活跃 lease 所属者