# 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`.