# repo22 第三次总体进度报告 更新时间:2026-08-09 UTC 权威验证快照:`12351cbb0a593474f4fcef68ffc5218d9c99dd46` 最终源码基线:`fcc85b93d5f8fd9671686bd68bf3b086c8bd25cf` ## 总体结论 本轮要求的 feature 全面验证、FreeBSD/Linux 行为差异审查、code review 和 style/可维护性优化已经完成。161 个可执行 Markdown 测试均已执行并形成受控 手工证据,最终为 160 PASS、1 PARTIAL、0 FAIL、0 KERNEL-FAIL、0 ENV。 唯一未完全关闭的是 TC146 的 explicit compressed extent mapped-payload 正向 fixture。该问题已按用户授权详细记录并搁置,不是已观察到的 kernel failure, 也不影响其他 160 个 TC 的结论。本轮目标因此完成,剩余工作属于已批准搁置项 或后续可选增强。 CI 和自动化 kernel-test harness 不在本轮范围内,未实现也未宣称完成。 ## 已完成内容 - 完成 TC001-TC161 的规格、执行报告和覆盖矩阵机械审计;TC000 只作为模板。 - G1-G8 的 156 个表格行覆盖 TC001-TC156,恰好一次,无重复、无遗漏。 - 完成 TC157-TC161 独立回归,覆盖 explicit extent 全局顺序、48-bit compressed block count、special vnode 组合 setattr、dot-omitted `OFF_MAX` cookie 和 `nm` 失败传播。 - TC010 的 16 TiB-plus statfs、TC060 的 FreeBSD pathconf、TC153 的超大目录索引 均已动态验证并转为 RESOLVED。 - 完成 superblock、inode、data、directory/namecache、xattr/ACL/metabox、压缩、 multi-device、NFS、pager、错误路径和边界算术的多轮独立 review。 - 保留 Linux EROFS 的磁盘 ABI、命名、函数顺序和职责拆分作为维护参照,同时以 FreeBSD vnode、GEOM、pager、NFS、ACL、`dev_t` 和 errno 语义为行为权威。 - 修正 README 的 NFS stale 承诺:generation 来自 superblock seed 和 inode metadata;metadata-identical payload-only replacement 不保证 `ESTALE`。 - 清理 repo22 内全部 ignored build/object/image/repro/Python bytecode 产物;最终 guest 的 EROFS mount、md、EROFS KLD 和 DTrace KLD 计数均为零。 ## 最终验证统计 | 状态 | 数量 | 说明 | | --- | ---: | --- | | PASS | 160 | 具备对应 dated manual report 的 FreeBSD 15 手工证据 | | PARTIAL | 1 | TC146;HEAD2/interlaced PASS,explicit mapped payload 未完成 | | FAIL / KERNEL-FAIL | 0 | 无开放 kernel 行为失败 | | ENV | 0 | 无环境阻塞 | | SHELVED test case | 0 | TC146 的子项不另计为 TC | G1-G8 证据来自多个源码提交,不能表述为所有旧 TC 都运行在最终 KLD 上。最终 `fcc85b93d` 基线接受了 TC157-TC161、相关回归以及双配置 build/load/mount smoke。 ## 最终构建 FreeBSD 15 kernel `-Werror` 双配置均成功: | 配置 | KLD SHA256 | | --- | --- | | `WITH_ZSTDIO=0` | `15fda9d334132cd81769ce4dff4f8411a6e2b4cf7531c352530d0de85f42a2d2` | | `WITH_ZSTDIO=1` | `23782dc0ce7da188807d35020bf2d8c6044b796c5c9a8746b398ba784cd6ad4e` | TC161 的私有 `nm` shim 正确使构建失败且不发布新 KLD;移除 shim 后使用 `/usr/bin/nm` 的正常重建 exit 0。两个最终 KLD 均完成独立加载和只读挂载 smoke。 ## Code Review 结论 最终独立复核未发现 P0/P1。已修复的最后一批问题包括: - 16/32-byte explicit extent table 全局严格顺序验证; - extended compressed inode 的完整 48-bit `blocks_hi` 解码; - special vnode size 与其他 setattr 字段组合时的 false success; - dot-omitted 目录在 `OFF_MAX` 的 cookie/offset overflow; - `build.sh` 对 `nm` 自身失败的可靠传播; - NFS generation 文档与真实实现边界不一致。 从社区第三方维护者视角,未发现仍需消除的非必要 Linux/FreeBSD 结构、命名或 职责差异。保留的差异均来自 FreeBSD kernel API、锁、provider、pager、NFS 或 权限模型要求。 ## 未完成与搁置 唯一批准搁置项是 [explicit mapped extent payload](../../issues/extent-metadata-fixture-unavailable.md): - erofs-utils 1.8.6 不能生成或独立验证该新格式; - 已尝试工具能力扫描、`--max-extent-bytes`、structured conversion、ABI/control flow 对照以及多类负向 fixture; - TC157 已证明 16/32-byte unordered table fail closed,但不能替代 mapped payload 的 source-identical 正向读取; - 首个非零 `lstart` 和极大 extent-count 性能边界也保留为可选覆盖风险。 ## 后续执行计划 1. 等待可生成并独立验证 explicit mapped-payload 的上游工具或可信 fixture。 2. 获得 fixture 后补充 4/8/16/32-byte 正向 record、partial reference、high words、 binary-search transition 和 final fragment 动态覆盖,使 TC146 从 PARTIAL 转 PASS。 3. 如后续项目另行启动 CI,再基于现有 Markdown 断言设计自动化;不得把当前手工 PASS 记录直接转换成无条件自动 PASS。 4. 后续源码变更继续执行受影响 TC、双配置 build、module smoke、scoped Git hygiene 和独立 review,不要求无差别重跑与改动无关的全部历史环境。 ## 相关提交 正式八组手工验证: - G1 `9ae22009f23a65320730072a780998e80aa9b728` - G2 `aed7b68b79a5bd4115913f8361821c86fd58d2e2` - G3 `381349b3847209a67d669264ac54a50a3599915c` - G4 `f383bbbbff301a6bde18894f03ab88a8c0cc885a` - G5 `c566d8ac6bf8e801082bbccf108451f6ee46ad40` - G6 `f11fff5b8e8050e1017ed86f0bcf71042b2b45aa` - G7 `f3ab2096fea3942317deb83fa051c84d3c124ec2` - G8 `6f336d0a7387c8f110b19abad6e96f3ea17dba2e` 最终源码与验证收口: - `f27b524a35b1c960be7e81884f9b928d9ac907e9`:metadata boundary 修复。 - `67d3c057fbcad5adc765ab9927da511e3221ac8f`:explicit extent header 解码修复。 - `fcc85b93d5f8fd9671686bd68bf3b086c8bd25cf`:TC157-TC161 规格与 helper。 - `12351cbb0a593474f4fcef68ffc5218d9c99dd46`:最终手工报告、覆盖、issue 和 README 汇总。 逐项证据见 `tests/results/manual/2026-08-09T1804Z-final-review-independent/manual-test-report.md`; 最终统计口径见 `docs/TEST_REPORT.md` 和 `tests/TEST-COVERAGE-MATRIX.md`。