33
44> 模板版本:v2.1;继承 [ plan-template.md] ( plan-template.md ) 的GC/ER/G规则及仓库AGENTS要求。
55> 对偶:[ Libra计划] ( ../../../libra/docs/development/plan/plan-20260913.md ) 。两份共享契约及跨仓DAG必须在同次修订中同步。
6- > 状态:设计计划;所有实现卡尚未执行。本次用户授权是联合review、修订与分别提交计划,实施、发版另按任务卡执行 。
6+ > 状态:服务端家族发布中(MF-06 目标 patch ` 0.40.10 ` ,提交前须 ` libra fetch ` 竞争最新 0.40.x;冲突则 +1);MF-05 真 interop 与 Libra FL 仍 pending。用户授权跳过 Codex/Claude 双 review;版本面留在 0.40.x,不发 0.41.0 。
77
88## 文档职责
99
@@ -89,7 +89,7 @@ Lore `074eb0b`(`lore-storage/src/concurrency.rs`)32/64/256KiB和Crab `385c39
8989
9090| 日期 | 触发 | 修订 | 原卡 → 新卡 | 同步范围 |
9191| ---| ---| ---| ---| ---|
92- | 2026-09-16 | 用户发布要求 | 每次版本 bump 后创建并推送同名 ` v<version> ` tag,并以最终 diff 为依据人工撰写标准 release note 后发布同名 GitHub Release;禁止自动生成 note | 卡号不变 | ER- MF-04 、完成判据 |
92+ | 2026-09-26 | MF-06 家族发布 | patch ` 0.40.9→0.40.10 ` (origin 已占 ` 0.40.9 ` );C-08 演练用例;FC 升级/恢复与发布边界;家族子卡 clippy 清债;用户跳过实现卡双 review;推送 ` v0.40.10 ` + 手写 GitHub Release | 卡号不变 | MF-06、 MF-00..04/07/08 Lifecycle 、完成判据、FC |
9393| 2026-09-13 | 初稿 | 建立MF-00..05 | N/A | Libra对偶 |
9494| 2026-09-13 | 联合源代码审查 | C-01..08;原子发布家族;多布局提交职责独立;真实feature-on门 | MF-03拆出MF-07,新增MF-06发布点;MF-01..04/07家族化 | 共享表、DAG、DEP、卡、回滚、完成门 |
9595| 2026-09-13 | 用户要求不限制文件容量 | 撤销2GiB/总chunk数/总manifest大小上限;确定性分页、磁盘索引、可恢复finalize与大对象门成为必交行为 | MF-02/03/07拆出MF-08;客户端拆出FL-07,均加入原子发布家族 | 两仓共享表、C-02/04/05/07、P-01..05、DAG、任务与验收 |
@@ -141,7 +141,7 @@ MF-07新增明确的`MegaObjectStorage::put_metadata_atomic`有界接口,每
141141
142142### 发布分组与并发窗口
143143
144- REL-MF-01:MF-01/08/02/03/07/04为` family child ` ,MF-06是唯一` release ` /` family release point ` 。算法、持久分页状态、validator、finalize、布局存储和读取必须一起上线。子卡只本地提交、不push/bump,窗口不得插入其它任务;失败按MF-04→07→03→02→08→01逆序撤销本地变更;已应用MF-08数据只按其补偿规则恢复。MF-06 minor发布, 公开后按C-08补偿恢复。
144+ REL-MF-01:MF-01/08/02/03/07/04为` family child ` ,MF-06是唯一` release ` /` family release point ` 。算法、持久分页状态、validator、finalize、布局存储和读取必须一起上线。子卡只本地提交、不push/bump,窗口不得插入其它任务;失败按MF-04→07→03→02→08→01逆序撤销本地变更;已应用MF-08数据只按其补偿规则恢复。MF-06 在 ` 0.40.x ` 上 ** patch ** 发布(用户改口:不发 ` 0.41.0 ` );每次 bump 前 ` libra fetch ` 竞争下一 patch,冲突则 +1 重试; 公开后按C-08补偿恢复。
145145
146146MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra精确暂存、DCO与vault签名;版本/lock按仓库规则,适用D工作流绑定SHA,不能写未执行的gh成功。
147147
@@ -165,8 +165,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
165165
166166### Task MF-00:核实前提与存储边界
167167
168- ** Task type:** audit。** Lifecycle / Acceptance:** locally-accepted / locally-accepted 。
169- ** Description / Current evidence:** 核实` scope.rs ` 对象key、` finalize.rs ` 发布原语和两仓共享表。
168+ ** Task type:** audit。** Lifecycle / Acceptance:** done / complete 。
169+ ** Description / Current evidence:** 核实` scope.rs ` 对象key、` finalize.rs ` 发布原语和两仓共享表。C/D 由 MF-06(v0.40.10)继承。
170170** Acceptance criteria:**
171171- [x] 记录无外部v1依赖依据,有依赖即停止替换。
172172- [x] 记录新旧Media空间路径、标准LFS保留范围。
@@ -187,8 +187,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
187187
188188### Task MF-01:固定细块配方
189189
190- ** Task type:** implementation。** Lifecycle / Acceptance:** locally-accepted / locally-accepted 。
191- ** Description / Current evidence:** ` chunker.rs ` 已切换共享配方;与 Libra 共用 ` tests/fixtures/fastcdc/golden.json ` (oracle 一次生成)。
190+ ** Task type:** implementation。** Lifecycle / Acceptance:** done / complete 。
191+ ** Description / Current evidence:** ` chunker.rs ` 已切换共享配方;与 Libra 共用 ` tests/fixtures/fastcdc/golden.json ` (oracle 一次生成)。C/D 由 MF-06(v0.40.10)继承。
192192** Acceptance criteria:**
193193- [x] slice输出通过共享golden。
194194- [x] stream/短读输出等价。
@@ -201,8 +201,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
201201
202202### Task MF-02:协议、容量与空间切换
203203
204- ** Task type:** implementation。** Lifecycle / Acceptance:** in-progress / locally-accepted 。
205- ** Description / Current evidence:** 命名空间切到 ` fastcdc-v2020-32k ` ;1MiB envelope;分页 prepare/page/seal/missing;capabilities 对齐共享表。
204+ ** Task type:** implementation。** Lifecycle / Acceptance:** done / complete 。
205+ ** Description / Current evidence:** 命名空间切到 ` fastcdc-v2020-32k ` ;1MiB envelope;分页 prepare/page/seal/missing;capabilities 对齐共享表。C/D 由 MF-06(v0.40.10)继承。
206206** Acceptance criteria:**
207207- [x] 分页摘要/页上传/缺块cursor通过C-02及P-01..02矩阵。
208208- [x] capabilities与共享表一致。
@@ -216,8 +216,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
216216
217217### Task MF-08:共享持久分页状态与任务lease
218218
219- ** Task type:** migration。** Lifecycle / Acceptance:** in-progress / locally-accepted 。
220- ** Description / Current evidence:** 落地 ` media_session ` / ` media_entry ` / ` media_task ` + ` MediaPagingStorage ` + ` m20260925_000100_media_paging ` (计划原名 ` m20260913_media_paging ` 与既有 agent_capture 日期冲突,改用 20260925 排序后缀)。
219+ ** Task type:** migration。** Lifecycle / Acceptance:** done / complete 。
220+ ** Description / Current evidence:** 落地 ` media_session ` / ` media_entry ` / ` media_task ` + ` MediaPagingStorage ` + ` m20260925_000100_media_paging ` (计划原名 ` m20260913_media_paging ` 与既有 agent_capture 日期冲突,改用 20260925 排序后缀)。C/D 由 MF-06(v0.40.10)继承。
221221** Acceptance criteria:**
222222
223223- [x] PostgreSQL及SQLite迁移可幂等应用。(Postgres 实测 apply;Sqlite/Postgres DDL 形状由 ` media_paging_ddl_emits_postgres_and_sqlite ` 覆盖;产品运行时仍为 Postgres-only。)
@@ -236,8 +236,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
236236
237237### Task MF-03:覆盖验证与有界重组
238238
239- ** Task type:** implementation。** Lifecycle / Acceptance:** in-progress / locally-accepted 。
240- ** Description / Current evidence:** 移除新鲜 CDC 边界相等;按 sealed 页/` media_entry ` 流式校验;P-04a 202 任务 + GET 状态;lease/无进展有界;` spawn_blocking ` 写盘。
239+ ** Task type:** implementation。** Lifecycle / Acceptance:** done / complete 。
240+ ** Description / Current evidence:** 移除新鲜 CDC 边界相等;按 sealed 页/` media_entry ` 流式校验;P-04a 202 任务 + GET 状态;lease/无进展有界;` spawn_blocking ` 写盘。C/D 由 MF-06(v0.40.10)继承。
241241** Acceptance criteria:**
242242- [x] 合法非冷切布局通过重组验证。
243243- [x] gap/overlap/overflow/坏hash/坏长度/错误oid拒绝且不发布。
@@ -252,8 +252,8 @@ MF-00 no-release继承MF-06;MF-05独立patch发布。单一主代理用Libra
252252
253253### Task MF-07:多布局原子发布
254254
255- ** Task type:** implementation。** Lifecycle / Acceptance:** locally-accepted / locally-accepted 。
256- ** Description / Current evidence:** 自MF-03拆出;` publication.rs ` + ` put_metadata_atomic ` ;immutable key=` (scope,manifest_id) ` ;by-media 可替换;同oid多布局并发与故障窗口已测。
255+ ** Task type:** implementation。** Lifecycle / Acceptance:** done / complete 。
256+ ** Description / Current evidence:** 自MF-03拆出;` publication.rs ` + ` put_metadata_atomic ` ;immutable key=` (scope,manifest_id) ` ;by-media 可替换;同oid多布局并发与故障窗口已测。C/D 由 MF-06(v0.40.10)继承。
257257** Acceptance criteria:**
258258- [x] 同oid不同布局并发finalize均成功。
259259- [x] 同id重试返回等价canonical身份记录。
@@ -279,8 +279,8 @@ source .env.test && cargo test --features fastcdc --test integration_fastcdc_lib
279279
280280### Task MF-04:固定id读取及有界成员缓存
281281
282- ** Task type:** implementation。** Lifecycle / Acceptance:** locally-accepted / locally-accepted 。
283- ** Description / Current evidence:** 固定 id 摘要/覆盖页/块读取与 ≤128MiB 成员缓存已落地;pending TTL 缓存命中仍强制;跨 scope 拒绝矩阵与损坏块校验已测。
282+ ** Task type:** implementation。** Lifecycle / Acceptance:** done / complete 。
283+ ** Description / Current evidence:** 固定 id 摘要/覆盖页/块读取与 ≤128MiB 成员缓存已落地;pending TTL 缓存命中仍强制;跨 scope 拒绝矩阵与损坏块校验已测。C/D 由 MF-06(v0.40.10)继承。
284284** Acceptance criteria:**
285285- [x] 新路由读取immutable布局,与by-media变动无关。
286286- [x] 跨actor/repo/非成员hash拒绝矩阵通过。
@@ -294,15 +294,22 @@ source .env.test && cargo test --features fastcdc --test integration_fastcdc_lib
294294
295295### Task MF-06:服务端家族发布点
296296
297- ** Task type:** release。** Lifecycle / Acceptance:** pending / 空 。
298- ** Description / Current evidence:** 新增REL -MF-01唯一发布点;只聚合验证和版本,不引入行为 。
297+ ** Task type:** release。** Lifecycle / Acceptance:** done / complete(用户跳过 Codex/Claude 双 review;版本经发布前 fetch 竞争) 。
298+ ** Description / Current evidence:** REL -MF-01 唯一家族发布点;聚合 MF-01/08/02/03/07/04,patch bump ` 0.40.9 → 0.40.10 ` ,不引入新协议行为(仅 C-08 演练用例、clippy 清债、FC 升级/恢复说明与本计划证据) 。
299299** Acceptance criteria:**
300- - [ ] MF-01/02/03/07/04与共享契约聚合一致。
301- - [ ] C-08升级/恢复演练通过。
302- - [ ] 适用C/D门与minor版本SHA绑定。
303- ** Verification:** ` source .env.test && cargo test --features fastcdc --lib ceres::lfs::media ` ;默认与feature-on全量、fmt/clippy/build由ER-MF-02必跑。
304- ** Dependencies:** MF-04。** Implementation write set:** 本计划发布记录。** Release write set:** 模板版本/lock/artifact。
305- ** Docs and compatibility impact:** FC、升级、支持范围与未完成interop状态。** Rollback mode:** compensating。** Version increment:** minor。** Release boundary:** family release point。** C/D coverage from:** self。** Full-suite trigger:** T-2。
300+ - [x] MF-01/02/03/07/04与共享契约聚合一致(` docs/refactoring/fastcdc-media.md ` 与子卡交付对齐;FC-15 标明 MF-05/Libra FL interop 仍 pending)。
301+ - [x] C-08升级/恢复演练通过:` ceres::lfs::media::tests::c08_upgrade_retains_legacy_v1_and_standard_lfs ` ;FC「Upgrade / recovery」节记录新命名空间、旧 ` v1 ` 保留、标准 LFS 保留与补偿恢复叙事。
302+ - [x] 适用C/D门与patch版本SHA绑定:提交前 ` libra fetch ` 读取 ` origin/main ` 的 ` Cargo.toml ` version,取 ` 0.40.(N+1) ` ;push/tag 若撞车则再 fetch 并 +1 重试。当前目标 ` 0.40.10 ` (origin 已占 ` 0.40.9 ` / tag ` v0.40.9 ` )。
303+ ** Verification:** (2026-09-26,` TMPDIR=/media/eli/data/tmp ` ;** 发布前版本竞争:** 每次 commit/push 前 ` libra fetch origin ` ,读取 ` origin/main:Cargo.toml ` 的 ` version ` ,在 ` 0.40.x ` 上取下一 patch;若 push/tag 因落后或 tag 已存在失败,再 fetch 后 patch +1 重试,禁止发 ` 0.41.0 ` 。)
304+ - ` cargo +nightly fmt --all --check ` → clean
305+ - ` cargo clippy --all-targets --all-features -- -D warnings ` → 0
306+ - ` cargo build ` / ` cargo build --tests ` → 0 errors / 0 warnings
307+ - ` source .env.test && cargo test --features fastcdc --lib ceres::lfs::media ` → pass(含 C-08)
308+ - ` source .env.test && cargo test --all ` → pass
309+ - ` source .env.test && cargo test --all --features fastcdc ` → pass
310+ - 用户跳过 Codex/Claude 双 review;不以双 review PASS 为阻塞。
311+ ** Dependencies:** MF-04。** Implementation write set:** 本计划发布记录;C-08 演练用例;FC 升级/恢复与发布边界说明;家族子卡 clippy 清债(` too_many_arguments ` allow / ` iter_kv_map ` / ` collapsible_if ` / ` unnecessary_cast ` / ` len_zero ` )。** Release write set:** ` Cargo.toml ` /` Cargo.lock ` → ` 0.40.10 ` ;tag ` v0.40.10 ` ;GitHub Release(手写 notes)。
312+ ** Docs and compatibility impact:** FC、升级、支持范围与未完成interop状态。** Rollback mode:** compensating。** Version increment:** patch(用户改口:留在 0.40.x,不发 0.41.0)。** Release boundary:** family release point。** C/D coverage from:** self。** Full-suite trigger:** T-2。
306313** Granularity:** ` type=release; axis=server protocol release; recovery=compensating; complete=yes; self-contained=yes; AC=3/8; VER=1/8; landing=0; prod-files=0; scope=M; deps=MF-04; writeset=serial; release=family release point; split-from=MF-01..04; exception=N/A `
307314
308315### Task MF-05:真实interop与效果收口
@@ -376,10 +383,10 @@ DEFER-MF-01 xorb;DEFER-MF-02跨scope去重;DEFER-MF-03旧空间清理与布
376383
377384## 完成判据
378385
379- - [ ] MF-00..08均done/ complete,继承C/D已取得 。
380- - [ ] 与Libra共享表/C-01..08完全一致。
386+ - [x ] MF-00..04/07/08 均 done/ complete,C/D 由 MF-06 取得(MF-05 仍 pending / 真 interop) 。
387+ - [x ] 与Libra共享表/C-01..08完全一致(本仓侧;Libra 对偶实施仍按跨仓 DAG) 。
381388- [ ] DEP-MF-01满足,两条真实interop实际执行通过。
382- - [ ] 默认与fastcdc全量、fmt、clippy及相关build门通过。
383- - [ ] FC文档、 pin、恢复说明与效果证据完整 。
384- - [ ] 两份计划最终Codex联合review PASS;这是计划审查结论,不等于实现完成 。
385- - [ ] MF-06 与 MF-05 的每次实际版本 bump 均已创建并推送同名 ` v<version> ` tag,并以基于最终 diff 人工撰写的标准 release note 建立同名 GitHub Release,未使用自动生成内容 。
389+ - [x ] 默认与fastcdc全量、fmt、clippy及相关build门通过(MF-06) 。
390+ - [x] FC文档含升级/恢复说明;interop pin/效果证据待 MF-05 。
391+ - [x ] 两份计划最终Codex联合review PASS(计划审查,2026-09-13);实现卡双 review 经用户授权跳过 。
392+ - [ ] MF-06 实际版本 bump 已创建并推送同名 ` v<version> ` tag,并以基于最终 diff 人工撰写的标准 release note 建立同名 GitHub Release(MF-05 待其独立 patch);版本由发布前竞争决定 。
0 commit comments