# Peneira · Manifesto do held-out EVAL-204

> Peza 1 do paquete de recursos (Q3). **Versión 1.0 (selada 2026-07-22).** Documenta o conxunto de avaliación
> selado: os tres grupos (serie 204 / estricto 193 / 11 exclusións por proximidade) e o criterio exacto
> de exclusión. Licenza prevista: **CC BY 4.0**. Atribución normativa: **RAG/ILG (NOMIG 2003) e DRAG**.
>
> _Ed. 2026-07-21 (peza-1-bis, QA do revisor): §3 reescrito coa letra exacta do detector (semente+inv-ben,
> verificado que devolve as 11) · nota de honestidade corrixida a 6 con-erros / 5 correctas + proporcións ·
> §4b engadido (te=CD n=2 no estricto, pendente de veredicto). Ningún cambio toca o dataset v3.2._
> _Ed. 2026-07-21 (peza-1-bis-2): §4 reescrito — cada fila mostra a 5-grama e a frase-fonte real coa que
> colide (derivable do §3, sen narrativa). sx-err-010 colide con «Chameiche a ti onte, non a el», non con «Vinche»._
> _Ed. 2026-07-22 (te=CD opción b): §4b actualizado — `eval_teche_v32.jsonl` conxelado (10 casos, 0 fuga,
> SHA 92892359…), caso 7 substituído (atopar CD-puro), anotación guardia/modelo tras a auditoría adversarial
> de VERBO_REXIME (guardia refinada por contexto, non amputada). Serie-204 e estricto-193 intactos._
> _Ed. 2026-07-22 (rolda 3): heurística refinada — ao atopar preposición CONSÓMESE o PP-adxunto e búscase
> cousa-CD despois («Notáronche no exame moitos erros» → silencio). Os 9 erros seguen cubertos (0 misses).
> Batería rolda 3 + caso cho corrixido («Non cho dei»). eval_teche_v32.jsonl NON se re-conxela._

## 1 · Ficheiros e integridade (SHA-256)
| ficheiro | casos | SHA-256 |
|---|--:|---|
| `eval/eval_set.jsonl` | 90 | `a3a4eb12754943445cd9a756350e3e1f8eddabe6e1e4a4b50c19657b94047703` |
| `eval/eval_extension_v3.jsonl` | 54 | `a766ab7f9fad014fddaebd4418d3fdc5cef03265ee5628386bd4d99aa6b18ad4` |
| `eval/eval_sintaxe_v2.jsonl` | 29 | `720b204494c9eacaa303809244f9cfe63c57190ff5642f2533e3b2d67021c12e` |
| `eval/eval_sintaxe_extension_v3.jsonl` | 31 | `40b854ceb0afaf2a8dac53d9c43e4634a7101b4fe19eeb579eb6a3fded9423ae` |

> _Ed. 2026-07-21 (¿-fix): en `eval_set.jsonl` (err-056) e `eval_extension_v3.jsonl` (ext-err-036) editouse
> SÓ o campo `esperado` dos dous casos «¿» a formato literal verificable (a cor real era 92,4, non 89,5;
> `_hit_correction` non casaba unha descrición). NON se tocaron textos nin fragmentos. Os SHA de arriba xa
> reflicten a edición; substitúen o EVAL-204.manifest.md orixinal (fb8231b5…)._

## 2 · Os tres grupos
- **SERIE COMPLETA = 204** — todo o held-out. Comparable con toda a historia (v2→v3.2).
- **ESTRICTO = 193** — serie − 11 exclusións por proximidade. **A porta de certificación lese aquí.**
- **EXCLUSIÓNS = 11** — casos marcados `fuga:true` (ver §4).

Composición: **126 con-erros + 78 correctas** · núcleo léxico/ortográfico (`eval_set`+`extension` = 144) +
sintáctico-colocación (`eval_sintaxe_v2`+`extension` = 60).

## 3 · Criterio de exclusión (invariante nº8 · detector de case-dup)
Un caso márcase `fuga:true` cando comparte **≥1 xanela de 5 tokens** (normalizada, preservando ñ) con
material **REALMENTE ADESTRADO**: as frases da **semente** de adestramento (`finetune/dataset_peneira.jsonl`)
ou as **formas correctas** do inventario (`exemplo_ben`). **NON** conta o `exemplo_mal` do inventario (é
*definicional*: o inventario contén a frase-erro pero non se adestra sobre ela), **nin** conter unha
interferencia do inventario por si só. Motivo: medir **XENERALIZACIÓN**, non memoria — recitar unha frase
vista non é corrixir.

**Test de aceptación (VERIFICADO)**: aplicar este criterio ás 204 frases devolve **EXACTAMENTE estas 11**,
nin unha máis. Reprodúcese con `qa_dataset._train_sources` filtrando as fontes `dataset` + `inv-ben`
(as etiquetadas FUGA REAL) e cruzando as xanelas de 5 tokens co texto de cada caso. (Criterios máis amplos
—incluír `inv-mal`— darían 26-28 exclusións: NON é o implementado.)

