38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
# Case: `answer-accepts-payload-json-without-body`
|
|
|
|
## 用例意义
|
|
|
|
验证 `answer` 在未提供 `--body` 的情况下,仍可通过纯 `--payload-json` 向当前阻塞尝试写回结构化决策。
|
|
|
|
## 前置条件
|
|
|
|
- 运行 `run_blog_002` 中的任务 `T2` 已处于 `blocked`
|
|
- `blocked` 列表中可见 `T2`
|
|
- 已知该阻塞尝试对应线程为 `THREAD_ID`
|
|
|
|
## 输入
|
|
|
|
```bash
|
|
orch --db TMPDIR/coord.db --json answer --run run_blog_002 --task T2 --payload-json '{"decision":"stdout","source":"leader"}'
|
|
inbox --db TMPDIR/coord.db --json show --thread THREAD_ID
|
|
```
|
|
|
|
## 预期输出
|
|
|
|
- `answer` 退出码为 `0`
|
|
- `answer.data.message.kind == "answer"`
|
|
- `answer.data.message.payload_json.decision == "stdout"`
|
|
- `answer.data.message.payload_json.source == "leader"`
|
|
- `show.data.messages` 末尾新增一条 `kind=answer` 的消息
|
|
- 末尾消息的 `payload_json.decision == "stdout"`
|
|
|
|
## 断言结论
|
|
|
|
- `answer` 不要求 leader 必须提供纯文本正文;结构化 payload 本身就可以构成有效答复
|
|
- worker 可以从同一条 `answer` 消息里读取结构化决策,而不必依赖约定俗成的正文格式
|
|
|
|
## 补充约束
|
|
|
|
- `--payload-json` 必须是合法 JSON;非法值应返回 `invalid_input`
|
|
- `--body` 与 `--body-file` 仍然互斥,即使本用例不使用它们
|