The editor had written the escapes of the sources as their characters:
the cases "round escaped as round" and "round twice, once escaped as
round" of release.json had a plain round, and the surrogate pair of
"a surrogate pair in a value" a plain emoji, so the shared vectors tested
no escaped name. TestStrictJSON had lost its escaped é, its pair and the
escape after a lone high surrogate. They are escapes again, and the texts
of words_test.go too, so that no mark or invisible character hides in the
source. release.json gained 26 cases of drand's JSON, not 25 as b570338
says; the draft and the CHANGELOG now say 26.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Cómo abrir una cápsula DateKeys sin software de DateKeys
Este texto acompaña a una cápsula del tiempo de DateKeys, un fichero `.dkc`: dice cómo abrirla, llegada su fecha, sin ningún software de DateKeys, por si ya no existe. Es el anexo informativo §79 de la especificación del protocolo DateKeys v0.16, cuyo texto tiene el SHA-256 c13b598fa688f6cd74b7223f34896c30ff091e05df11dad8a02f1ea6bcbb6fa7. Es el mismo para toda cápsula: no lleva ningún dato de esta. Su licencia es CC BY-ND 4.0, Atribución-SinDerivadas 4.0 Internacional (https://creativecommons.org/licenses/by-nd/4.0/deed.es): se puede copiar y compartir sin cambios, citando su origen.
Este texto acompaña a una cápsula del tiempo de DateKeys, un fichero `.dkc`: dice cómo abrirla, llegada su fecha, sin ningún software de DateKeys, por si ya no existe. Es el anexo informativo §79 de la especificación del protocolo DateKeys v0.16, cuyo texto tiene el SHA-256 a3cbdc6ef99aeb3ec77e40c4ce838f6f5b8950af6191383e4033761d2ca1df80. Es el mismo para toda cápsula: no lleva ningún dato de esta. Su licencia es CC BY-ND 4.0, Atribución-SinDerivadas 4.0 Internacional (https://creativecommons.org/licenses/by-nd/4.0/deed.es): se puede copiar y compartir sin cambios, citando su origen.
## 79. Anexo informativo: recuperación sin software DateKeys
@ -4503,7 +4503,7 @@ La v0.16 corrige lo que encontró la revisión de Astra de la v0.15, el 7 de oct
- Cambio: ningún objeto del JSON repite un nombre; los nombres se comparan exactos, tras decodificar sus escapes; un sustituto suelto hace el JSON mal formado; y `round` es un número sin signo, sin fracción ni exponente, de 1 a 2⁵³ − 1. Lo demás es `ERR_RELEASE_INVALID`.
- Motivo: «`round` es un número entero» dejaba la lectura a cada librería de JSON. Las tres implementaciones leen como `encoding/json` de Go, que se queda con el último de dos nombres repetidos y no distingue mayúsculas, y otro lector con `JSON.parse` o con el `json` de Python distingue mayúsculas: la misma entrada daba dos rondas (revisión de Astra, punto 5).
- Caso: `{"round":1000,"ROUND":1001,"signature":…}`, con la firma de la ronda 1000, da `ERR_ROUND_MISMATCH` con `time_only.dkc` en las tres implementaciones, que leen la ronda 1001, y abre la cápsula con un lector que distingue mayúsculas; y `{"round":1000,"round":1001,…}` da la ronda 1001 en las tres, y la 1000 en un lector que se queda con el primero.
- Pruebas: `release.json`, con 25 casos nuevos del JSON de drand (§64), y `provider.TestStrictJSON`, con los bordes de la gramática de RFC 8259 y UTF-8 inválido. `provider/drand` lee las respuestas de los relays con el mismo lector.
- Pruebas: `release.json`, con 26 casos nuevos del JSON de drand (§64), y `provider.TestStrictJSON`, con los bordes de la gramática de RFC 8259 y UTF-8 inválido. `provider/drand` lee las respuestas de los relays con el mismo lector.
6. **Erratas** (§1, §74, §77, §79).
- Cambio: §1 junta en una línea la Release API, la Release Cache y el objeto release; la lista de provisionales de §74 acaba en punto; §77 añade ETSI EN 319 421 y 319 422; §79 nombra las interfaces de `drand/kyber`, que `scripts/recovery` también importa; y la cabecera ya no dice «prevista» de la implementación de referencia.