# repo-pre-3 Maintenance Baseline

## Snapshot Identity

`repo-pre-3` was created exclusively from the Git-tracked `repo-pre-2` tree.
Untracked files, ignored files, build outputs, and working-tree-only content
were not copied.

```text
snapshot source commit:   034f409841d2edaf7f140fc7475a357c924a5930
snapshot creation commit: 865a702341a82e61ab5ca1d5708a28005277cc0a
repo-pre-2 source tree:   c28e015c74f4d012dfd070f887fabf75d4d4cb16
repo-pre-3 snapshot tree: c28e015c74f4d012dfd070f887fabf75d4d4cb16
tracked files per tree:   281
```

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

## Phase Scope

Pre3 is an L1 mechanical naming-alignment stage. It contains four independent
source tasks:

1. Rename `erofs_init_xattr_prefixes` and
   `erofs_cleanup_xattr_prefixes` to the Linux-like lifecycle names
   `erofs_xattr_prefixes_init` and `erofs_xattr_prefixes_cleanup`.
2. Rename the private ACL helper `erofs_getacl` to `erofs_get_acl`.
3. Rename `erofs_close_device` to `erofs_release_device_info` while retaining
   its FreeBSD implementation.
4. Rename the private mount-state destructor `erofs_free_mount` to
   `erofs_sb_free` while retaining its complete FreeBSD cleanup body.

Only function names and their closed sets of declarations, definitions, and
call sites may change. Signatures, behavior, control flow, ordering, locking,
ownership, error handling, and file responsibilities must remain unchanged.

## Required FreeBSD Differences

- Xattr-prefix helpers continue to use `struct erofs_mount *`, not Linux
  `struct super_block *`.
- ACL handling continues to use FreeBSD `struct vnode *`, `struct acl *`, and
  integer errno conventions.
- Device teardown continues to release GEOM consumers, vnode references, and
  cdev references in the existing order and under the existing locking rules.
  It must not adopt the Linux callback signature or ownership model.
- Mount-state teardown continues to release all FreeBSD GEOM and private
  filesystem state. A Linux-like name does not make the implementations or
  lifecycle contracts interchangeable.

## Excluded Work

Pre3 does not include feature changes, correctness fixes, ABI changes, codec
work, xattr or ACL behavior changes, function reordering, structure layout
changes, file splitting, build-system changes, formatting cleanup, or repairs
to earlier planning and snapshot material.

## Git Workflow

The snapshot, this baseline document, and each of the four rename batches are
separate commits. Every commit must be pushed immediately to `xdm main` and
must not be squashed with another batch. Before each commit, its staged paths
must be checked against the task-specific allowlist. After each push, local
`HEAD`, `xdm/main`, and remote `main` must identify the same commit.

## Validation Status

Only static snapshot-equivalence, path-allowlist, Git-state, and documentation
checks were performed for pre3 initialization.

```text
build:             NOT RUN
QEMU:              NOT RUN
test scripts:      NOT RUN
smoke tests:       NOT RUN
mount/runtime:     NOT RUN
feature validation: NOT RUN
```

No compile-time or runtime PASS is claimed by this document. Existing reports
copied from `repo-pre-2` are historical material and are not fresh validation
of `repo-pre-3`.
