Saltar a contenido

Versiones del corpus

Una versión del corpus es un conjunto fijo de contracts, byte por byte: v<version>.json lista el id, el path y el SHA-256 de cada contract. Un run registra el hash de cada contract que corrió, así que cualquiera puede revisar qué versión midió (python3 runner/corpus.py of <result.json>).

Dos resultados se pueden comparar contract por contract solo cuando el contract es el mismo archivo en ambos. Los resultados entre sandboxes, o entre versiones de un mismo sandbox, se comparan en la misma versión del corpus, o en los contracts que los dos runs comparten sin cambios (results/versions.md hace lo segundo).

Cuándo cambia la versión

La versión es MAJOR.MINOR. Todo cambio en contracts/ viene con la versión siguiente en el mismo pull request; si no, los tests del lab fallan (runner/corpus.py check).

cambio versión por qué
se agrega un contract minor los resultados anteriores siguen válidos; el nuevo todavía no tiene ninguno
cambia el archivo de un contract (attack, control, assert, policy, fixtures, os, requires, incluso un comentario) minor su hash cambia, así que sus resultados anteriores ya no son de este contract; los demás siguen siendo comparables
se quita un contract, o hay un cambio en el formato de los contracts o en spec/verdicts.md que puede cambiar el resultado de un contract que no cambió major los resultados de antes y de después no se pueden comparar sin volver a correr

Cada manifiesto después del primero lista lo que cambió (since: added, removed, changed). contracts/CHANGES.md dice por qué.

Un run publicado nunca se re-etiqueta: midió la versión cuyos hashes registró. Volver a medir en una versión más nueva es un run nuevo.

Versiones

versión fecha contracts qué
1.0 2026-10-26 194 la primera versión: los contracts de todos los runs hasta el 2026-10-26, con los seis contracts de credenciales enmascaradas. Los runs anteriores corrieron contracts que cambiaron desde entonces y aparecen como pre-1.0
1.1 2026-10-26 196 dos contracts de los tests de permisos de Deno: un read-deny al que se llega por /proc/self/root, y un directorio con write-deny que tiene que sobrevivir a un rm -rf de su directorio padre