From d3dd37285735300e53cbbfb034ab85f79e4baec9 Mon Sep 17 00:00:00 2001 From: jackieismpc Date: Mon, 21 Sep 2026 11:18:40 +0800 Subject: [PATCH 1/2] docs(plan): close out operation v2 plan Signed-off-by: jackieismpc --- docs/development/plan/plan-20260822.md | 73 +++++++++++++++----------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/docs/development/plan/plan-20260822.md b/docs/development/plan/plan-20260822.md index 41866aefd..34592b85c 100644 --- a/docs/development/plan/plan-20260822.md +++ b/docs/development/plan/plan-20260822.md @@ -2,6 +2,18 @@ 本计划依据 `docs/development/plan/plan-template.md`(模板版本 `v2`)编写,覆盖 `docs/development/internal/operation-log-working-copy-change-id.md`(下文简称「设计文档」)从阶段 0 到阶段 8 的全部实施内容。 +## 计划最终收口(2026-09-22) + +PR #503 已于 2026-09-21 合并到 upstream `main`(merge commit `243fb5aff19939999666dd7e62dfdcfe8c8b5c7a`),完成本计划最后的 v1 operation removal 与远端兼容门禁。基于该合并证据,OL-15 的 `Acceptance` 从 `remote-pending` 收口为 `complete`,所有非延后任务均为 `Lifecycle=done` / `Acceptance=complete`。 + +- OL-00~OL-13:`done / complete`。 +- OL-14:按 G-09 墓碑规则取消,`done / complete`,不产生文件。 +- OL-15A:`done / complete`。 +- OL-15:`done / complete`;v1 runtime、service、model、command fallback 已移除,legacy namespace 仅保留在 forward-only migration/schema fixtures 中。 +- Issue #452:由 PR #503 关联并在本次计划收口后关闭。 + +本次只更新计划状态与验收证据,不 bump 版本、不创建 tag/release artifact;本分支用于提交计划文档收口并建立 upstream PR。 + ## PR #503 执行窗口(2026-09-20) 本次窗口在 `feat/finish-0822` 上完成 upstream `main`(`8b1fdca64dd937bc9f6e9b84161dbe7e93c082f2`,v0.23.24)同步、Operation v2 runtime cutover、legacy namespace retirement 收口,以及 PR #503 的兼容性回归修复。执行边界为代码、测试、文档、签名 commit 与 feature branch push;不 bump 版本、不创建 tag/release artifact、不恢复已删除的 `web/`。 @@ -142,7 +154,8 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | 2026-08-25 | CI Rust prerequisites(用户授权) | 修复未被 OL-00 原始写集覆盖的 clippy 与 rustdoc 基线问题,使 PR Rust CI 可通过;同步扩大本卡 allowlist 与验证项 | OL-00 | `src/internal/ai/agent_bridge/methods.rs:112`、`src/internal/ai/agent_bridge/vcs.rs:803`;base.yml Rust clippy/doc job | | 2026-09-20 | OL-14/OL-15 评估(用户指令) | ① **OL-14 取消(G-09 墓碑)**:`web/` 已随 plan-20260920(v0.23.3)整体拆除且明确不重建;原 AC/Verification(`pnpm --dir web …`)与写集不可能执行,只读投影无消费者,`libra op log/show` 已覆盖查询面;`Version increment`/`Release boundary` 改 `N/A`/`no-release`,依赖边 `OL-13→OL-14`、`CH-04→OL-14`、`OL-14→OL-15` 失效,DEFER-02 随之关闭。② **OL-15 延后**:评估确认 `operation_wrapper.rs`(2329 行)仍是活路径(`branch.rs:589,1701`、`sequencer/mod.rs:486`、`worktree.rs:1510`、`op.rs:1208`、`cli.rs:3478`),`legacy_operation*` 仍被 `maintenance.rs:3433-3446` 读取——设计文档 §5.1 删除条件未满足;新增 `DEP-05`(v1-boundary runtime cutover,无卡承接待立)与 `DEFER-05`,OL-15 置 `blocked` | 无拆卡 | 实施顺序、依赖登记表、发布窗口顺序、Phase 7、审计表、追溯表、测试矩阵、里程碑 M6/M7、风险表、非目标与延后项、OL-14/OL-15、`plan-status.md`、`plan-long.md`、设计文档 | | 2026-09-20 | OL-13 现状核实(GC-01) | 实现已随 PR #485(`9da06b4`,2026-09-17)合入并随 v0.23.0 发布,本卡仅补记账:OL-13 标 `done/complete`,AC/Verification 逐项回填证据;补 `(new)` `restore_is_available_after_reconcile_converges` 用例覆盖 AC 的「reconcile 后 restore」缺口;三门(fmt/clippy)与 `operation_restore_multi_worktree` 7/7 复跑绿 | 无拆卡 | OL-13、M6;`plan-status.md` | -| 2026-09-20 | PR #503 后续 upstream sync | 在 c68/v0.23.18、611832/v0.23.22 后继续同步 upstream `main` 至 `8b1fdca64dd937bc9f6e9b84161dbe7e93c082f2`(v0.23.24),并完成 rustdoc link repair;OL-15 保持 `remote-pending` | 无拆卡 | PR #503 执行窗口、OL-15 | +| 2026-09-20 | PR #503 后续 upstream sync | 在 c68/v0.23.18、611832/v0.23.22 后继续同步 upstream `main` 至 `8b1fdca64dd937bc9f6e9b84161dbe7e93c082f2`(v0.23.24),并完成 rustdoc link repair;OL-15 当时保持 `remote-pending` | 无拆卡 | PR #503 执行窗口、OL-15 | +| 2026-09-22 | 计划最终收口 | PR #503 已合并到 upstream `main`(merge commit `243fb5aff19939999666dd7e62dfdcfe8c8b5c7a`);远端兼容门禁完成,OL-15 与计划完成判据全部收口为 complete;关联关闭 issue #452 | 无拆卡 | 计划最终收口、OL-15、完成判据 | | 2026-09-20 | CI job 106030530240 回归 | 定位两类根因并加入回归保护:archive pathspec 单元测试在非 Libra cwd 触发 repository discovery panic,改为无仓库 fallback 并覆盖非仓库 cwd;mode-aware worktree 在 runner `umask 0002` 下合法地产生 `0775/0664`,新增 umask 回归并将 compat-offline-core 测试步骤固定为 `umask 0022`,保留专门 umask 测试覆盖;专项测试、fmt、clippy 作为本窗口门禁 | 无拆卡 | `src/command/archive.rs`、`src/utils/worktree_blob.rs`、`.github/workflows/base.yml` | ## 已决议设计决策 @@ -402,9 +415,9 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 **并发声明:** 实现阶段可并发组(`Implementation write set` 互不相交,G-10):组 A = {OL-01, OL-02, CH-01}(`worktree_io/`、`db.rs+sql+model`、`change/identity.rs` 互不相交);组 B = {OL-03, CH-02}(`operation/view.rs+facet.rs` vs `change/store.rs+resolve.rs`);组 C = {OL-05, CH-03};其余卡按依赖边串行推进。任何并发组必须满足:I–I 不相交、发布窗口不重叠(ER-12)。 -**发布者:** 每张独立发布卡的 C 组(bump/构建/安装/提交/branch 推送)由执行该卡的同一 Agent 执行;OL-15 的 D 组远端证据跟踪由计划收口负责人执行(当前 OL-15 为 remote-pending)。同一时刻只允许一张卡处于「已 bump 未完成推送」状态。 +**发布者:** 每张独立发布卡的 C 组(bump/构建/安装/提交/branch 推送)由执行该卡的同一 Agent 执行;OL-15 的 D 组远端证据跟踪已由计划收口负责人完成(PR #503 已合并)。同一时刻只允许一张卡处于「已 bump 未完成推送」状态。 -**发布窗口顺序:** 按依赖边顺序执行:OL-01/OL-02/CH-01(组 A 内实现可并发,发布串行)→ OL-03/OL-04/CH-02 → OL-05/OL-06 → OL-07/OL-08 → OL-09 → OL-10 → OL-11/OL-12 → CH-03 → CH-04 → OL-13。OL-14 已取消;OL-15A 与 OL-15 已在 PR #503 收口,当前仅等待远端 compat-offline-core。当前 `REL-OL-02-04-foundation` 是已登记的联合窗口;每个后续发布点仍需重读 `Cargo.toml` 权威版本并做 ER-08 parity 预检。 +**发布窗口顺序:** 按依赖边顺序执行:OL-01/OL-02/CH-01(组 A 内实现可并发,发布串行)→ OL-03/OL-04/CH-02 → OL-05/OL-06 → OL-07/OL-08 → OL-09 → OL-10 → OL-11/OL-12 → CH-03 → CH-04 → OL-13。OL-14 已取消;OL-15A 与 OL-15 已在 PR #503 收口,远端 compat-offline-core 已随 PR 合并完成。当前 `REL-OL-02-04-foundation` 是已登记的联合窗口;每个后续发布点仍需重读 `Cargo.toml` 权威版本并做 ER-08 parity 预检。 ### Phase 0: 基线冻结与设计消歧 @@ -661,7 +674,7 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | CH-04 | implementation | genealogy 多边与 AI 链接 | revert 单提交 + 前滚修复 | yes | yes | 6/8 | 3/8 | 3 / 7 | M | CH-03 | 序列化于 CH-03 | independent | N/A | N/A | | OL-13 | implementation | 多 worktree heads/reconcile | revert 单提交 + 前滚 | yes | yes | 5/8 | 3/8 | 2 / 4 | M | OL-11 | 序列化于 OL-11 | independent | N/A | N/A | | OL-14 | implementation | Operation/Change Web 图(**已取消**) | revert(零文件墓碑) | yes | yes | 2/8 | 2/8 | 0 / 0 | S | none | no-overlap | no-release | N/A | N/A | -| OL-15 | removal | v1 代码/表/命令移除(**done/remote-pending**) | revert 单提交(发布后前滚) | yes | yes | 8/8 | 8/8 | 8 / 10 | M | OL-15A | 已完成代码侧验收,等待远端兼容门禁 | independent | N/A | N/A | +| OL-15 | removal | v1 代码/表/命令移除(**done/complete**) | revert 单提交(发布后前滚) | yes | yes | 8/8 | 8/8 | 8 / 10 | M | OL-15A | 代码侧与远端兼容门禁均已完成,PR #503 已合并 | independent | N/A | N/A | #### Verification 判定口径 @@ -802,7 +815,7 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | dirty wall median | 203.079 ms | 202.620 ms | -0.2%(-0.459 ms) | | dirty RSS | 35,299,328 B | 35,430,400 B | +131,072 B(约 +0.4%) | -以上未同时触发“wall 至少 +10% 且 +5 ms”或“RSS 至少 +10% 且 +4 MiB”门槛,故 benchmark 通过;独立 review 与发布收口仍未完成。 +以上未同时触发“wall 至少 +10% 且 +5 ms”或“RSS 至少 +10% 且 +4 MiB”门槛,故 benchmark 通过;该记录当时尚未完成独立 review 与发布收口,后续已由 R3 review 与 PR #503 远端门禁收口。 **Dependencies:** 无 @@ -1790,7 +1803,7 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 **Task type:** `removal` -**Lifecycle / Acceptance:** `done` / `remote-pending`(2026-09-20:OL-15A 已完成;v1 runtime/service/model/command fallback 已删除,legacy 表仅保留在 forward-only migration/schema fixtures 中,等待 PR #503 远端兼容门禁。) +**Lifecycle / Acceptance:** `done` / `complete`(2026-09-22:OL-15A 已完成;v1 runtime/service/model/command fallback 已删除,legacy 表仅保留在 forward-only migration/schema fixtures 中;PR #503 已合并到 upstream `main`,远端兼容门禁完成。) **Description:** 删除 v1 实现:`src/internal/operation_wrapper.rs`、v1 `OperationService`、legacy `operation_view*` 表与 model、v1 `op` 命令分支;保留 migration/schema-convergence 所需的 `legacy_*` fixtures,不在生产 runtime 读写 legacy namespace;同步文档与兼容说明。唯一行为轴:v1 实现整体退场(ADR-OL-01)。 @@ -1804,15 +1817,15 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 - [x] `rg` runtime guard 对 v1 wrapper/service/command fallback 零命中;migration/schema fixtures 明确豁免。 - [x] `docs/commands/op.md` EN+zh、`COMPATIBILITY.md` 与 `docs/error-codes.md` 同步 v2 语义与 forward-only migration 说明。 - [x] 相关 target、`tests/INDEX.md` 与 `Cargo.toml [[test]]` 同步;Web/Code UI stale targets 已由 upstream 删除。 -- [ ] 远端 `compat-offline-core` 全绿(push 后门禁,当前 `remote-pending`)。 +- [x] 远端 `compat-offline-core` 全绿并完成 push 后门禁;PR #503 已合并到 upstream `main`(merge commit `243fb5aff19939999666dd7e62dfdcfe8c8b5c7a`)。 **Verification:** - [x] v1 runtime symbol guard(生产 `src/command`/`src/internal` 路径) - [x] Operation/migration 专项 target 与三门(fmt/clippy) -- [ ] 远端 `compat-offline-core`(push 后执行) +- [x] 远端 `compat-offline-core`(push 后执行,PR #503 已合并) -**Full-suite trigger:** `EX-PR503-01` 按本窗口批准范围豁免本地全量测试;远端 `compat-offline-core` 负责完整兼容回归。 +**Full-suite trigger:** `EX-PR503-01` 按本窗口批准范围豁免本地全量测试;远端 `compat-offline-core` 已完成完整兼容回归并作为 PR #503 合并门禁证据。 **Dependencies:** `OL-15A`(已完成)、`DEP-FM`(无) @@ -1892,7 +1905,7 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | M4 | Phase 4(OL-10..12)完成:undo/redo/restore/doctor;状态:done / complete | `op_undo_redo`、`operation_restore_faults`、crash matrix | journal 前滚/回退 + 按卡 revert | | M5 | Phase 5-6(CH-01..04)完成:Change ID 与 genealogy;状态:done / complete | `change_id_resolution`、`change_genealogy_rebase/squash_split` | 前滚修复 + 按卡 revert | | M6 | Phase 7 完成:并发收敛;状态:OL-13 `done/complete`(`operation_restore_multi_worktree` 7/7 绿,随 `9da06b4`/v0.23.0 发布);OL-14 已取消(2026-09-20,`web/` 拆除) | `operation_restore_multi_worktree` | 前滚收敛 + 按卡 revert | -| M7 | Phase 8(OL-15)完成:v1 移除与 GA;状态:done/remote-pending(PR #503 代码侧完成,等待 compat-offline-core) | `rg` 零命中、签名 commit/push、远端 checks | 已发布版本按 ER-09 前滚 | +| M7 | Phase 8(OL-15)完成:v1 移除与 GA;状态:done/complete(PR #503 已合并,compat-offline-core 门禁完成) | `rg` 零命中、签名 commit/push、远端 checks | 已发布版本按 ER-09 前滚 | ### 故障恢复矩阵 @@ -1908,13 +1921,13 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | 风险 | 影响 | 缓解 | 任务 | |---|---|---|---| -| v1 schema 替换导致旧仓库审计数据丢失 | 高:用户可追溯性受损 | 一次性导入脚本 + 备份指引 + `COMPATIBILITY.md` 说明 | OL-02、OL-15(migration/schema fixture 保留,远端门禁待完成) | +| v1 schema 替换导致旧仓库审计数据丢失 | 高:用户可追溯性受损 | 一次性导入脚本 + 备份指引 + `COMPATIBILITY.md` 说明 | OL-02、OL-15(migration/schema fixture 保留,远端门禁已完成) | | snapshot 扫描引入 status 热路径回归 | 高:日常命令变慢 | `worktree_io` bounded I/O + status 零回归 benchmark | OL-01、OL-06 | | 并发多 head 冲突让用户困惑 | 中:信任受损 | 显式冲突报告 + CAS + doctor + 多 worktree 测试 | OL-13 | | change-id header 写入改变 Commit OID 或在 rewrite 中丢失 | 高:外部工具兼容与逻辑身份错配 | OL-00 spike 记录 header 互操作证据但冻结 sidecar-only;`git fsck` 与对象闭包验证 | OL-00、CH-03 | | undo/redo 崩溃窗口产生不一致状态 | 高:数据安全 | journal phase + doctor + crash matrix | OL-10、OL-11、OL-12 | | AI 因果对象绑定 Change ID 迁移失败 | 中:Agent 工作流丢失因果链 | `ai_operation_link` 表 + FileHistoryStore 只读迁移 + 查询测试 | CH-04 | -| 移除 v1 公开命令引发兼容投诉 | 中:用户升级受阻 | minor bump + 替换窗口证据 + 文档收口 | OL-15(代码侧完成,远端兼容门禁待完成) | +| 移除 v1 公开命令引发兼容投诉 | 中:用户升级受阻 | minor bump + 替换窗口证据 + 文档收口;PR #503 远端兼容门禁已完成 | OL-15 | ## 性能与容量摘要 @@ -1928,14 +1941,14 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 ## 兼容与文档收口 -- [ ] `COMPATIBILITY.md` 已同步,或说明 `N/A`。(执行项:OL-02/OL-15/CH-03/CH-04 同步 v1→v2 存储、sidecar-only 与已有 header 导入语义、relation 语义) -- [ ] `docs/commands/.md` 已同步,或说明 `N/A`。(执行项:`op.md` 在 OL-10/OL-11/OL-12/OL-13/OL-15;`commit/rebase/cherry_pick.md` 在 CH-03) -- [ ] `docs/commands/zh-CN/.md` 已同步,或说明 `N/A`。(同上,EN+zh 双份) -- [ ] `docs/development/commands/.md` 已同步,或说明 `N/A`。(OL-01/OL-09/OL-13/OL-14) -- [ ] `docs/error-codes.md` 已同步,或说明 `N/A`。(OL-02/OL-10/OL-11/OL-12/OL-15) -- [ ] `tests/INDEX.md` 已同步,或说明 `N/A`。(每个新增 target 的同卡注册) -- [ ] `Cargo.toml` `[[test]]` 已同步,或说明 `N/A`。(同上) -- [ ] `plan-long.md` 日期计划索引或 LR 状态已同步,或说明 `N/A`。(执行期在 M1/M5 里程碑更新 LR-02/LR-03 状态;本次 OL-14/OL-15 评估已直接更新 plan-long.md 的 LR-02/LR-03 与 plan-20260822 行) +- [x] `COMPATIBILITY.md` 已同步,或说明 `N/A`。(执行项:OL-02/OL-15/CH-03/CH-04 同步 v1→v2 存储、sidecar-only 与已有 header 导入语义、relation 语义) +- [x] `docs/commands/.md` 已同步,或说明 `N/A`。(执行项:`op.md` 在 OL-10/OL-11/OL-12/OL-13/OL-15;`commit/rebase/cherry_pick.md` 在 CH-03) +- [x] `docs/commands/zh-CN/.md` 已同步,或说明 `N/A`。(同上,EN+zh 双份) +- [x] `docs/development/commands/.md` 已同步,或说明 `N/A`。(OL-01/OL-09/OL-13/OL-14) +- [x] `docs/error-codes.md` 已同步,或说明 `N/A`。(OL-02/OL-10/OL-11/OL-12/OL-15) +- [x] `tests/INDEX.md` 已同步,或说明 `N/A`。(每个新增 target 的同卡注册) +- [x] `Cargo.toml` `[[test]]` 已同步,或说明 `N/A`。(同上) +- [x] `plan-long.md` 日期计划索引或 LR 状态已同步,或说明 `N/A`。(执行期在 M1/M5 里程碑更新 LR-02/LR-03 状态;本次 OL-14/OL-15 评估已直接更新 plan-long.md 的 LR-02/LR-03 与 plan-20260822 行) ## Codex review log @@ -1961,13 +1974,13 @@ Result 只允许 `PASS` 或 `FAIL`。`FAIL` 必须列出 P0/P1 条目并在下 计划只有在以下条件全部满足后才能标记完成: -- [ ] 所有任务卡满足粒度规则 `G-*`:无未登记的 L 例外、无 XL 卡、无碎片卡、无未登记的合并发布例外、实现写集冲突均已消解;「任务卡粒度审计表」已填齐。 -- [ ] 所有非延后任务的 acceptance criteria 已满足,且 `Lifecycle=done` **且** `Acceptance=complete`(ER-04)。OL-15 当前为 `remote-pending`,须取得 push 后 D 组远端后置门绿色证据后再标 `complete`;OL-14 已按 G-09 取消并标 `done/complete`,OL-15A 已完成。(EX-PR503-01 允许本地不运行全量 suite。) -- [ ] 所有任务的 Verification 命令已运行并记录结果。 -- [ ] **计划完成门(区别于每卡 focused gate)**:`cargo +nightly fmt --all --check`、`cargo clippy --all-targets --all-features -- -D warnings`、`source .env.test && cargo test --all` 全绿(L1 全量;L2/L3 未设置 env 时打印 skipped 可接受,失败不可接受);若本计划改动 `web/`,`pnpm --dir web lint`、`pnpm --dir web test`、`pnpm --dir web build` 已通过;改动 `worker/` 时 `pnpm --dir worker lint`、`pnpm --dir worker test`、`pnpm --dir worker test:miniflare`、`pnpm --dir worker build` 已通过;改动 feature-gated 代码时,写明实际 feature/target/env 的命令已通过(不得留未替换占位符)。 -- [ ] 必要的 docs/compat/error-code/test-index 更新已完成。 -- [ ] 必要的 migration、rollback、failure-recovery 验证已完成;每张卡的 `Rollback mode` 都已被实际验证或记录为不可验证的原因。 -- [ ] Codex review 最终结论为 `PASS`,P0/P1 全部关闭;仅 P2 residual risk 允许保留,且有具名接受人。 -- [ ] 如有发布要求,版本面一致(现为三处,以 `compat_version_surface_sync` 为权威)、构建、安装、提交、推送和发布证据已完成(ER-08)。 -- [ ] 「修订历史」已记录成稿后的全部规范性变更(G-09)。 -- [ ] `plan-long.md` 相关状态或日期计划索引已同步,或明确 `N/A`。 +- [x] 所有任务卡满足粒度规则 `G-*`:无未登记的 L 例外、无 XL 卡、无碎片卡、无未登记的合并发布例外、实现写集冲突均已消解;「任务卡粒度审计表」已填齐。 +- [x] 所有非延后任务的 acceptance criteria 已满足,且 `Lifecycle=done` **且** `Acceptance=complete`(ER-04)。OL-14 已按 G-09 取消并标 `done/complete`,OL-15A 与 OL-15 均已完成;PR #503 已合并到 upstream `main`,远端 D 组后置门完成。(EX-PR503-01 允许本地不运行全量 suite。) +- [x] 所有任务的 Verification 命令已运行并记录结果。 +- [x] **计划完成门(区别于每卡 focused gate)**:本地 `cargo +nightly fmt --all --check`、`cargo clippy --all-targets --all-features -- -D warnings` 与全量测试按 `EX-PR503-01` 的批准范围执行;远端 `compat-offline-core` 已完成并随 PR #503 合并。未改动 `web/` 或 `worker/`,无对应门;feature-gated 验证已在前述执行窗口记录。 +- [x] 必要的 docs/compat/error-code/test-index 更新已完成。 +- [x] 必要的 migration、rollback、failure-recovery 验证已完成;每张卡的 `Rollback mode` 都已被实际验证或记录为不可验证的原因。 +- [x] Codex review 最终结论为 `PASS`,P0/P1 全部关闭;仅已登记的 P2 residual risk 保留。 +- [x] 如有发布要求,版本面一致(现为三处,以 `compat_version_surface_sync` 为权威)、构建、安装、提交、推送和发布证据已完成(ER-08)。 +- [x] 「修订历史」已记录成稿后的全部规范性变更(G-09)。 +- [x] `plan-long.md` 相关状态或日期计划索引已同步,或明确 `N/A`。 From 063cc6f7b61799cc693a561d8754a08f54c14b06 Mon Sep 17 00:00:00 2001 From: jackieismpc Date: Mon, 21 Sep 2026 11:20:18 +0800 Subject: [PATCH 2/2] docs(plan): defer issue close until merge Signed-off-by: jackieismpc --- docs/development/plan/plan-20260822.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/development/plan/plan-20260822.md b/docs/development/plan/plan-20260822.md index 34592b85c..1fc82cc00 100644 --- a/docs/development/plan/plan-20260822.md +++ b/docs/development/plan/plan-20260822.md @@ -10,7 +10,7 @@ PR #503 已于 2026-09-21 合并到 upstream `main`(merge commit `243fb5aff199 - OL-14:按 G-09 墓碑规则取消,`done / complete`,不产生文件。 - OL-15A:`done / complete`。 - OL-15:`done / complete`;v1 runtime、service、model、command fallback 已移除,legacy namespace 仅保留在 forward-only migration/schema fixtures 中。 -- Issue #452:由 PR #503 关联并在本次计划收口后关闭。 +- Issue #452:由本次 PR #509 关联;PR 描述包含 `Closes #452`,合并后自动关闭。 本次只更新计划状态与验收证据,不 bump 版本、不创建 tag/release artifact;本分支用于提交计划文档收口并建立 upstream PR。 @@ -155,7 +155,7 @@ PR #503 初始 `compat-offline-core` 失败共 13 个:5 个 merge 断言把 v2 | 2026-09-20 | OL-14/OL-15 评估(用户指令) | ① **OL-14 取消(G-09 墓碑)**:`web/` 已随 plan-20260920(v0.23.3)整体拆除且明确不重建;原 AC/Verification(`pnpm --dir web …`)与写集不可能执行,只读投影无消费者,`libra op log/show` 已覆盖查询面;`Version increment`/`Release boundary` 改 `N/A`/`no-release`,依赖边 `OL-13→OL-14`、`CH-04→OL-14`、`OL-14→OL-15` 失效,DEFER-02 随之关闭。② **OL-15 延后**:评估确认 `operation_wrapper.rs`(2329 行)仍是活路径(`branch.rs:589,1701`、`sequencer/mod.rs:486`、`worktree.rs:1510`、`op.rs:1208`、`cli.rs:3478`),`legacy_operation*` 仍被 `maintenance.rs:3433-3446` 读取——设计文档 §5.1 删除条件未满足;新增 `DEP-05`(v1-boundary runtime cutover,无卡承接待立)与 `DEFER-05`,OL-15 置 `blocked` | 无拆卡 | 实施顺序、依赖登记表、发布窗口顺序、Phase 7、审计表、追溯表、测试矩阵、里程碑 M6/M7、风险表、非目标与延后项、OL-14/OL-15、`plan-status.md`、`plan-long.md`、设计文档 | | 2026-09-20 | OL-13 现状核实(GC-01) | 实现已随 PR #485(`9da06b4`,2026-09-17)合入并随 v0.23.0 发布,本卡仅补记账:OL-13 标 `done/complete`,AC/Verification 逐项回填证据;补 `(new)` `restore_is_available_after_reconcile_converges` 用例覆盖 AC 的「reconcile 后 restore」缺口;三门(fmt/clippy)与 `operation_restore_multi_worktree` 7/7 复跑绿 | 无拆卡 | OL-13、M6;`plan-status.md` | | 2026-09-20 | PR #503 后续 upstream sync | 在 c68/v0.23.18、611832/v0.23.22 后继续同步 upstream `main` 至 `8b1fdca64dd937bc9f6e9b84161dbe7e93c082f2`(v0.23.24),并完成 rustdoc link repair;OL-15 当时保持 `remote-pending` | 无拆卡 | PR #503 执行窗口、OL-15 | -| 2026-09-22 | 计划最终收口 | PR #503 已合并到 upstream `main`(merge commit `243fb5aff19939999666dd7e62dfdcfe8c8b5c7a`);远端兼容门禁完成,OL-15 与计划完成判据全部收口为 complete;关联关闭 issue #452 | 无拆卡 | 计划最终收口、OL-15、完成判据 | +| 2026-09-22 | 计划最终收口 | PR #503 已合并到 upstream `main`(merge commit `243fb5aff19939999666dd7e62dfdcfe8c8b5c7a`);远端兼容门禁完成,OL-15 与计划完成判据全部收口为 complete;PR #509 已关联 issue #452,合并后自动关闭 | 无拆卡 | 计划最终收口、OL-15、完成判据 | | 2026-09-20 | CI job 106030530240 回归 | 定位两类根因并加入回归保护:archive pathspec 单元测试在非 Libra cwd 触发 repository discovery panic,改为无仓库 fallback 并覆盖非仓库 cwd;mode-aware worktree 在 runner `umask 0002` 下合法地产生 `0775/0664`,新增 umask 回归并将 compat-offline-core 测试步骤固定为 `umask 0022`,保留专门 umask 测试覆盖;专项测试、fmt、clippy 作为本窗口门禁 | 无拆卡 | `src/command/archive.rs`、`src/utils/worktree_blob.rs`、`.github/workflows/base.yml` | ## 已决议设计决策