# repo22 第二次总体进度报告

更新时间：2026-08-09 UTC

权威统计快照：`381349b3847209a67d669264ac54a50a3599915c`
（该提交是当次 `xdm/main` 上完成 G3 报告后的快照）。

本报告只统计该快照已经提交的实现、正式批次和动态证据。TC060 源码修复与 G5
压缩回归正在并行进行，但在形成完整报告并提交前不提前计为 PASS，也不改变下述
冻结统计。

## 总体结论

- feature 实现、源码 code review、style review、FreeBSD 15 API 对齐和双配置构建
  布局已经完成阶段性收口。
- 正式八组回归中，G1、G2、G3、G4 共执行 103 项：102 PASS，1 项
  `TC060 KERNEL-FAIL` 正在修复。
- final review-fix 阶段还直接动态执行了 TC154-TC156，三项均 PASS。它们是三项
  额外且不与前述 103 项重叠的 TC，因此当前共有 106 个不同 TC 具备动态结果，
  其中 105 PASS、1 项待修。
- TC154-TC156 已分配给 G8，但先行 PASS 不能重复计入“已完成 G8”，也不能把 G8
  标成已执行完毕。G8 尚有 TC111、TC131-TC133 未执行。
- TC010 与 TC153 已通过真实大 sparse provider 的 FreeBSD 内核路径验证并转为
  RESOLVED。explicit extent 的 mapped compressed payload 正向 fixture 仍未获得，
  对应 issue 尚未解决。

## 实现与审查

repo22 已完成以下阶段性工程工作：

- 实现并审查 superblock、compact/extended inode、plain/inline/chunk 数据、目录与
  namecache、xattr/ACL/metabox、多算法压缩、fragment、multi-device、NFS export、
  vnode pager 和 fail-closed 元数据边界。
- 对照 Linux EROFS 的磁盘 ABI、职责拆分和命名以降低长期维护偏差，同时保持
  FreeBSD vnode、GEOM、pager、NFS、ACL 和 `dev_t` 语义为行为权威。
- 完成 overflow、长度、偏移、移位、signed/unsigned、目录大索引、48-bit union、
  NFS generation、special vnode 和 timestamp 等多轮独立 code review 修复。
- 清理被跟踪的构建产物，统一 FreeBSD KLD 源文件布局、amd64 门控和
  `WITH_ZSTDIO=0/1` 构建方式；当前构建仍以 kernel `-Werror` 为门槛。
- 删除会替代人工判定或无条件给出 PASS 的旧 CI 风格 runner/wrapper，保留可复现
  fixture transformer 与原生 syscall/probe 工具。当前任务不实现 CI。

## 正式八组状态

八组精确集合总计 156 项，彼此无重复、无遗漏。

| 组 | 精确集合 | 数量 | 快照状态 |
|---|---|---:|---|
| G1 | TC001, TC007, TC009, TC011-TC014, TC019-TC040, TC147, TC150, TC151 | 32 | 32 PASS，正式批次完成。 |
| G2 | TC002, TC008, TC010, TC015-TC018, TC112-TC116, TC119 | 13 | 13 PASS，正式批次完成。 |
| G3 | TC041-TC066, TC141, TC148, TC149, TC152, TC153 | 31 | 31 已执行；30 PASS，TC060 KERNEL-FAIL。 |
| G4 | TC005, TC067-TC083, TC117, TC134-TC140, TC142 | 27 | 27 PASS，正式批次完成。 |
| G5 | TC003, TC004, TC084-TC092, TC102-TC110, TC143-TC146 | 24 | 压缩回归正在进行，尚无正式整组结论。 |
| G6 | TC006, TC093-TC101, TC118 | 11 | 尚未执行。 |
| G7 | TC120-TC130 | 11 | 尚未执行。 |
| G8 | TC111, TC131-TC133, TC154-TC156 | 7 | 正式整组未完成；TC154-TC156 已先行 PASS，TC111、TC131-TC133 尚未执行。 |

正式批次证据：

- [G1 报告](../../tests/results/manual/2026-08-09T0710Z-g1/manual-test-report.md)
- [G2 报告](../../tests/results/manual/2026-08-09T0710Z-g2/manual-test-report.md)
- [G3 报告](../../tests/results/manual/2026-08-09T1059Z-g3/manual-test-report.md)
- [G4 报告](../../tests/results/manual/2026-08-09T0839Z-g4/manual-test-report.md)
- [review-fix 报告](../../tests/results/manual/2026-08-09T0557Z-review-fixes/manual-test-report.md)

## 统计口径

