# 01 — El proyecto

## Qué es

Un generador de imágenes anime con personajes de catálogo. Stable Diffusion WebUI
Forge Neo, checkpoint `waiIllustriousSDXL_v170`, catálogo de **216 personajes**
cada uno con su LoRA.

Hasta ahora las prompts se escribían a mano o se montaban con wildcards sueltos
(pose + ropa + escena, cada una de su pool). El problema que había: no había
forma de saber si una pose funcionaba bien, porque cada prueba mezclaba pose,
ropa, personaje y cámara a la vez.

## Qué estamos construyendo

Un paso intermedio: **usar imágenes reales como fuente de poses**.

```
imágenes de referencia  (Archivos/wd14/inbox/)
        ↓  wd14_tagger.py          ← tagger Danbooru (ONNX, CPU)
tags crudos por imagen  (Archivos/wd14/tags/)
        ↓  wd14_blocks.py          ← quita identidad y ropa, parte por severidad
bloques de prompt       (Archivos/wildcards_harvest/bloques_*.txt)
        ↓  test_blocks.py          ← pega el bloque a un personaje y genera
imágenes para auditar   (Output/test_blocks/<pool>/APROBADO | DESCARTADO | ...)
        ↓  auditoría visual humana
pool curado
```

Un **bloque** es una línea de etiquetas Danbooru, en el orden original del
tagger, a la que solo se le quitan dos cosas: la identidad de quien sale en la
foto y toda la ropa. Se queda la pose, la anatomía y lo explícito. Así el bloque
dice "haz esta postura" y quien la hace es el personaje que tú elijas.

## Piezas del repo

| Carpeta | Qué es |
|---|---|
| `Archivos/personajes.txt` | 216 líneas, una por personaje. La clave es el **nombre del LoRA** |
| `Archivos/wd14/inbox/` | Imágenes de referencia. `SFW/` y `NSFW/` |
| `Archivos/wd14/tags/` | Tags que produce el tagger, uno `.txt` por imagen |
| `Archivos/wildcards_harvest/` | Los bloques y sus informes |
| `Archivos/wd14/EJEMPLO_1/` | Prueba manual inicial, 4 PNG + el `.txt` de origen |
| `Config/master_prompt.yaml` | El MASTER (calidad + LoRAs) y el negative |
| `Engine/` | Scripts |
| `Output/test_blocks/` | Todo lo generado para auditar |

## Scripts que importan ahora mismo

| Script | Qué hace |
|---|---|
| `wd14_tagger.py` | imagen → tags Danbooru |
| `wd14_blocks.py` | tags → bloques, pools por severidad, descartes |
| `test_blocks.py` | **ensambla el prompt y genera.** `--pool`, `--all`, `--block` |
| `regen_literal.py` | genera con un prompt literal, tal cual |
| `regen_aprobados.py` | regenera los APROBADOS con el ensamblador actual |
| `dump_aprobados.py` | vuelca los prompts aprobados a un `.txt` |
| `review_pendientes.py` | cruza pendientes con manifests y detecta choques |

## Cosas que no están y conviene no buscar

- `CONTEXTO/` — `AGENTS.md` lo menciona pero **no existe**. Referencia muerta.
- `wd14_harvest.py` — la primera versión, que separaba en buckets y tiraba la
  anatomía. **Superada** por `wd14_blocks.py`. Solo sigue viva porque
  `clean_outfit_tags.py` importa `OUTFIT` y `DROP_IDENTITY` de ella.
- `Engine/merge_harvest_wildcards.py` — se aplicó con el harvest viejo. Antes de
  tocar la progresión otra vez: dry-run y mirar el diff.