From 482748646e210b2b58b9330fd8a8c5d396ad0d41 Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 7 Oct 2026 21:01:36 +0200 Subject: [PATCH] Handoff: the reminder and the fuzz target done, the locator as decision 6 Co-Authored-By: Claude Opus 5.5 --- HANDOFF.md | 16 +++++++++++----- revision_externa/NOTA_PARA_EL_AUTOR.md | 2 ++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index f6d065d..37637b2 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -16,7 +16,7 @@ Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude. | Repo | Rama y commit | Tags | Qué es | |---|---|---|---| | `datekeys-go` | `v0.16` y `main` en `b6ff17a`; `v0.15` en `70d907b` | `spec-v0.16` en `b6ff17a`, y los de las versiones anteriores | Spec v0.16 aprobada, implementación de referencia, `testdata` compartido. En `v0.15`, tras su tag: `c49c67c` las palabras al azar, `27a75ee` el alfabeto de cada lista y la fuerza de las palabras, `96d8992` arregla `TestGenerate`, `e671032` la lista inglesa de la EFF, `92e7154` los dados, `aefc8f6` lo que dice el SDK al sellar y `70d907b` la licencia CC BY-ND 4.0. En `v0.16`: el borrador (`a2b71c2`, `2c29625`), su implementación (`7e3b810` a `3fd0e93`) y el cierre (`b6ff17a`) | -| `App` (`datekeys-ts`) | `v0.10` y `main` en `2c305cf` | `v0.5.0` en `2c305cf`, `v0.4.0`, `v0.3.0`, `v0.2.0`, `v0.1.0` | Librería TypeScript `0.5.0`, publicada el 7-10, de la spec 0.16, y páginas `/inspect` y `/create`, con las palabras al azar | +| `App` (`datekeys-ts`) | `v0.10` en `f37da12`; `main` en `2c305cf` | `v0.5.0` en `2c305cf`, `v0.4.0`, `v0.3.0`, `v0.2.0`, `v0.1.0` | Librería TypeScript `0.5.0`, publicada el 7-10, de la spec 0.16, y páginas `/inspect` y `/create`; en desarrollo la `0.6.0`, con el recordatorio | | `datekeys-dart` | `v0.16` en `b53afdc`; `v0.15` en `e2296b0` | ninguno | Librería Dart completa, de la spec 0.16, con las palabras al azar; las ramas `v0.11` a `v0.15` se quedan atrás | | `docs` | `main` | — | Este repo | | `web` | `main` en `f2b8a38` | — | Landing de datekeys.com, sin remoto | @@ -60,9 +60,15 @@ La recuperación a largo plazo quedó hecha con la v0.15, las palabras al azar e 3. **La lista española de palabras**: que la revise alguien que hable español, o rehacerla con el corpus de Leipzig cuando su web vuelva (la descarga el autor: bloquea a los agentes). 4. **Un archivo o servicio de caché de releases** (§50): dónde, quién lo mantiene y si DateKeys ofrece el suyo. 5. **Dónde se publica**: el código (ni GitHub ni el Gitea), la página web (§59) y con ello `words.datekeys.com`, el paquete de recuperación (decisión 5 de la v0.16) y la primera release del módulo de Go. -6. **Menores**: renombrar la carpeta `App` y borrar `enquiry.php` de la raíz (desde el 29-09); un remoto para `web`; el permiso para reportar el posible fallo de dart2js. +6. **El localizador en las páginas** (§44.1): el lector MUST comprobar en cada conexión que la IP a la que resuelve una dirección es pública, y un navegador no ve esa IP. Propuesta: `/inspect` abre el localizador y muestra sus direcciones, la persona descarga el resto por su cuenta y lo da a la página, que no se conecta a nada; `/create` no crea sobres hasta que haya dónde alojar el resto. La otra opción, descargar desde la página, incumple el §44.1. +7. **Menores**: renombrar la carpeta `App` y borrar `enquiry.php` de la raíz (desde el 29-09); un remoto para `web`; el permiso para reportar el posible fallo de dart2js. -**Lo que sigue sin decisiones** («Librerías y clientes»): el aviso local para `round_time` (§62.1, regla 26, MAY), un objetivo de fuzzing para el lector estricto del JSON de drand, y el localizador en las páginas. +**Hecho después del cierre de la v0.16, sin decisiones** (7-10 por la noche): +- `provider.FuzzStrictJSON` (`0eb5aa0`), el objetivo 28 de `scripts/fuzz.sh`: lo que acepta el lector estricto del JSON de drand, `encoding/json` lo lee con los mismos nombres, textos, cadenas y ronda; 60 s sin diferencias. +- **El recordatorio en el calendario** (§62.1, regla 26, MAY): `encrypt -reminder` en Go (`7e6a03d`, `92f8cdc`) y «Descargar el recordatorio» en `/create` (`f37da12`, TypeScript `0.6.0-dev`). Un `.ics` (RFC 5545) a la hora de la ronda, con alarma y lo que hará falta para abrirla; los mismos bytes en Go y TypeScript, comparados con un texto calculado aparte. UID al azar; avisa de que un calendario sincronizado sabrá el nombre y la fecha. Probado en la página construida. +- La fila §62.1 de la trazabilidad decía en `b6ff17a` que la CLI no cumplía las reglas 26 y 27, que cumple desde `aefc8f6`: corregida en `7e6a03d`. El paquete de la revisión congela `b6ff17a`, con esa errata. + +Sin decisiones no queda nada en «Librerías y clientes» salvo esperar a grpc 1.85.0. ### Protocolo @@ -88,9 +94,9 @@ La recuperación a largo plazo quedó hecha con la v0.15, las palabras al azar e - los dados protegen de un generador trucado, no de una app que se quede con las palabras: eso solo lo cubre una app auditable (§59); - el servicio `words.datekeys.com`, cuando haya sitio propio: ver las decisiones; - quizá el alfabeto por idioma como regla del SDK en la versión siguiente del spec (§38.1). El riesgo de fondo es la app misma, que puede cambiar el generador: §59, builds reproducibles y releases firmadas. -- **Lo que queda de las recomendaciones al SDK:** el aviso local para `round_time` (§62.1, regla 26, MAY). +- **Las recomendaciones al SDK** están todas: el aviso local para `round_time` (§62.1, regla 26, MAY) es el recordatorio en el calendario (7-10). - **La página web, cuando se publique** (§59): builds reproducibles con sus hashes, Subresource Integrity y un cliente sin conexión. -- **El localizador en las páginas:** las tres librerías lo tienen, pero `/create` no crea sobres e `/inspect` no descarga el resto. +- **El localizador en las páginas:** las tres librerías lo tienen, pero `/create` no crea sobres e `/inspect` no descarga el resto. Espera la decisión 6 de arriba: un navegador no puede comprobar la IP del §44.1. - **Go no tiene ninguna release del módulo**; la primera, cuando haya un repo accesible desde fuera para `go get`. govulncheck avisa de GO-2026-6443 en grpc, que el código no alcanza: subir grpc cuando salga la 1.85.0. - **Dart:** sin versión ni tag. Medir los tiempos en un móvil espera a la app. diff --git a/revision_externa/NOTA_PARA_EL_AUTOR.md b/revision_externa/NOTA_PARA_EL_AUTOR.md index d8428de..d4cdc52 100644 --- a/revision_externa/NOTA_PARA_EL_AUTOR.md +++ b/revision_externa/NOTA_PARA_EL_AUTOR.md @@ -53,6 +53,8 @@ La documentación atrasada de la v0.14 (la trazabilidad, los README, la cabecera ### Lo que no he podido comprobar +- Una errata en el commit congelado: la fila §62.1 de `docs/traceability.md` en `b6ff17a` dice que la CLI no cumple las reglas 26 y 27, y las cumple desde `aefc8f6`. Está corregida después del tag, en `7e6a03d`; si el revisor la ve, es documentación atrasada. + - Que el H3 del texto coincide con `h3` de kyber: lo dice el spec y lo comprueban los vectores (`tlock_steps.json`, generado contra kyber), pero quien escribió el paquete no leyó kyber. Está como pregunta Q10. - Los gates sí se pasaron en los commits congelados de la v0.16, en la misma sesión que puso el paquete al día (ver «Orden», punto 2).