From 6254573a8bb99e7c68fbe52f1e419b2ce8e9cdbe Mon Sep 17 00:00:00 2001 From: Eli Ma Date: Thu, 24 Sep 2026 00:21:40 +0800 Subject: [PATCH] docs(plan): use nextest groups and hand off to B3-00 Drop --test-threads=1 from Session Capture verification. Mark SCAP-01 remote-pending after PR #519, and open B3-00 now that the runtime.rs mutex is clear. Signed-off-by: Eli Ma --- docs/development/plan/plan-20260925.md | 27 +++++++++++++------------- docs/development/plan/plan-long.md | 2 +- docs/development/plan/plan-status.md | 16 +++++++-------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/docs/development/plan/plan-20260925.md b/docs/development/plan/plan-20260925.md index b3bac7130..71681afb0 100644 --- a/docs/development/plan/plan-20260925.md +++ b/docs/development/plan/plan-20260925.md @@ -129,6 +129,7 @@ SCAP-02 追加的行不改兄弟计划的任务卡正文,也不代替它们已 | 2026-09-23 | 用户指示:忽略 Hermes | 删除 `DEFER-SCAP-01`、`DEP-SCAP-02`、`GAP-SCAP-04`。这三个 ID 废弃,不再复用。R7 双 PASS 不覆盖本行 | 无 | 成功定义、依赖表、延后项、plan-status、plan-long | | 2026-09-23 | 用户指示:关联四份采集计划并对齐 Entire | 把前置句写入 plan-20260902/04/05/11,并把 B3-00 互斥写入 plan-20260907。关系表第二格改为 `DEP-SCAP-01/03/04`,第三格仍是前置句。功能对齐节说明 `Transition` 不写 checkpoint | 无 | 四份采集计划、plan-20260907、本文件 AC、plan-status | | 2026-09-23 | Codex R8 FAIL(P1×1);Claude R8 PASS | SCAP-02 改为核对 `fba6cbc` 已写入的行。缺行才补,不追加第二份 | 无 | SCAP-02、Phase 0 | +| 2026-09-24 | 用户指示:nextest 分组;不等待发布开下一卡 | VER 与 T-1 全量去掉 `--test-threads=1`,外资源互斥改走 `.config/nextest.toml` 的 `external` 分组。SCAP-01 C 组已落地(PR #519 / `v0.23.55`),Acceptance=`remote-pending`;DEP-SCAP-04 在 C 组落地后放开 B3-00 写 `runtime.rs`,D 组证据异步跟踪 | 无 | SCAP-01 VER/C、plan-status、B3-00 | ## 已决议设计决策 @@ -305,7 +306,7 @@ SCAP-01 不调用 SCAP-02 的代码。顺序的含义是:兄弟计划先写上 **Task type:** `handoff` -**Lifecycle / Acceptance:** `in-progress` / `locally-accepted` +**Lifecycle / Acceptance:** `in-progress` / `remote-pending` **Description:** 核对四份采集计划的关系表、修订历史、`plan-20260907` 的互斥行,以及 `plan-status.md` 的三个现状单元格。这些行已在 `fba6cbc` 写入。缺了才补一行。已经各出现一次时不要再追加,否则前置句的「恰好一次」核对会失败。不改它们的任务卡。这是本计划唯一的移交轴。 @@ -392,9 +393,7 @@ G-03 对关系表按整行计,不按单元格计。上面 13 条 AC 就是 13 **Task type:** `implementation` -**Lifecycle / Acceptance:** `in-progress` / 空 - -**Description:** 实现 ADR-SCAP-01,并让 `ingest_agent_traces_payload_with_scope` 使用它。捕获结果与替换前相同。这是本计划唯一的代码轴。 +**Lifecycle / Acceptance:** `in-progress` / `remote-pending` **Out of scope:** @@ -417,7 +416,7 @@ G-03 对关系表按整行计,不按单元格计。上面 13 条 AC 就是 13 | SessionEnd 回归 | `ingest_session_end_writes_checkpoint_when_repo_path_provided`(`:4362`) | | SubagentEnd 回归 | `tests/agent_lifecycle_event_test.rs:593` `subagent_end_materializes_distinct_subagent_scope_checkpoint` | -**判据规范(非计数正文):** 下列命令是 VER 的正文。零命中的 nextest 过滤器必须非 0 退出。每个 nextest 命令的摘要必须包含 `1 passed`。 +**判据规范(非计数正文):** 下列命令是 VER 的正文。零命中的 nextest 过滤器必须非 0 退出。每个 nextest 命令的摘要必须包含 `1 passed`。外资源互斥由 `.config/nextest.toml` 的 `external` 分组(`max-threads = 1`)承担,命令**不得**再加 `--test-threads=1`。分组过期时先 `sh tests/NEXTEST_GROUPS.sh`。 **内部文档固定句:** @@ -443,15 +442,15 @@ decide 不读取 SessionPhase,也不复制 Entire 的 git session 存储。 **Verification:** -- [ ] `test -f .env.test || cp .env.test.example .env.test; source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::decide_matches_adr_matrix)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::runtime_checkpoint_kind_matches_are_gone)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::runtime_keeps_owner_exemption_and_stopped_at)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::no_checkpoint_when_repo_path_missing)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::runtime::tests::ingest_turn_end_writes_committed_checkpoint)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::runtime::tests::ingest_session_end_writes_checkpoint_when_repo_path_provided)' --no-tests=fail --test-threads=1` -- [ ] `source .env.test && cargo nextest run --test agent_lifecycle_event_test -E 'test(=subagent_end_materializes_distinct_subagent_scope_checkpoint)' --no-tests=fail --test-threads=1` +- [ ] `test -f .env.test || cp .env.test.example .env.test; source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::decide_matches_adr_matrix)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::runtime_checkpoint_kind_matches_are_gone)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::runtime_keeps_owner_exemption_and_stopped_at)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::no_checkpoint_when_repo_path_missing)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::runtime::tests::ingest_turn_end_writes_committed_checkpoint)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::runtime::tests::ingest_session_end_writes_checkpoint_when_repo_path_provided)' --no-tests=fail` +- [ ] `source .env.test && cargo nextest run --test agent_lifecycle_event_test -E 'test(=subagent_end_materializes_distinct_subagent_scope_checkpoint)' --no-tests=fail` - [ ] `f=docs/development/internal/session-capture.md; for s in 'AgentTraces 的 session_state 与 checkpoint 类别只来自 session_capture::decide。' 'transition_phase 只服务 HookTarget::AiIntent 的 session_phase,本文件不修改它。' 'decide 不读取 SessionPhase,也不复制 Entire 的 git session 存储。' '本计划不编辑 docs/development/tracing/agent.md。'; do if rg -n -F "$s" "$f" >/dev/null; then :; else rc=$?; test "$rc" = 1 && exit 1; exit "$rc"; fi; done` -- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::stale_session_end_only_comment_is_gone)' --no-tests=fail --test-threads=1` +- [ ] `source .env.test && cargo nextest run --lib -E 'test(=internal::ai::hooks::session_capture::tests::stale_session_end_only_comment_is_gone)' --no-tests=fail` - [ ] `names="$(libra diff --cached --name-only)" || exit 1; printf '%s\n' "$names" | while IFS= read -r p; do case "$p" in docs/commands/*|docs/commands/zh-CN/*) echo "FAIL $p"; exit 1 ;; esac; done || exit 1; printf '%s\n' "$names" | rg -F 'src/internal/ai/hooks/session_capture.rs' >/dev/null` `runtime_checkpoint_kind_matches_are_gone`(new)对 `include_str!("runtime.rs")` 断言:下面两段不出现;`let new_state = match event.kind` 不出现;`decide(event.kind).session_state` 出现;`decide(event.kind).checkpoint` 出现。这同一条命令覆盖 AC 2 与 AC 3。waiver 门「upsert 接线」与「checkpoint 接线」都指向这条命令。 @@ -513,7 +512,7 @@ decide 不读取 SessionPhase,也不复制 Entire 的 git session 存储。 **Granularity:** `type=implementation; axis=AgentTraces ingest 改调 decide; recovery=revert 本卡后 runtime 的两处 kind matches! 恢复; complete=yes; self-contained=yes; AC=10/8@EX-SCAP-01; VER=10/8@EX-SCAP-01; landing=1; prod-files=3; scope=S; deps=SCAP-02; writeset=序列化于 DEP-SCAP-03; release=independent; split-from=N/A; exception=EX-SCAP-01` -**C 组**按 ER-04 第 ①–⑨ 步。本卡命中 T-1,收口测试是 `source .env.test && source .env.live-test && cargo nextest run --all --no-fail-fast --retries 2`。`gh release create` 属于 C 组。 +**C 组**按 ER-04 第 ①–⑨ 步。本卡命中 T-1,收口测试是 `source .env.test && source .env.live-test && cargo nextest run --all --no-fail-fast --retries 2`(使用 `.config/nextest.toml` 分组,不加 `--test-threads=1`)。`gh release create` 属于 C 组。 **D 组:** diff --git a/docs/development/plan/plan-long.md b/docs/development/plan/plan-long.md index 2826dea8f..fd97e9849 100644 --- a/docs/development/plan/plan-long.md +++ b/docs/development/plan/plan-long.md @@ -722,7 +722,7 @@ MEM-03 → MEM-04;LR-09;LR-10;MEM-05 / AG-ATTR 按需;MEM-06(并行协 | 日期计划 | 主要归属 | 当前状态 | 说明 | |---|---|---|---| -| [`plan-20260925.md`](plan-20260925.md) | B(Session Capture 决策中层) | 执行中 | 把 AgentTraces ingest 的 `agent_session.state` 与 checkpoint 类别收成 `session_capture::decide`。OpenCode、Codex、Claude Code、Pi 计划已登记该前置。SCAP-02 已核对。SCAP-01 实现中 | +| [`plan-20260925.md`](plan-20260925.md) | B(Session Capture 决策中层) | 执行中 | SCAP-02 / SCAP-01 `remote-pending`(PR #519 / `v0.23.55`)。D 组异步。下一卡已切到 B3-00 | | [`plan-20260923.md`](plan-20260923.md) | Cross-cutting CLI completion | 已排期 | Cover implemented Git-compatible and Libra-only capabilities; static acceptance before opt-in dynamic completion. CP-00..20 pending; capability inventory may add bounded cards. No implementation claimed. | | [`plan-20260708.md`](plan-20260708.md) | A(LR-04/05/09 相邻基础) | 已完成 | 主线记为历史完成,活跃残留另行排期;不关闭对应 LR | | [`plan-20260713.md`](plan-20260713.md) | B(LR-06/07/10 捕获前置) | 已完成 | 不覆盖 seal/preflight/capsule | diff --git a/docs/development/plan/plan-status.md b/docs/development/plan/plan-status.md index a657e38b3..be38c3d37 100644 --- a/docs/development/plan/plan-status.md +++ b/docs/development/plan/plan-status.md @@ -20,7 +20,7 @@ | 计划 | 类别 | 状态 | 一句话进度(卡片状态) | |---|---|---|---| -| [`plan-20260925.md`](plan-20260925.md) | B(Session Capture 决策中层) | 执行中 | SCAP-02 `in-progress` / `locally-accepted`。SCAP-01 `in-progress`。R9 双 `PASS`。B3-00 仍 `pending`,未与本卡同时开工 | +| [`plan-20260925.md`](plan-20260925.md) | B(Session Capture 决策中层) | 执行中 | SCAP-02 / SCAP-01 均为 `in-progress` / `remote-pending`。C 组已落地(PR #519,`v0.23.55`)。D 组异步。写集互斥已放开,B3-00 可开工 | | [`plan-20260923.md`](plan-20260923.md) | Cross-cutting (implemented CLI completion) | 已排期 | English static-first rewrite; CP-00..20 pending; CP-00 inventory precedes implementation approval; CP-06 static acceptance blocks all dynamic work; no implementation/release claimed | | [`plan-20260918.md`](plan-20260918.md) | 横切(`add` 命令收口) | **实施中** | OI-01..03 `done/complete`(v0.23.4/5/6);**OI-04 `in-progress`(v0.23.7)**;OI-05..WT-07 `pending` | | [`plan-20260919.md`](plan-20260919.md) | 横切(global 配置迁 XDG) | 实施中 | GCX-01 `done/complete`(v0.23.1);GCX-02/03/04 于 2026-09-22 完成实现+测试+文档,`locally-accepted`(版本 bump 与 D 组发布未执行;本轮按操作者指示未调用 Codex review) | @@ -32,7 +32,7 @@ | [`plan-20260912.md`](plan-20260912.md) | B(memory boundary) | **已收口** | MB-01..MB-05、MB-07/08、MB-10/11 全部 `done/complete`(v0.23.37/.39/.40/.41/.42/.43/.44/.45/.46,各卡 ER-14 全量绿、D-MB-STD 远端 evidence 绿);MB-06/09/12 墓碑 `done`(无对应子命令);EX-MB-01/02(G-03)与 EX-MB-03(ER-07 签名)已登记;使用者 2026-09-21 双评审豁免已登记;完成判据全数勾选 | | [`plan-20260911.md`](plan-20260911.md) | B(pi capture / hook boundary) | 未启动 | PI-01..06 全部 `pending`;Claude Code 429 未给出 verdict,**禁止开工** | | [`plan-20260910.md`](plan-20260910.md) | 横切(数据库迁移作用域) | **已收口** | MIG-00..MIG-06、MIG-R01..R03 全部 `done/complete` | -| [`plan-20260907.md`](plan-20260907.md) | 横切(BLAKE3 object format) | 未启动 | B3-00..B3-17 全部 `pending` | +| [`plan-20260907.md`](plan-20260907.md) | 横切(BLAKE3 object format) | 执行中 | B3-00 开工。SCAP-01 C 组已落地,`runtime.rs` 互斥已放开 | | [`plan-20260906.md`](plan-20260906.md) | 横切(安全扫描) | 未启动 | SC-01..SC-07、SC-CLOSE 全部 `pending` | | [`plan-20260905.md`](plan-20260905.md) | B(Claude hooks/reasoning) | 未启动 | CC-00..CC-06 全部 `pending` | | [`plan-20260904.md`](plan-20260904.md) | B(Codex reasoning) | 未启动 | CX-00..CX-30(35 卡)全部 `pending` | @@ -223,9 +223,9 @@ SBX-01..05 `done/locally-accepted`;**发布步按 DEFER-SBX-06 正式延后** ## 四、当前执行指针(next action) -- **当前正在执行:** `plan-20260925` SCAP-01(发布者:本会话执行该卡的 Agent)。远端已发布 `v0.23.54`,本卡版本面是 `0.23.55`。 -- **SCAP-01 与 B3-00:** B3-00 保持 `pending`,不与本卡同时 `in-progress`。 -- **下一步(本卡发布之后):** `issues/474` 的 `CL-04`..`CL-08` 已 `locally-accepted`,按窗口依次 bump。 +- **当前正在执行:** `plan-20260907` B3-00(发布者:本会话执行该卡的 Agent)。`plan-20260925` SCAP-01 已 `remote-pending`(PR #519 / `v0.23.55`,D 组异步)。 +- **SCAP-01 与 B3-00:** SCAP-01 的 C 组已落地,`runtime.rs` 写集互斥放开;B3-00 可开工。 +- **下一步(SCAP D 组落地后):** 把 SCAP-01 / SCAP-02 标成 `done` / `complete`。`issues/474` 的 `CL-04`..`CL-08` 仍按窗口排队。 - **并行窗口(不在本执行指针):** `issues/476` WT-03 仍等 DEP-WT-08;`plan-20260918` 其余 add 卡、`plan-20260819` M2 仍登记为实施中,但不抢本卡的 `fsck.rs` 写集。 --- @@ -240,7 +240,6 @@ SBX-01..05 `done/locally-accepted`;**发布步按 DEFER-SBX-06 正式延后** | [`plan-20260819`](plan-20260819.md) | M2-16A | #456 memory 模块正向移植到 R30 seam(审计已排除已删 Code SCC) | 无 | **未过**(r01–r37:**r37 同版雙 PASS 達成(2026-09-22,凍結 sha256 `4fbaf4bd…`)** — Codex P0/P1/P2=0、Claude P0/P1=0;實現門已開啟。殘餘 P2(不阻塞):review log 輪次回填、`EX-M2-07` minor 重複計數(41→39)、`tests/INDEX.md` 20→22 描述刷新、未協商 minor 收斂規則 — 於 M2-16C 卡片修訂時一併處理) | **DEP-M2-ENV-01**:需已初始化 Libra checkout(`.libra/`)與 `.env.test`/`.env.live-test`;缺任一项即 `blocked` | ❌ 禁止开工(等双 PASS) | | [`plan-20260919`](plan-20260919.md) | GCX-02 | legacy 全局 config DB 首次使用自动迁移(锁+快照+校验+原子提交) | GCX-01(已 `done/complete`) | **本轮按操作者指示未评审** | DEP-GCX-02:与 plan-20260918 串行写 `COMPATIBILITY.md`/网站页(0918 未开工,写集 clean) | ✅ 已实现并本地验收(`locally-accepted`,未发布) | | [`plan-20260919`](plan-20260919.md) | GCX-04 | 用户级 hooks 文件路径对齐 XDG(macOS 只读回退,实现泛化到任何原生配置目录不同的平台) | GCX-01(已 `done`) | **本轮按操作者指示未评审** | DEP-GCX-01 不满足(本机无 `../libra-backend`),仅阻塞网站页;发布队列 GCX-02→GCX-03→GCX-04 | ✅ 已实现并本地验收(`locally-accepted`,未发布) | -| [`plan-20260907`](plan-20260907.md) | B3-00 | pin `git-internal` 0.9.0 并引入 `object_format` 事实源 | 无 | **双评审已 PASS**(Grok R2 / Claude R40 / Codex R40) | 外部无;开工需 `cp .env.test.example .env.test` | ✅ | | [`plan-20260912`](plan-20260912.md) | MB-01 | 有界 mega2 tree transport 与 wire validation | 无 | **双评审已 PASS**(Codex R7 / Claude R5) | DEP-MB-01:mega2 `a1293686` tree API pin 现场重核(2026-09-21 已前推) | ✅ `done/complete`:v0.23.37(84f6bd8);codeql + release.yml 8/8 jobs 全绿;CDN 产物 HTTP 200 | | [`plan-20260916`](plan-20260916.md) | CAP-01 | Agent Capture wire types、URL、uid、transport trait | 无 | **双评审已 PASS**(Codex R3 / Claude R3) | DEP-CAP-01:monoengine `2b8f365` capture HTTP pin 重核(ER-CAP-02) | ⚠️ 需重核 DEP-CAP-01 | | [`plan-20260913`](plan-20260913.md) | FL-00 | 核实 Media 前提与热路径(audit,no-release) | 无 | 联合 review 已 PASS(U2 `VERDICT: PASS`) | DEP-FL-04:**plan-20260907 须完整收口**(未启动 → 硬门) | ❌ 阻塞(等 9/07 收口) | @@ -249,7 +248,8 @@ SBX-01..05 `done/locally-accepted`;**发布步按 DEFER-SBX-06 正式延后** | [`plan-20260906`](plan-20260906.md) | SC-01 / SC-02(可并发) | SC-01 `base.yml` 最小权限加固;SC-02 会话入口 id 守卫 | 无 | **未定稿**(R2 PASS 已作废;R22 `FAIL`) | SC-04 受 DEP-SC-01/04/05/06;SC-07 受 DEP-SC-07 | ❌ 禁止开工 | | [`plan-20260902`](plan-20260902.md) | OG-00 | opencode 1.18.29 Hook/export 契约探测 | 无 | **未取得双 PASS**(Claude 限额,Codex 仍在 FAIL 循环) | 无(Phase 1 与 RG 六卡解耦) | ❌ 禁止开工 | | [`plan-20260911`](plan-20260911.md) | PI-01 | Repository-only `agent_kind=pi` migration | 无(DEP-PI-04 已满足:9/10 已收口) | **Claude Code 429 无 verdict,禁止开工** | DEP-PI-01/03 | ❌ 禁止开工 | -| [`plan-20260925`](plan-20260925.md) | SCAP-01 | AgentTraces ingest 改调 `decide`。发布者是本会话执行该卡的 Agent。B3-00 仍 `pending` | SCAP-02(登记已核对) | R9 双 `PASS` | 与 B3-00 不得同时 `in-progress` | 执行中 | +| [`plan-20260925`](plan-20260925.md) | SCAP-01 | AgentTraces ingest 改调 `decide`。PR #519 已合并,`v0.23.55` 已触发 | SCAP-02(登记已核对) | R9 双 `PASS` | D 组异步;写集互斥已放开 | `remote-pending` | +| [`plan-20260907`](plan-20260907.md) | B3-00 | pin `git-internal` 0.9.0 并引入 `object_format` 事实源 | 无 | **双评审已 PASS**(Grok R2 / Claude R40 / Codex R40) | SCAP-01 C 组已落地,互斥放开 | ✅ 可开工 | | [`issues/470`](issues/470.md) | FM-01 | 共享写入原语与 `restore` 系物化 | 无 | 尚未 Codex review | 关闭依赖 plan-20260918 FM-03/04(DEP-FM-06/07) | ❌ 禁止开工 | | [`issues/473`](issues/473.md) | IN-01 / IN-03 / IN-02 | 空模板自引用防护 / 存储路径前置检测 / 换格式 reinit fail-closed | 无 | 尚未 Codex review | 无 | ❌ 禁止开工 | | [`issues/474`](issues/474.md) | CL-03 | 其余历史遍历尊重 shallow 边界 | CL-02 | **R6 `PASS`** | 无 | ✅ `locally-accepted`(C 组 `v0.23.49`) | @@ -325,7 +325,7 @@ DEFER-AD-01..16:Git advice、ignored 相对路径、`add -u --ignore-missing` | DEP-CC-05 | 跨计划前置 | plan-20260905 CC-02..06 依赖 plan-20260904 全部非延后卡完成 | plan-20260904 未启动 | | DEP-SCAP-01 | 跨计划前置 | 改变 AgentTraces ingest 的 state 字符串或 checkpoint 类别的卡,等待 plan-20260925 SCAP-01 `done`/`complete` 后改 `decide`。import 与 session stop/resume 不在此列 | 已写入 plan-20260902/04/05/11 关系表 | | DEP-SCAP-03 | 跨计划写集 | OG-11、OG-05、CX-06、CX-28、CX-02、CX-07、CX-19、CX-09、CX-26、CC-02、CC-05、PI-04 在 SCAP-01 complete 前不得 in-progress | 已写入同一关系表的文件锁名单 | -| DEP-SCAP-04 | 跨计划写集互斥 | plan-20260925 SCAP-01 与 plan-20260907 B3-00 不得同时 in-progress。先完成的一方之后,另一方再改 runtime.rs | 与 B3-00 互斥已写入 plan-20260907 | +| DEP-SCAP-04 | 跨计划写集互斥 | plan-20260925 SCAP-01 与 plan-20260907 B3-00 不得同时改 `runtime.rs`。SCAP-01 C 组落地后互斥放开 | SCAP-01 已 `remote-pending`;B3-00 可开工 | | DEP-SBX-06 | 内部发布延后 | plan-20260830 SBX 发布步 | 未就绪 | | DEP-05 | 内部前置(已承接) | plan-20260822 v1-boundary runtime cutover(branch/sequencer/worktree repair/v1 op restore → v2 middleware);由 OL-15A 承接,OL-15 依赖其完成 | PR #503 OL-15A 已完成 | | DEP-WT-09 | 跨计划前置 | issues/476 关闭依赖 plan-20260918 WT-05..07 完成 | plan-20260918 未到 WT |