# case: cancel-persists-reason-and-artifact ### 用例意义 验证 `cancel` 的原因文本与附件会被完整持久化。 ### 前置条件 - 已存在一个非终态线程 `THREAD_ID` - `TMPDIR/cancel.md` 已存在 ### 输入 ```bash inbox --db TMPDIR/coord.db --json cancel --agent leader --thread THREAD_ID --reason "Task superseded by a larger refactor" --artifact TMPDIR/cancel.md --artifact-kind brief inbox --db TMPDIR/coord.db --json show --thread THREAD_ID ``` ### 预期输出 - `cancel` 成功 - 取消消息 `summary` 与 `body` 都保留取消原因 - 取消消息包含 1 个 artifact ### 断言结论 - `cancel` 既保留人类可读原因,也支持附带上下文材料 - 当 `--reason` 为空时,取消消息的 `summary` 会回退为 `thread cancelled`,而 `body` 保持空字符串 - `--artifact-kind` 与 `--artifact-metadata-json` 需要至少一个 `--artifact`,且多值数量必须是 `1` 或与 artifact 数量一致;否则应返回 `invalid_input`