{
 "suite": "torculo-conformance",
 "suite_version": "0.2.0",
 "cases_sha256": "f9e4aa68ead26fb3b6cbc60281619f51dd2f12acc90739f8ed6614111aeb1d86",
 "fecha": "2026-10-15T14:13:43",
 "segundos": 62.8,
 "implementaciones": {
  "lengua": {
   "implementacion": "manim-saorin",
   "version": "1.0.0b1",
   "epoca": "MESA v2 beta",
   "commit": "3f34801"
  },
  "canon": "canon/gen (python, typescript, rust, wgsl, css)",
  "laminas": "pluma (python, wasm, rust)",
  "tomas": "conformance/tools/toma.py sobre tomas del fork",
  "mesapack": "conformance/tools/mesapack.py y `mesa empaqueta`",
  "materias": "conformance/tools/materias.py sobre materias/shaders"
 },
 "resumen": {
  "pasa": 89,
  "falla": 0,
  "pendiente": 5,
  "omitido": 8
 },
 "por_clase": {
  "banda": {
   "omitido": 2
  },
  "canon_azar": {
   "pasa": 3
  },
  "canon_paleta": {
   "pasa": 5
  },
  "cierre": {
   "pasa": 3,
   "pendiente": 1
  },
  "espejo": {
   "pendiente": 1
  },
  "huella": {
   "omitido": 2
  },
  "ir": {
   "pasa": 12
  },
  "lamina": {
   "pasa": 6,
   "omitido": 3
  },
  "lee": {
   "pasa": 31,
   "pendiente": 3
  },
  "materia": {
   "pasa": 10
  },
  "mesapack": {
   "pasa": 10
  },
  "mesapack_referencia": {
   "omitido": 1
  },
  "toma": {
   "pasa": 8
  },
  "vocabulario": {
   "pasa": 1
  }
 },
 "resultados": [
  {
   "id": "banda-estampas",
   "kind": "banda",
   "estado": "omitido",
   "detalle": "clase pesada: con --pesado"
  },
  {
   "id": "banda-oficio",
   "kind": "banda",
   "estado": "omitido",
   "detalle": "clase pesada: con --pesado"
  },
  {
   "id": "canon-azar-python",
   "kind": "canon_azar",
   "estado": "pasa"
  },
  {
   "id": "canon-azar-rust",
   "kind": "canon_azar",
   "estado": "pasa"
  },
  {
   "id": "canon-azar-typescript",
   "kind": "canon_azar",
   "estado": "pasa"
  },
  {
   "id": "canon-paleta-css",
   "kind": "canon_paleta",
   "estado": "pasa"
  },
  {
   "id": "canon-paleta-python",
   "kind": "canon_paleta",
   "estado": "pasa"
  },
  {
   "id": "canon-paleta-rust",
   "kind": "canon_paleta",
   "estado": "pasa"
  },
  {
   "id": "canon-paleta-typescript",
   "kind": "canon_paleta",
   "estado": "pasa"
  },
  {
   "id": "canon-paleta-wgsl",
   "kind": "canon_paleta",
   "estado": "pasa"
  },
  {
   "id": "cierre-dirigido",
   "kind": "cierre",
   "estado": "pasa"
  },
  {
   "id": "cierre-escena",
   "kind": "cierre",
   "estado": "pasa"
  },
  {
   "id": "cierre-servilleta",
   "kind": "cierre",
   "estado": "pendiente",
   "detalle": "La referencia rompe el cierre en una servilleta con banda: `mesa escribe` reescribe el preámbulo y pierde BANDA, EFECTOS, MEZCLA, MÚSICA y AMBIENTE (la IR escrita ya no suena). [/banda: sonido/banda ≠ None; /beats[0]/aspecto/ambiente: amb sala bucle ≠ None; /beats[0]/aspecto/musica: 1M1 ≠ None; /beats[1]/aspecto/ambiente: amb sala bucle ≠ None; /beats[1]/aspecto/musica: 1M1 ≠ None; /beats[2]/aspecto/ambiente: amb sala bucle ≠ None; /beats[2]/aspecto/musica: 1M1 ≠ None; /beats[3]/aspecto/ambiente: amb sala bucle ≠ None]"
  },
  {
   "id": "cierre-taller",
   "kind": "cierre",
   "estado": "pasa"
  },
  {
   "id": "espejo-taller",
   "kind": "espejo",
   "estado": "pendiente",
   "detalle": "La referencia rompe la ley del espejo con la MANO de este pliego: importada desde `manos/firme.mano`, `toca la truca: sí` se lee como `no`; escrita en línea, `precisión alta` queda como una clave sin normalizar al lado de `precision alta`; y `parte` pierde el nombre de la sección (`#TALLER collage` → `#TALLER`). [MANO efectivo distinto: toca la truca: no; toca la truca: si]"
  },
  {
   "id": "huella-estampas",
   "kind": "huella",
   "estado": "omitido",
   "detalle": "clase pesada: con --pesado"
  },
  {
   "id": "huella-oficio",
   "kind": "huella",
   "estado": "omitido",
   "detalle": "clase pesada: con --pesado"
  },
  {
   "id": "ir-aspecto",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-banda",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-camara",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-cartel",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-dirigido",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-escena",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-estampas",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-oficio",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-oido",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-raccord",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-servilleta",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "ir-taller",
   "kind": "ir",
   "estado": "pasa"
  },
  {
   "id": "lamina-manicula-python",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lamina-manicula-rust",
   "kind": "lamina",
   "estado": "omitido",
   "detalle": "Rust: con --pesado"
  },
  {
   "id": "lamina-manicula-wasm",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lamina-nota-aqui-python",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lamina-nota-aqui-rust",
   "kind": "lamina",
   "estado": "omitido",
   "detalle": "Rust: con --pesado"
  },
  {
   "id": "lamina-nota-aqui-wasm",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lamina-tintero-python",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lamina-tintero-rust",
   "kind": "lamina",
   "estado": "omitido",
   "detalle": "Rust: con --pesado"
  },
  {
   "id": "lamina-tintero-wasm",
   "kind": "lamina",
   "estado": "pasa"
  },
  {
   "id": "lee-aspecto",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-banda",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-camara",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-cartel",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-dirigido",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-accion",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-afecto",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-ambiente",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-ambiguedad",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-ancla",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-bestiario-ausente",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-collage",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-color-voz",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-cue",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-dibujo",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-efecto",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-epoca",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-espacio",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-evento",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-funcion",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-gritos",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-letra-preambulo",
   "kind": "lee",
   "estado": "pendiente",
   "detalle": "La referencia acepta `LETRA` (una línea de clip) en el preámbulo sin error y la descarta en silencio: el signo no llega a la IR. Por la ley de las tres sedes (§3) una línea fuera de su sitio es un error (E090), nunca una línea que desaparece. [esperado {'avisos': ['W113'], 'errores': ['E090'], 'valido': False}, da {'valido': True, 'errores': [], 'avisos': ['W113', 'W124']}; mensajes: ['sin «silencio final» declarado (se aplica 3)', 'línea 12 · página vacía · b01: el beat corta a un cuadro nuevo y no po']]"
  },
  {
   "id": "lee-errores-letrero",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-movimiento",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-pantalla",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-pieza-sin-reparto",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-errores-reservada",
   "kind": "lee",
   "estado": "pendiente",
   "detalle": "La referencia acepta `REPARTO nota: …` sin error y luego trata `nota:` como directiva (avisa «clip vacío»). §5.5 y §6.4 exigen E021 al declarar un hablante con una palabra reservada. [esperado {'avisos': ['W113'], 'errores': ['E021'], 'valido': False}, da {'valido': True, 'errores': [], 'avisos': ['W113', 'W116']}; mensajes: ['línea 12 · b01: clip vacío', 'sin «silencio final» declarado (se aplica 3)']]"
  },
  {
   "id": "lee-escena",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-estampas",
   "kind": "lee",
   "estado": "pendiente",
   "detalle": "La referencia avisa «clip vacío» (W116) en un clip cuyo único contenido es un signo (`LETRA`). Según §8.3 un signo es una pieza y el clip no está vacío. [esperado {'avisos': ['W112'], 'errores': [], 'valido': True}, da {'valido': True, 'errores': [], 'avisos': ['W112', 'W116']}; mensajes: ['porcentaje pobre 82 % (sano: ≥85 %). 7 líneas con cifras; el pliego di', 'línea 39 · b03: clip vacío']]"
  },
  {
   "id": "lee-oficio",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-oido",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-raccord",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-servilleta",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "lee-taller",
   "kind": "lee",
   "estado": "pasa"
  },
  {
   "id": "materia-acuarela",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-difuminado",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-papel",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-pincel",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-risografia",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-rota-m001",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-rota-m004",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-rota-m005",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-tejido",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "materia-transicion",
   "kind": "materia",
   "estado": "pasa"
  },
  {
   "id": "mesapack-formato-futuro",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-hash-roto",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-ida-y-vuelta-dirigido",
   "kind": "mesapack_referencia",
   "estado": "omitido",
   "detalle": "clase pesada: con --pesado"
  },
  {
   "id": "mesapack-minimo",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-no-zip",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-ruta-peligrosa",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-sidecar-absoluto",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-sin-declarar",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-sin-manifiesto",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-sin-pliego",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "mesapack-sin-versiones",
   "kind": "mesapack",
   "estado": "pasa"
  },
  {
   "id": "toma-bano",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-estampa",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-codigo-desconocido",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-cortada",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-post-fuera-de-sitio",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-sin-start",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-tras-end",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "toma-invalida-version-upstream",
   "kind": "toma",
   "estado": "pasa"
  },
  {
   "id": "vocabulario-parser",
   "kind": "vocabulario",
   "estado": "pasa"
  }
 ]
}
