Saltar al contenido

Seis pasos, sin permiso

Escribe un kit en tu lenguaje.

Un kit es Quo escrito en algún lenguaje por alguien, y cualquiera puede escribir uno solo con los documentos publicados. Seis pasos, cada uno dice qué leer y cómo se ve terminado. Nadie lo registra, nadie lo aprueba, y el comprobador es el único juez.

?la plantilla, sin casapuesta sobre un kit
01

Lee la spec, entera.

SPEC.md es todo Quo. No presupone nada de ningún otro documento y no se apoya en nada salvo los estándares que nombra. Cada término se define donde se introduce.

Terminado cuando has leído cada capítulo, y para cada regla puedes decir qué bytes fija.

02

Responde las preguntas antes del código.

KIT-SPEC.md plantea 28 preguntas, cada elección que SPEC.md deja a un kit. Pregunta y nunca responde, y se acepta cualquier respuesta.

Terminado cuando las 28 están respondidas, cada una con su razón, en un documento propio junto a donde estará el código.

03

Escribe solo desde la spec.

Ningún kit es la referencia, y ninguno está pensado para importarse. Cada uno de los 5 ejemplos se escribió en frío, por un agente que solo tenía los documentos publicados y el verificador, y nunca otro kit.

Terminado cuando tu kit está escrito desde los documentos, sin ningún otro kit abierto.

04

Monta el harness.

HARNESS.md es herramienta de pruebas junto al protocolo, en 2 partes: qué responde un kit para ser juzgado sin portador, y qué responde para ser juzgado con sus bytes transportados. Un kit bajo él es un ejecutable, llamado stand, que lee peticiones por stdin y escribe respuestas por stdout.

Terminado cuando tu programa stand responde a cada petición de ambas partes, o responde bad request donde no tiene ese lado.

05

Pasa el verificador.

El verificador juzga tu kit como puerta, como quien pide, como listener y como quien marca en cada portador que sostiene, y como lector del at en una invitación y en una respuesta. Solo rechaza donde SPEC.md fija los bytes. Desde la carpeta de ejemplos, con la carpeta de tu kit y su programa stand:

node ../verifier/cli.js --cwd go -- ./stand

Terminado cuando el verificador sale con 0: ninguna comprobación falló. Eso es necesario, y no dice nada sobre si tu kit es bueno.

06

Encuentra otro kit.

Dos kits cualesquiera se juzgan juntos a través del proxy del verificador: un ward está en uno, el otro le pide por cada portador que ambos comparten, y sobre TCP las tramas llegan tarde, dos veces, desordenadas, alteradas y nunca.

node ../verifier/cli.js --two -- "$PWD/go/stand" -- "$PWD/rust/target/debug/stand"

Terminado cuando tu kit pasa con cada otro kit, en ambas direcciones.