## Phase 4 Complete: DAT verifier

TL;DR: Implementado `datVerifier` para parsear archivos DAT (XML) y verificar hashes de ROMs (CRC/MD5/SHA1/size). Se añadieron tests TDD y una fixture XML; los tests específicos pasan y se aplicó un parche menor de calidad.

**Files created/changed:**

- backend/src/services/datVerifier.ts
- backend/tests/services/datVerifier.spec.ts
- backend/tests/fixtures/sample.dat.xml
- backend/package.json (se añadió `fast-xml-parser` en devDependencies)

**Functions created/changed:**

- `parseDat(xml: string): DatDatabase` — parsea y normaliza la estructura DAT a un modelo en memoria.
- `verifyHashesAgainstDat(datDb: DatDatabase, hashes): {gameName, romName, matchedOn} | null` — verifica hashes contra el DAT y devuelve la coincidencia.

**Tests created/changed:**

- `backend/tests/services/datVerifier.spec.ts` — cubre parsing, match por CRC/MD5/SHA1/size y ausencia de match.
- `backend/tests/fixtures/sample.dat.xml` — fixture usada por las pruebas.

**Review Status:** APPROVED with minor recommendations

**Git Commit Message:**
feat: add datVerifier and tests

- Añade `datVerifier` con `parseDat` y `verifyHashesAgainstDat`
- Añade tests y fixture XML para validar matching por CRC/MD5/SHA1/size
- Añade `fast-xml-parser` en `backend/package.json` (devDependency)
