# Inbox `renew` Test Plan ## Scope This document covers lease renewal behavior via `inbox renew`. Shared conventions live in [../_shared/README.md](../_shared/README.md). ## case: renew-extends-active-lease ### 用例意义 验证租约拥有者可以对活跃 lease 执行续租,并生成续租事件消息。 ### 前置条件 - `worker-c` 已成功 `claim` 线程 `THREAD_ID` ### 输入 ```bash inbox --db TMPDIR/coord.db --json renew --agent worker-c --thread THREAD_ID --lease-seconds 600 ``` ### 预期输出 - 命令退出码为 `0` - `thread.status` 保持原状态 - `message.kind == "event"` - `message.summary == "lease renewed"` - `message.payload_json.lease_seconds == 600` ### 断言结论 - `renew` 是在原线程上追加续租事件,而不是重新 claim ## case: renew-rejects-non-owner ### 用例意义 验证非租约拥有者不能续租别人的活跃 lease。 ### 前置条件 - `worker-c` 已成功 `claim` 线程 `THREAD_ID` ### 输入 ```bash inbox --db TMPDIR/coord.db --json renew --agent worker-x --thread THREAD_ID --lease-seconds 600 ``` ### 预期输出 - 退出码为 `20` - JSON 错误码为 `lease_conflict` ### 断言结论 - `renew` 与 `claim` 一样受 lease owner 约束 ## case: renew-rejects-without-active-lease ### 用例意义 验证线程没有活跃租约时,`renew` 会明确失败。 ### 前置条件 - 已存在线程 `THREAD_ID` - 该线程当前没有活跃 lease ### 输入 ```bash inbox --db TMPDIR/coord.db --json renew --agent worker-c --thread THREAD_ID --lease-seconds 600 ``` ### 预期输出 - 退出码为 `30` - JSON 错误码为 `invalid_state` ### 断言结论 - `renew` 依赖已有活跃租约 - 没有 lease 属于状态错误,不是 not-found