Saltar a contenido

Laboratorio de canonicalización

Traducción informativa de la versión en inglés, actualizada el 27/10/2026. Si difieren, prevalece la versión en inglés. Los identificadores, comandos y bloques de código se conservan sin traducir.

Un modelo de diseño ejecutable del candidato no normativo dcp-jcs-v2, con su generador de corpus y su ejecutor. No es un SDK, ni un verificador, ni una comprobación de conformidad: calcula SHA-256 para sus compromisos sintéticos, pero no firma nada ni verifica ninguna firma, y dcp-jcs-v1 sigue siendo el único perfil de canonicalización normativo y predeterminado (las API candidatas de los SDK son experimentales y de activación explícita, véase CI). El diseño, las reglas y lo que el modelo muestra y no muestra están en docs/proposals/canonicalization-candidate/README.md.

Archivo Función
model.py El modelo de diseño (solo lo importa run.py). Su comportamiento ejecutable es el del modelo aprobado; los docstrings aclaran las rutas públicas y la regla supuesta del último duplicado
generate_corpus.py Escribe docs/proposals/canonicalization-candidate/corpus.json; las expectativas se escriben a mano y nunca importa el modelo
run.py Comprobaciones de integridad, frescura, validez y cobertura, los 274 casos y 24 controles negativos

Python 3.9 o posterior en Linux o macOS (Windows no está admitido), solo con la biblioteca estándar. Los comandos se ejecutan desde la raíz de un checkout; desde cualquier otro directorio, da a los scripts sus rutas absolutas. Las salidas van a un directorio temporal nuevo; el ejecutor también rechaza una ruta de salida existente.

out=$(mktemp -d)
python3 -I tools/canonicalization-lab/generate_corpus.py "$out/corpus.json"
cmp "$out/corpus.json" docs/proposals/canonicalization-candidate/corpus.json
python3 tools/canonicalization-lab/run.py --out "$out/run.json"
python3 tools/canonicalization-lab/run.py --controls --out "$out/controls.json"

CI

.github/workflows/canonicalization-lab.yml ejecuta los mismos comandos en Ubuntu con Python 3.9 (el mínimo documentado) y 3.12, solo con la biblioteca estándar, en los push a main y en los pull requests que cambian el workflow, este directorio o docs/proposals/canonicalization-candidate/. Cada job escribe en un directorio temporal nuevo, regenera el corpus y lo compara byte a byte, ejecuta los 274 casos y los 24 controles negativos, y comprueba ambos recuentos; cualquier fallo hace fallar el job.

Comprueba solo el modelo de diseño. No es conformidad de los SDK: las API candidatas de activación explícita de los SDK se prueban con sus propias suites y con la matriz de la fase 4; ningún perfil ni ningún verificador predeterminado ejecuta el candidato, y dcp-jcs-v1 no cambia. Una ejecución en verde dice que el modelo, el corpus y sus expectativas coinciden; no dice nada de ninguna implementación.

Las API opt-in de TypeScript y WASM están disponibles en @dcp-ai/sdk 2.2.0 y @dcp-ai/wasm 2.1.0; los demás SDK tienen publicaciones independientes.