Playground
Valida documentos, convierte JSON ↔ .mini, compara tokens contra JSON, YAML, XML, CSV y el codificador oficial de TOON, y diseña tu propia familia. Todo corre en tu navegador.
.mini es una familia de contratos. Cada tarjeta es una familia: un contrato (datos, no código) que interpreta el mismo parser. Pulsa una tarjeta para cargar su ejemplo en el editor. Las flechas de linaje muestran padre → hija: familias que conservan el núcleo y solo añaden campos.
Documento .mini
JSON canónico (edita y pulsa «JSON → .mini»)
Firma del contrato
Bloque de prompt para un modelo generativo (EN)
Bloque de especificación para un modelo generativo (ES)
contract.json
El documento actual del editor (objeto canónico) serializado en todos los formatos a partir de los mismos datos. TOON se codifica con la implementación oficial de referencia de TOON (v4.1.1, incluida). El recuento de tokens usa ….
Tokens por formato
Salida serializada
Diseña una familia en cuatro pasos: (1) elige un padre o empieza en blanco, (2) añade campos — los heredados quedan fijos, los nuevos se añaden al final, (3) lee el contrato y el bloque de prompt, (4) descarga contract.json y ejecuta mini check-forks. Los invariantes de §10 se comprueban en vivo.
1 · Identidad
2 · Campos
Comprobación de invariantes
3 · Contrato generado
Bloque de prompt
Documento de ejemplo
Resultados precalculados de benchmark/run_benchmark.py (o200k_base, n = 12 registros por familia). Las barras son tokens; la línea punteada es la cota inferior de solo contenido (carga útil).
Tokens por formato y familia (n = 12)
Resumen
Estructura
prefix|n=12|key=value|key=a,b,c ← header (contract + count + metadata)
f1|f2|f3,f4*,f5|a,b,c|… ← one record per line, fields by position
list elements separated by ','
selected element ends with *
tuple = fixed comma-separated group
Escapes
\| literal vertical bar (everywhere) \\ literal backslash (everywhere) \n line break inside a value (everywhere) \, literal list separator (inside list elements) \* literal trailing asterisk (inside list elements)
Invariantes de familia
I1 one line = one valid record I4 new fields only at the tail I2 prefix and n are mandatory I5 fixtures must round-trip I3 inherited core never changes (breaking change ⇒ new prefix)
Códigos de error
| Código | Condición |
|---|---|
| E01 | no header |
| E02 | prefix ≠ contract |
| E03 | missing n |
| E04 | record count ≠ n |
| E05 | record arity outside core…core+extensions |
| E06 | type mismatch / required empty |
| E07 | list or tuple arity |
| E08 | marker rule violated |
| E09 | bad escape |
| E10 | enum violation |
| E11 | duplicate unique value |
| E12 | header entry malformed/missing |
| E13 | numeric range |
| E20/E21 | invalid contract / fork invariant |
Especificación completa: /docs/spec/. Índice de errores con una página por código: /docs/errors/. Motor de esta página: js/mini.js, el port JavaScript de la referencia Python.