# Migration Batch 002 — Unlocker Semantic Merge

## Inputs

- `xbox-dvd-tools-src(includes BranchA)(1).zip`
- `xbox-dvd-unlocker-src_BranchB(1).zip`

## Result

Produced the actual source artifact:

- `xbox-dvd-tools_unlocker_semantic_merge_v1.zip`
- SHA-256: `7cf8a00f9455ea61853710245979dcb9cc1988c6644abefeed7009624f9458a8`
- size: `108192` bytes

Static merge validation passed, but the first real MinGW build exposed a C99 declaration-order defect in v1. Semantic merge v2 corrects it. Fresh MinGW, MSVC, and real-hardware validation remain pending.

## Merge Decisions

- Branch A retained as the refactoring, repository-structure, and module-layout base.
- Branch B's more accurate `main.c` behavior promoted to `tools/auth/disc_dump/main.c`.
- Branch B's accuracy and safety improvements in `utils.c/.h` promoted to `common/scsi/utils.c/.h`.
- Branch A `unlock.c` retained to preserve partial authentication stepping.
- `KickXboxMediaAuth()` is not present in the merged canonical runtime. The original branches preserve its historical implementation.
- Branch B firmware-dumper source retained as a separate utility.
- The normal handshake path remains distinct from the patched-firmware bypass command.
- Branch B engineering READMEs retained pending later consolidation and archival.

- Branch A partial-step authentication probe preserved alongside Branch B's normal accurate handshake.
- Branch B SCSI/media implementation promoted into Branch A's modular tree.

## Validation State

The merge is source-complete and structurally reviewed.

The first MinGW compilation attempt reached `unlock.c` and failed on a missing private helper declaration. That defect is corrected in v2. A complete compiler pass and Windows SPTI/real-hardware exercise remain pending.

## Retirement Decision

Both original branches remain **Keep** until the merged executable passes:

1. build validation;
2. non-media command validation;
3. real-disc authentication;
4. Option 1 raw dump;
5. Option 2 XISO dump;
6. sidecar and resource validation;
7. deliberate failure-path testing;
8. comparison with the last known-good Branch B result.

## Retention

- merged source: Keep
- Branch A: Keep until retirement gate passes
- Branch B: Keep until retirement gate passes
- branch-specific historical READMEs: Archive after unique knowledge is migrated
