# Pre12 Batch 04: Private compression header

## Change

- Added `src/compress.h` for the decompressor request, descriptor, and backend
  private declarations previously located in `src/internal.h`.
- Added the header only to `decompressor.c` and the LZ4, LZMA, Deflate, and
  ZSTD backend translation units.
- Kept the runtime compression enum, `z_erofs_parse_cfgs`, and the public
  `z_erofs_decompress` declaration in `src/internal.h`.
- Preserved every migrated declaration signature and storage duration. No
  function body, callback, conditional compilation block, errno path, or
  buffer ownership changed.

## Static validation

- The `compress.h` consumer set is exactly the five planned decompressor
  translation units; `super.c`, `zdata.c`, and all other public callers still
  include only `internal.h`.
- The include graph is acyclic: `compress.h` includes `internal.h`, while
  `internal.h` does not include `compress.h`.
- Exact searches found one definition of each migrated structure and one
  declaration of each migrated backend function. The old declarations are
  absent from `internal.h`.
- The new header contains no Linux page, folio, bio, workqueue, XArray,
  shrinker, compatibility, or related runtime declarations.
- Source diff inspection and declaration normalization confirmed that this is
  a declaration-only move plus the five include additions.
- `git diff --check` and `git diff --cached --check` completed without errors.

## Tests not run

Per the execution constraints, no build, QEMU run, smoke test, feature test,
or other dynamic test was run. The planned `WITH_ZSTDIO=0` and
`WITH_ZSTDIO=1` KLD builds remain required during final validation.
