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-format 1.0.0 · SPEC 1.0
motor: js/mini.js · 14 familias

.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

    tipos: str, int, float, bool, enum{a|b}, list<str>, mlist<str>, tuple(a:float,b:int)

    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ódigoCondición
    E01no header
    E02prefix ≠ contract
    E03missing n
    E04record count ≠ n
    E05record arity outside core…core+extensions
    E06type mismatch / required empty
    E07list or tuple arity
    E08marker rule violated
    E09bad escape
    E10enum violation
    E11duplicate unique value
    E12header entry malformed/missing
    E13numeric range
    E20/E21invalid 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.