English · Español
Lab 00 — Escribe data/corpus_spec.md (la spec canónica)¶
Objetivo: antes de que se ejecute código alguno, escribe la spec legible por humanos del corpus: la tabla de verbos, los esquemas de tiempo, la taxonomía de mis-conjugaciones, el JSONSchema de fila. El validador y el generador se derivan de este documento.
Tiempo estimado: 90–120 minutos (mayormente tipear la tabla de verbos + emparejamientos en español).
Prerrequisito: teoría
00..03.mdleída.
Lo que produces¶
Un único archivo commiteado data/corpus_spec.md que contiene:
- Preámbulo — versión del corpus (
1.0.0), referencia de alcance (§A13), licencia. - La tabla de 20 verbos (inglés → español con regularidad por idioma y columnas de formas irregulares).
- Los 6 esquemas de forma superficial de tiempo (una sección por tiempo, con los patrones en inglés y español para cada persona).
- La taxonomía de mis-conjugaciones (6 tipos en v1).
- El JSONSchema de fila (como un bloque de código — machine-readable).
- Reglas de validación (en prosa) que el script validador debe implementar.
data/corpus_spec.md es el contrato. El generador lee de él (conceptualmente); el validador verifica contra él.
TODOs¶
Bloque A — preámbulo¶
- Título, versión, fecha.
- Cita §A13 (gramática verbal en inglés) y §A2 (emparejamiento en español) por archivo+sección.
- Resumen de un párrafo en inglés.
- Resumen de un párrafo en español (según CLAUDE.md §0.6, la política bilingüe).
Bloque B — la tabla de 20 verbos¶
- Lista los 20 verbos (12 regulares + 8 irregulares) según §A13.
- Para cada uno, rellena: lema en inglés, lema en español, regularidad-EN, regularidad-ES.
- Para los 8 irregulares en inglés, añade columnas: past simple, past participle.
- Para los irregulares en español (los que sean), añade una nota corta (p. ej., "stem change e→ie") en lugar de enumerar cada forma (el generador maneja eso).
- Sección de notas: colisiones (
watch/lookambos →mirar), sintaxis invertida (like→gustar).
Formato sugerido:
| English | Spanish | EN_reg | ES_reg | EN past | EN participle | Notes |
|---------|---------|---------|---------|---------|---------------|--------------------|
| work | trabajar| reg | reg | worked | worked | |
| go | ir | irreg | irreg | went | gone | ES highly irreg |
| like | gustar | reg | reg | liked | liked | inverted syntax |
| ... | ... | ... | ... | ... | ... | ... |
Bloque C — esquemas de forma superficial de tiempo¶
- Seis subsecciones, una por forma superficial:
infinitive,present_simple,past_simple,past_participle,future_will,future_going_to. - Cada subsección muestra patrones en inglés + español para las 3 personas (
1sg,2sg,3sg). - Marca el "giro" morfológico para cada uno: p. ej.,
-spara 3sg present; acuerdo del auxiliarto beenfuture_going_to. - Para cada forma superficial, proporciona un ejemplo completamente trabajado para un verbo regular (
work) y un verbo irregular (go).
Bloque D — taxonomía de mis-conjugaciones¶
- Lista los 6 tipos v1 de la teoría 01 (
missing_third_person_s,overregularization_past,wrong_aux_will_with_to,wrong_aux_going_to_missing_ing,subject_verb_disagreement,bare_participle_missing_aux). - Para cada uno: condiciones de activación (qué celdas son elegibles), un ejemplo, la forma correcta, explicación pedagógica de una frase.
- Nota que la taxonomía está cerrada para v1 — cualquier tipo nuevo requiere una subida de versión de la corpus-spec.
Bloque E — JSONSchema de fila¶
- Embebe un JSONSchema para el formato de fila (según teoría 01). Usa draft-07 o 2020-12.
- Campos:
id,text,spanish,verb_lemma,spanish_lemma,tense,person,english_regularity,spanish_regularity,label,mis_conjugation_type,correct_form,seed,fingerprint. - Requerido vs opcional claramente marcado.
mis_conjugation_typeycorrect_formsonnullables pero el validador hace cumplir la restricción cruzada de campos (ambos poblados siilabel = "mis_conjugated"). - Enums para
tense,person,label,mis_conjugation_type,english_regularity,spanish_regularity.
Bloque F — reglas de validación en prosa¶
Lista las 12 verificaciones de la teoría 02:
- Validez del esquema.
- Sin duplicados exactos por fingerprint.
- Cobertura de celda: 360 celdas todas tienen ≥ 1 fila correcta.
- Los 20 verbos presentes.
- Las 6 superficies de tiempo por verbo.
- Las 3 personas por (verbo, tiempo).
- Tipos de mis-conjugación de la taxonomía canónica.
- Las filas de mis-conjugación tienen
correct_formpoblado. - Las filas correctas tienen
mis_conjugation_type = null. - Cada fila tiene un campo de español.
- Normalización NFC.
- Longitud de texto en rango.
- (Post-split) sin solapamiento de fingerprint y sin solapamiento cross-split de (verbo, tiempo).
Bloque G — verificación de cordura¶
- Añade una sección final: "Ejemplo trabajado de una celda." Escoge
(work, present_simple, 3sg). Escribe la fila JSON en completo. Muestra que satisface cada regla listada en el Bloque F.
Restricciones¶
- Solo Markdown, sin código más allá de bloques JSON / JSONSchema en línea. Este es el contrato, no la implementación.
- Sin enlaces externos a Wikipedia/recursos de gramática en v1; la tabla es auto-contenida. Si necesitamos citar algo, va en
docs/phase-12-corpus-design/theory/. - El español debe ser NFC. Tipea
ñ, non + ˜(tilde combinante). Verifica concat -vopython -c "import unicodedata; print(unicodedata.is_normalized('NFC', open('data/corpus_spec.md').read()))". - Fija la versión en 1.0.0. Cualquier cambio futuro incrementa según la tabla semver en la teoría 03.
Condiciones de parada¶
Has terminado cuando:
data/corpus_spec.mdexiste y está commiteado.- La tabla de 20 verbos tiene las 20 entradas con emparejamientos en español y columnas de formas irregulares rellenas.
- Los 6 esquemas de forma superficial de tiempo están documentados con ejemplos trabajados para verbos regulares e irregulares.
- Los 6 tipos de mis-conjugación están documentados con ejemplos y patrones de corrección.
- El JSONSchema está embebido y es válido (puedes pegarlo en un validador JSONSchema y que acepte una fila de muestra).
- Las 12 reglas de validación están listadas en prosa.
Escollos¶
- Codificación de acentos en español. Si tu editor guarda NFD, tu spec está incorrectamente codificada. Verifica NFC.
- Ambigüedad de traducción.
bepuede serseroestar. La spec debe escoger una (defaultser) y documentar la elección — no dejarla ambigua para el generador. - Stems irregulares en español. Para irregulares en español (p. ej.,
tener → tengopara 1st-sg presente), la spec puede o bien enumerar las formas irregulares o describirlas por regla. Recomendación: enumerar. Las reglas son imanes de bugs. - Inversión de sintaxis
like→gustar. Fácil de olvidar. La spec debe destacar esto explícitamente para que los esquemas del generador paralikeno sigan el patrón estándar. - Olvidar
was/wereparabepast.I was,you were,he was. La spec debe codificar esta distinción.
Pista de último recurso¶
Si llevas 2 horas y la tabla de verbos sigue medio vacía: no perfecciones el español — escoge una traducción canónica por verbo en inglés, documenta cualquier incertidumbre en la columna de Notas y sigue. El lab es sobre asentar la spec, no sobre ser un lingüista del español. La revisión en español de Borja detectará errores en tiempo de validación.
Cuándo consultar solutions/¶
Después de que la spec esté commiteada. Solución: solutions/00-corpus-spec-ref.md (apertura de fase) contiene una tabla de 20 verbos de referencia y el JSONSchema canónico.
Siguiente lab: lab/01-implement-generator.md.