正式批次已执行数为 `32 + 13 + 31 + 27 = 103`；PASS 数为
`32 + 13 + 30 + 27 = 102`，另有 TC060 一项 KERNEL-FAIL。

TC154-TC156 来自 review-fix 阶段的 exact-source FreeBSD 动态运行，并未包含在
G1-G4 的 103 项中。因此按“不同 TC 是否已有动态结果”计数，应增加三项，得到
106 个 TC 有动态结果、105 PASS、1 待修。按“正式组是否完成”计数时，三项仍属于
尚未完成的 G8，不能再次增加 PASS 数或宣称 G8 已完成。

## 大 Provider 验证

- TC010 使用逻辑长度 `17592193667072` 字节的 qualified sparse vnode provider，
  动态挂载了 `blocks_hi=1` 的 48-bit EROFS，并验证 `df` 的 64-bit 总量无截断。
  issue 已 RESOLVED。
- TC153 使用逻辑长度 `8796093091840` 字节的 sparse GEOM provider，令超大
  FLAT_PLAIN 目录进入 `2147483648` 最终块索引的真实 kernel lookup 路径；固定 KLD
  在 cold lookup 和 readdir 后均返回 `EINTEGRITY`，没有错误缓存为 `ENOENT`。
  issue 已 RESOLVED。
- explicit extent 已动态覆盖 hole record、header 选择和部分负向分支，但仍缺少
  mapped compressed payload 以及完整 record variant 的正向读取证据，不能关闭 issue。

## Issue 索引

| Issue | 当前状态 | 结论 |
|---|---|---|
| [TC060 standard pathconf](../../issues/TC060-pathconf-standard-values.md) | OPEN - KERNEL-FAIL | `_PC_NO_TRUNC` 与 `_PC_CHOWN_RESTRICTED` 返回 `EINVAL`；源码修复和复测正在进行。 |
| [TC010 48-bit statfs](../../issues/TC010-48bit-statfs-large-provider.md) | RESOLVED - qualified sparse vnode provider validated | qualified 16 TiB 级 sparse provider 已完成真实 mount/statfs/df 验证。 |
| [TC153 large directory index](../../issues/TC153-large-directory-block-index-validation.md) | RESOLVED - exact-source kernel validation passed | qualified 多 TiB sparse provider 已完成 exact-source 大索引 kernel lookup 验证。 |
| [Explicit extent fixture](../../issues/extent-metadata-fixture-unavailable.md) | SHELVED - positive fixture unavailable | issue 未解决；尚无使用 explicit-record parser 的 mapped compressed payload 正向 fixture。 |

## 当前风险

- TC060 是已确认的 FreeBSD kernel behavior failure，修复必须保持 NAME_MAX、PATH_MAX、
  FILESIZEBITS、LINK_MAX、ACL 查询和未知键 errno 不回归，并完成 mount/md/KLD 清理。
- G5 同时覆盖 LZ4、MicroLZMA、DEFLATE、ZSTD、ztailpacking、partial reference、
  explicit metadata 等多条压缩路径，fixture 资格和 `WITH_ZSTDIO` 配置差异仍是当前
  最大执行风险。
- explicit extent 缺少上游工具可生成的 mapped positive fixture；静态 ABI 对照、
  hole record 和 malformed case 不能替代真实压缩 payload 读取。
- G6 multi-device、G7 边界与压力类测试、G8 NFS/manual 页面仍需隔离 VM、精确 KLD、
  direct syscall/数据比较和完整清理，历史 feature 报告不能自动升级为本轮结果。
- 并行 worktree 共享 `xdm/main`。每次 push 前必须 fetch/rebase，严格 pathspec，禁止
  force push；guest mount、md、KLD 和临时 provider 残留必须清零。

## 下一步

1. 完成 TC060 根因修复，重跑全部 pathconf 键与基础 mount/read smoke，更新 issue
   和 dated manual report。
2. 完成 G5 的 24 项压缩回归，提交 exact KLD、fixture hash、errno/数据比较与清理
   证据。
3. 依次完成 G6 11 项、G7 11 项和 G8 剩余 TC111、TC131-TC133；在 G8 汇总中引用
   或按要求复跑 TC154-TC156，但禁止重复计数。
4. 聚合 `TEST-COVERAGE-MATRIX`，审计 156 项总数、组间重复、遗漏、动态证据来源和
   未解决 issue。
5. 完成最终独立 source review，检查 lock/resource/error path；执行
   `WITH_ZSTDIO=0/1` 双配置 exact-source build，并做 `xdm/main`、remote/HEAD、
   tracked clean 和 guest 清理的最终 audit。
