fix: thread/unarchive 走已归档解析(--archived 列表)

probe9 实测:thread/archive 200 后 thread/unarchive 稳定 404。
根因是 #103 时代的逻辑 bug:unarchive 走普通解析,普通
thread-list 不传 --archived 时只回非归档 thread,刚归档的
thread 永远解析不到。修法只改服务端:_list_task_threads 加
archived 模式(传 --archived,home×provider 穷尽不变),
_resolve 与 _pick_latest_thread 加归档开关,_task_thread_mutate
加 resolve_archived 参数只供 unarchive;rename/archive/compact
仍走非归档解析。生产只读验证:同一 worktree 普通列表 0 条、
archived 列表恰好 1 条(probe9 归档的 thread),其 archived
字段为 None。
This commit is contained in:
host committed 2026-10-28 06:10:02 +08:00
1 parent f5d6d6b9f0
commit 5fd4e23b68
3 files changed
+207 -17

No files matched your search

+21
View File
@@ -61,3 +61,24 @@
- 新测试 9 个:`cloud/tests/test_thread_resolve.py`
(CLI 参数位置、共享 home 读取、回退顺序、空→404、
host.py 失败→502)。
## 后续:unarchive 归档解析
探针 probe9 发现:thread/archive 200 后 thread/unarchive
稳定 404。根因是 #103 时代的逻辑 bug:unarchive 走普通
解析,普通 thread-list 不传 --archived 时只回非归档
thread,刚归档的 thread 永远解析不到。修法(只改服务端):
- `_list_task_threads(task, archived=False)`:archived 为真
时传 `--archived`,只列已归档 thread;home×provider 穷尽
回退不变。生产只读验证:同一 worktree 普通列表 0 条、
archived 列表恰好 1 条(即 probe9 归档的 thread),且其
archived 字段为 None。
- `_resolve_task_thread(task, archived=False)` 与
`_pick_latest_thread(threads, include_archived=False)`:
归档模式下不跳过显式 archived 条目。
- `_task_thread_mutate(..., resolve_archived=False)`:只供
unarchive;rename/archive/compact 仍走非归档解析。
- 新测试 4 个:`cloud/tests/test_thread_unarchive.py`
(--archived 透传、普通解析 404 而归档解析命中、pick
归档开关、unarchive 调 CLI 时解析模式与 provider 正确)。