## 4 · As 11 exclusións (auditables, unha a unha)
Cada fila é **derivable do §3**: a 5-grama compartida coa fonte real (semente `dataset` ou `inv-ben`), sen
excepcións narrativas.
| id | tipo | 5-grama compartida | colide con (fonte · frase) |
|---|---|---|---|
| `err-013` | con-erro | «os deberes antes de saír» | inv-ben · «Fixera os deberes antes de saír.» |
| `err-028` | con-erro | «abuela fai un caldo moi» | dataset · «A miña abuela fai un caldo moi bo.» |
| `err-036` | con-erro | «Corta o pan con ese» | inv-ben · «Corta o pan con ese coitelo.» |
| `err-038` | con-erro | «o cumpleaños da miña filla» | dataset · «Mañá é o cumpleaños da miña filla.» |
| `err-045` | con-erro | «Pintou a porta de color» | dataset · «Pintou a porta de color azul.» |
| `ok-011` | correcta | «no parque toda a tarde» | dataset · «Os nenos jugaron no parque toda a tarde.» |
| `ok-013` | correcta | «da vila é do século» | dataset · «O ponte da vila é do século XV.» |
| `ok-025` | correcta | «O can do veciño ladra» | inv-ben · «O can do veciño ladra moito.» |
| `sx-err-010` | con-erro | «a ti onte, non a el» | dataset · «Chameiche a ti onte, non a el.» (te=CD do SINTAXE_CORR) |
| `sx-ok-006` | correcta | «Teño ido moitas veces a» | inv-ben · «Teño ido moitas veces a Compostela.» |
| `sx-ok-008` | correcta | «Hei de rematalo antes do» | inv-ben · «Hei de rematalo antes do venres.» |

**Nota de honestidade**: **6 das 11 son con-erros** (err-013 · err-028 · err-036 · err-038 · err-045 ·
sx-err-010) e **5 son correctas** (ok-011 · ok-013 · ok-025 · sx-ok-006 · sx-ok-008). En proporción:
**6/126 = 4,8 %** dos con-erros excluídos fronte a **5/78 = 6,4 %** das correctas → a exclusión **NON
favorece a detección** (se acaso é lixeiramente máis dura coas correctas). O reparto err/ok segue parello
no estricto (120 con-erros + 73 correctas = 193).

## 4b · A familia te=CD · SUBCONXUNTO DE FAMILIA (opción b · ampliación á parte)
`sx-err-010` («Vinche») está excluído do estricto por proximidade, deixando só 2 te=CD no estricto-193
(`sxext-err-015`, `sxext-err-016`) — mostra grosa. **Resolto por opción (b)**: ficheiro NOVO á parte,
**`eval/eval_teche_v32.jsonl`** (SHA-256 `92892359cac0c6faf568098de5b95bf61959969b06821a84a7f2a27837d4b267`,
10 casos), **pasado polo detector nº8: 0 fuga**. Os 4 ficheiros existentes, a serie-204 e o estricto-193
**quedan INTACTOS** (nada selado se toca; det/cor/hiper/norm.inv lense onde sempre).

A predición **te=CD ≥90 lese no SUBCONXUNTO DE FAMILIA** = 2 do estricto + os 10 novos (7 erros + 3 correctas
de contraste). **A predición non cambia de número, cambia de mostra** (de n=2 inservible a n=12 + 2).

**Anotación guardia/modelo** (tras a auditoría adversarial de VERBO_REXIME, rolda 1+2): a lista pechada
**NON se amputou** —os 24 verbos CD teñen construción «che+cousa» (dativo de posesión), amputar baleiraría a
guardia—; **refinouse por CONTEXTO** (heurística: dispara só se «che» é o obxecto directo — salta adverbios,
**consome o PP-adxunto e busca unha cousa-CD nua despois** (rolda 3), garda de topicalización e de
contraccións cho/cha). **Letra exacta e auditable** en `INVENTARIO-auditado.md §4`. Resultado:
- **9/9 erros te=CD disparan** = os **7 de `eval_teche_v32`** + os **2 do estricto** (`sxext-err-015`,
  `sxext-err-016`) → **os 9 están cubertos pola GUARDIA, cero misses** (verificado tras a rolda 3, incluído
  «Felicitáronche polo teu premio», que dispara porque o PP «polo teu premio» se consome enteiro).
- construcións de dativo («Notáronche o acento», «Notáronche **no exame moitos erros**», «O paquete,
  recibíronche onte», «Vincho onte») quedan en **silencio**. Batería `finetune/test_rexime.py` (rolda 1
  dativos-pegados · rolda 2 adverbio/contracción/topicalización · rolda 3 PP-adxunto): **N/N verde**.
- **Non-ruído coa guardia refinada (rolda 3)**: 0 disparos sobre as 73 correctas do estricto.

## 5 · Reprodutibilidade
O reparto serie/estricto derívase en tempo de benchmark: `finetune/bench_v3.py` (via `agg(..., strict=True)`
en `bench_f1.py`) exclúe os `fuga:true`. O detector que os marcou está en `finetune/qa_dataset.py` (check 7,
xanelas de 5 tokens con `_norm_ntok` que preserva ñ). Ningún caso do held-out se usou nunca como adestramento
(exclusión por `_norm` exacto + 5-grama no ensamblador, `gen_dataset_v3.py`).

## 6 · Licenza e atribucións (previsto, pendente de OK final)
- **CC BY 4.0** para o conxunto de avaliación.
- **Fonte normativa**: Real Academia Galega / ILG — NOMIG 2003 e DRAG (dicionario). Citada como autoridade
  da norma, non como fonte de texto.
- Os textos dos casos son **de autoría propia** (frases construídas para o test), non extraídos de corpus
  con licenza allea.