diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index a6e2f3d..5290833 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,6 +1,6 @@ -# Handoff DateKeys, 26 de septiembre de 2026 +# Handoff DateKeys, 26 de septiembre de 2026 (actualizado el 28) -Estado al parar la sesión por el límite semanal de uso. Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude. +Estado al parar la sesión del 26 por el límite semanal de uso, actualizado el 28 de septiembre al cerrar los retoques de la 2.ª revisión (§2.1). Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude. --- @@ -11,46 +11,35 @@ Los dos repos están en el Gitea privado `g.activething.com` (solo LAN, certific | Repo | Rama | Commit | Estado | |---|---|---|---| | `datekeys-go` (`go/DateKeys`) | `main` | `5719f6a` | spec v0.8.1, codec fxamacker. Sin tocar. | -| | `v0.8.2` | `c57ed48` | Estado revisado: spec v0.8.2, codec propio, vectores compartidos, ajustes, enmienda de canonicidad y correcciones de la 1.ª revisión formal. Gate en verde. **No fusionada.** | -| | `wip/review2-fixes` | `69a3342` | Retoques de la 2.ª revisión, **a medias**. Compila y `go test ./...` pasa; el gate completo no se ha ejecutado. | +| | `v0.8.2` | `9ac9cd9` | Spec v0.8.2, codec propio, vectores compartidos, ajustes, enmienda de canonicidad y las dos rondas de la revisión formal. Gate completo en verde el 28-09. **No fusionada en `main`**: falta la aprobación del autor (§2.2). | | `App` (`go/DateKeys-App`) | `main` | `c3c586a` | Librería TypeScript (pasos 1 a 8), página `/inspect`, contraste BLS. `testdata` sincronizado a `c57ed48`. 2 379 tests; `npm run verify` en verde. | | `AppOld` (solo local) | `master` | `4d2b0a1` | Prototipo antiguo. No se toca. | Verificación ya hecha sobre `datekeys-go`: - fuzzing de 30 min en cada uno de los 15 objetivos sobre `3820066`, limpio; - `scripts/check.sh 60s` sobre `f6f2e9f`, limpio; -- diferencial Go/TypeScript de 407 196 entradas contra `f6f2e9f`, con cero diferencias, textos de error incluidos. +- diferencial Go/TypeScript de 407 196 entradas contra `f6f2e9f`, con cero diferencias, textos de error incluidos; +- `scripts/check.sh` sin fuzzing sobre `9ac9cd9`, limpio (28-09). El `scripts/check.sh 60s` de §2.2 sigue pendiente. govulncheck no encuentra nada alcanzable; avisa, sin llamada alcanzable, de GO-2026-6443 (`google.golang.org/grpc` 1.84.0, arreglado solo en una versión `-dev`) y de GO-2026-5932 (`golang.org/x/crypto/openpgp`, sin arreglo; no lo importamos). Subir grpc cuando salga la 1.85.0. --- ## 2. Qué queda, en orden -### 2.1 Terminar los retoques de la 2.ª revisión (rama `wip/review2-fixes`) - -La segunda revisión confirmó bien aplicadas las 9 correcciones de la primera y pidió estos retoques, ninguno de los cuales cambia un código ni un vector: - -| # | Retoque | Estado en `69a3342` | -|---|---|---| -| 1 | `testdata/README.md`: decir que las extensiones del corpus están registradas en los dos arrays de todos los objetos (Registry sin `Placement`) | pendiente | -| 2 | §72: un encoder MUST NOT escribir una extensión fuera de su registro; §54: "MUST NOT interpretar su `data`" | texto hecho; revisar la comprobación en `capsule/encrypt.go` y `accesskey/accesskey.go` | -| 3 | §17 y §51: los códigos del paso 10 valen para un release suministrado directamente; el de una fuente de red que no verifica se descarta en el paso 9 (`ERR_RELEASE_UNAVAILABLE`) | hecho, revisar | -| 4 | §28.1: "analizan solo la cabecera `age`", en lugar de "leen solo la cabecera", para no chocar con el paso 5 | revisar | -| 5 | Redacción: introducción de §76, "cambian reglas normativas", las dos flechas del paso 9 | hecho en parte, revisar | -| 6 | Un solo código normativo por error: el cliente drand guarda los fallos de cada relay como texto, y el paso 9 reenvuelve con `ERR_RELEASE_UNAVAILABLE` cualquier otro código de una fuente | código y tests hechos (`provider/drand`, `capsule/open.go`, `capsule/release_test.go`) | -| 7 | Test de ubicación en el array no crítico de la `.dkk` (`open.go`, paso 9.a) | hecho, comprobar que falla sin la corrección | -| 8 | `docs/traceability.md`: retitular "Settled … by the v0.8.2 refinements" | pendiente | -| 9 | `README.md` y `README.es.md`: matizar "all authenticated" (§27, §55.1) | pendiente | - -Pendiente además: -- el bloque de §76 "Correcciones de la revisión formal" con un anexo de la 2.ª ronda (retoques 2, 3 y 6); -- el `CHANGELOG.md` de la sección 0.8.2; -- el SHA-256 del spec en `spec/README.md`, calculado sobre los bytes LF: - - ```bash - tr -d '\r' < spec/DateKeys_Protocol_Specification_v0.8.2.md | sha256sum - ``` -- `bash scripts/check.sh` (antes, `git add testdata` si cambió algo en `testdata`); -- fusionar `wip/review2-fixes` en `v0.8.2` y subir. +### 2.1 Retoques de la 2.ª revisión: hechos el 28-09 + +Los 9 retoques están en `datekeys-go` `9ac9cd9`, un solo commit sobre `c57ed48` que absorbe el WIP `69a3342`. La rama `wip/review2-fixes` está borrada, en local y en el remoto. +- §76 los recoge como correcciones 4 a 6, cada una con su caso: + - un encoder MUST NOT escribir una extensión fuera de su registro; + - §17 y §51 dan los códigos del paso 10 solo para un release suministrado directamente; + - en el paso 9, cualquier fallo de la fuente es `ERR_RELEASE_UNAVAILABLE` y ningún otro código. + + Añade además una nota de redacción. §73 ajusta dos líneas. +- La regla del encoder no se comprueba en la librería: `capsule.Encrypt` y `accesskey.Encode` no reciben `Registry`, y la aplica la aplicación. Está documentado en `extension.Placement`. +- `provider/drand.Client.Fetch` tiene una sola salida de error, así que el test de cancelación y de plazo es determinista y falla sin el bloque del contexto. +- Cada test nuevo se ha comprobado haciéndolo fallar sin su corrección. +- También se actualizaron `testdata/README.md`, `docs/traceability.md`, `CHANGELOG.md`, `README.md` y `README.es.md`. +- El spec está fechado el 28 de septiembre de 2026, y `spec/README.md` lleva su SHA-256 nuevo, `5cfa3203…`. +- Ningún fixture ni vector cambia. Solo cambia `testdata/README.md`, que `App` recogerá en §2.3. ### 2.2 Aprobación del autor y cierre de v0.8.2 @@ -60,7 +49,7 @@ Pendiente además: git -C datekeys-go diff main..v0.8.2 -- spec/ ``` - §76 recoge cada cambio con su caso reproducible. + §76 recoge cada cambio con su caso reproducible. Si la aprobación llega otro día, se ajusta la fecha de la cabecera del spec, hoy el 28 de septiembre de 2026, y se recalcula su SHA-256 en `spec/README.md`. 2. Con la aprobación: `scripts/check.sh 60s`, fast-forward de `main` a `v0.8.2` (no squash: `App` fija commits concretos) y tag **`spec-v0.8.2`**. Nunca `v0.8.2`, que Go tomaría como versión del módulo. Subir `main` y el tag. ### 2.3 Sincronizar `App` con el commit final