# repo-pre-2 Maintenance Baseline

## Snapshot Identity

`repo-pre-2` was created from the tracked `repo-pre-1` tree without copying
working-tree-only files or build artifacts.

```text
planning baseline commit:  ed47f1b5583a229e372f488b9492d1f6234aae98
snapshot creation parent:  109fe74d3fcef107db5869be1d030f4f12d1cfa6
snapshot creation commit:  73fa57924b549387400eeeb85354bbbbe770a962
repo-pre-1 source tree:    6a5a1a49d4a4e08f6ef1155de240500e63a15365
repo-pre-2 snapshot tree:  6a5a1a49d4a4e08f6ef1155de240500e63a15365
Linux comparison tree:    b79b9a8b62f633e887a8b99075ff9412fabd7f83
```

The matching source and snapshot tree IDs establish byte-for-byte content,
file-mode, and path equivalence at snapshot creation. `repo-pre-1` and
`src-linux` are read-only references for pre2 work.

## Phase Scope

Pre2 phase 1 is L0 mechanical maintenance alignment. It permits only the
separately reviewed changes listed below:

1. Remove stale Linux-only declaration fragments from `src/xattr.h` while
   preserving every active FreeBSD interface.
2. Remove six specified, unreferenced private constants from
   `src/erofs_defs.h`.
3. Rename the private checksum helper in `src/super.c` without changing its
   signature, body, call position, or behavior.

Each source change must remain an independent commit. This phase does not add
features, fix behavior, move responsibilities between files, reorder data
structures, alter ABI, or broadly reformat code.

## Required FreeBSD Differences

Linux and FreeBSD EROFS remain independent implementations. The following
platform boundaries are intentional and must not be replaced merely to make
the source look more similar:

- FreeBSD VFS, vnode, mount, namecache, pager, and NFS export interfaces.
- FreeBSD buffer/cache, GEOM provider, device I/O, locking, and allocation
  APIs.
- FreeBSD xattr, ACL, errno, kernel-module, and `bsd.kmod.mk` conventions.
- FreeBSD build gates, including the current amd64 restriction and optional
  `ZSTDIO` integration.

Linux naming and layout should be followed only when doing so preserves these
native contracts and makes cross-repository review easier.

## Excluded Work

This phase does not address vnode ownership after `insmntque()` failure,
large-run allocation and `uiomove()` limits, compact pblk validation, 48-bit
boundaries, decompressor descriptors, backend ABI, typed errno, xattr parsing,
ACL behavior, file splitting, build-system alignment, CI, or test tooling.

## Validation Status

Only static snapshot and Git allowlist checks were performed for the
initialization commits. No build, QEMU run, test script, smoke test, mount, or
runtime feature check was performed. All runtime capabilities therefore remain
`NOT RUN` for repo-pre-2 until a later, explicitly authorized validation phase.
