# Tipo: ClassifiedFile / DirectoryScanResult

Fuente conceptual: OpenViking `openviking/parse/directory_scan.py` (AGPL-3.0)
Reimplementar desde cero. No copiar codigo.

## Tipos a implementar

### 1. ClassifiedFile (product)

- **Dominio:** infra
- **Lang:** Python
- **Algebraic:** product
- **Definicion:**
  ```python
  @dataclass
  class ClassifiedFile:
      path: str               # path absoluto
      rel_path: str           # relativo a root, siempre forward slashes
      classification: str     # "processable" | "unsupported"
  ```
- **Descripcion:** Un archivo con su clasificacion tras un scan de directorio. `rel_path` siempre usa forward slashes para consistencia cross-platform.

### 2. DirectoryScanResult (product)

- **Dominio:** infra
- **Lang:** Python
- **Algebraic:** product
- **Definicion:**
  ```python
  @dataclass
  class DirectoryScanResult:
      root: str
      processable: list[ClassifiedFile] = field(default_factory=list)
      unsupported: list[ClassifiedFile] = field(default_factory=list)
      skipped: list[str] = field(default_factory=list)      # "path (reason)"
      warnings: list[str] = field(default_factory=list)
  ```
- **Metodos:**
  - `all_processable_files() -> list[ClassifiedFile]` — alias de processable, para API clara
- **Descripcion:** Resultado de un pre-scan de directorio. Clasifica todos los archivos en procesables vs no soportados, y reporta archivos/dirs que se skipearon (dot files, symlinks, dirs ignorados) con la razon del skip.
- **Uso:** Validacion previa antes de importar un directorio completo. Permite reportar archivos no soportados al usuario antes de procesar.
