Update the handoff: spec v0.8.2 closed and tagged

The author approved the v0.8.2 text on 2026-09-28. datekeys-go main was
fast-forwarded to 9ac9cd9 after scripts/check.sh 60s passed, and tagged
spec-v0.8.2; App testdata follows it (71ab8fb). Phase 2 is next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main
dev 1 week ago
parent 71ab8fb722
commit e3e18ba97f

@ -1,6 +1,6 @@
# Handoff DateKeys, 26 de septiembre de 2026 (actualizado el 28)
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.
Estado al parar la sesión del 26 por el límite semanal de uso, actualizado el 28 de septiembre tras cerrar la v0.8.2 del spec (§2.1). Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude.
---
@ -10,60 +10,41 @@ 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` | `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. |
| `datekeys-go` (`go/DateKeys`) | `main` | `9ac9cd9` | Spec v0.8.2 cerrada, con el tag anotado **`spec-v0.8.2`**. Codec propio, vectores compartidos, enmienda de canonicidad y las dos rondas de la revisión formal. |
| | `v0.8.2` | `9ac9cd9` | Igual que `main`; ya no hace falta. |
| `App` (`go/DateKeys-App`) | `main` | `71ab8fb` | Librería TypeScript (pasos 1 a 8), página `/inspect`, contraste BLS. `testdata` sincronizado a `9ac9cd9` (`spec-v0.8.2`). 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;
- `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.
- `scripts/check.sh 60s` sobre `9ac9cd9`, el commit del tag, limpio (28-09);
- govulncheck no encuentra nada alcanzable. Avisa, sin llamada alcanzable, de dos problemas:
- GO-2026-6443, en `google.golang.org/grpc` 1.84.0, arreglado solo en una versión `-dev`. Hay que subir grpc cuando salga la 1.85.0.
- GO-2026-5932, en `golang.org/x/crypto/openpgp`, sin arreglo. No lo importamos.
---
## 2. Qué queda, en orden
### 2.1 Retoques de la 2.ª revisión: hechos el 28-09
### 2.1 Hecho el 28-09: cierre de la v0.8.2
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:
- Los 9 retoques de la 2.ª revisión están en `9ac9cd9`, un solo commit sobre `c57ed48` que absorbe el WIP `69a3342`. La rama WIP está borrada.
- §76 los recoge como correcciones 4 a 6:
- 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
1. El autor revisa y aprueba el texto:
```bash
git -C datekeys-go diff main..v0.8.2 -- spec/
```
§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
```bash
node scripts/sync-testdata.mjs sync --repo ../datekeys-go --commit <final>
node scripts/sync-testdata.mjs check --against ../datekeys-go
npm run verify
```
- El autor aprobó el texto el 28-09. El spec lleva esa fecha, y el SHA-256 de sus bytes LF, `5cfa3203…`, está en `spec/README.md` y en el mensaje del tag.
- `main` avanzó por fast-forward hasta `9ac9cd9` y lleva el tag `spec-v0.8.2`. Los dos están subidos.
- `App` sincronizó `testdata` con `9ac9cd9` en `71ab8fb`. Solo cambia `testdata/README.md`.
- Si cambió algún texto de error de Go en los pasos 1 a 8, el TypeScript lo sigue (hoy coinciden byte a byte).
- `App/testdata` solo se actualiza desde `datekeys-go` y nunca se generan fixtures en `App`. Una guarda falla si aparece un fichero de `testdata` que ningún test ejecuta.
Siguen valiendo estas reglas:
- `App/testdata` solo se actualiza desde `datekeys-go`, con `scripts/sync-testdata.mjs`, y nunca se generan fixtures en `App`. Una guarda falla si aparece un fichero de `testdata` que ningún test ejecuta.
- Si cambia un texto de error de Go en los pasos 1 a 8, el TypeScript lo sigue. Hoy coinciden byte a byte.
- Un cambio normativo posterior ya no modifica la v0.8.2: abre una versión nueva, con su caso en §76.
### 2.4 Fase 2: abrir cápsulas en el navegador
### 2.2 Fase 2: abrir cápsulas en el navegador
Plan: `docs/PLAN_fase2_ibe_noble2.md` v2, con las decisiones confirmadas por el autor. Los pasos 2 a 8 de su sección 10:
- `age-encryption` 0.3.1 y noble 2.4.0 como dependencias de ejecución, con sus guardas;
@ -73,14 +54,14 @@ Plan: `docs/PLAN_fase2_ibe_noble2.md` v2, con las decisiones confirmadas por el
- cifrado a nivel de stanza e interoperabilidad con Go;
- la acción "abrir" en `/inspect`.
El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`.
El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9 de `open.ts` debe seguir la corrección 6: cualquier fallo de una fuente es `ERR_RELEASE_UNAVAILABLE` y ningún otro código.
### 2.5 Depende del autor
### 2.3 Depende del autor
- Crear `security@datekeys.com` y, si se quiere, un `security.txt` en la web. Después, actualizar `SECURITY.md`, que hoy dice `info@activething.com`.
- Elegir la ruta pública del módulo Go (propuesta: `datekeys.com/go/datekeys`, en minúsculas) y el espejo público, que no puede ser GitHub (por ejemplo Codeberg). Publicar la página `go-import` en `datekeys.com`. Después: renombrar el módulo y poner el tag `v0.1.0` cuando `go get` funcione desde una máquina limpia.
### 2.6 Más adelante
### 2.4 Más adelante
Fase 3 (writer TypeScript de cápsulas), Release API sobre la librería, traducción del spec al inglés y revisión externa antes de la v1.0.

Loading…
Cancel
Save

Powered by TurnKey Linux.