# Handoff DateKeys, 26 de septiembre de 2026 (actualizado el 29 por la noche)
Estado al parar la sesión del 26 por el límite semanal de uso. Se actualizó el 28 de septiembre tras cerrar la v0.8.2 del spec (§2.1), el 29 de madrugada tras cerrar la fase 2 (§2.2), el 29 a mediodía tras reorganizar el espacio de trabajo (§0) y el 29 por la noche tras implementar el formato 2 de la v0.9 en Go (§2.5). 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. Se actualizó el 28 de septiembre tras cerrar la v0.8.2 del spec (§2.1), el 29 de madrugada tras cerrar la fase 2 (§2.2), el 29 a mediodía tras reorganizar el espacio de trabajo (§0) y el 29 por la noche tras implementar el formato 2 de la v0.9 en Go y en TypeScript y poner el tag `spec-v0.9`(§2.5). Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude.
---
@ -32,10 +32,10 @@ Los repos con remoto están en el Gitea privado `g.activething.com` (solo LAN, c
| Repo | Rama | Commit | Estado |
|---|---|---|---|
| `datekeys-go` (`go/DateKeys`) | `main` | `3e4755e` | Spec v0.8.2 cerrada, con el tag anotado **`spec-v0.8.2`** en `9ac9cd9`. Después, `datekeys.SpecVersion`, `datekeys.Version()` y `datekeys version`, sin cambios en `testdata`. |
| `datekeys-go` (`go/DateKeys`) | `main` | `7e2d83c` | Spec v0.9 cerrada, con el tag anotado **`spec-v0.9`** en `7e2d83c`; SHA-256 del spec `36189e1e62f0f835b7665219aa63df7200cd89ac4e4e924f2705f970fa7c40a9`. Implementa el formato 2 (`f24a280`): lo escribe y lee los formatos 1 y 2. `scripts/check.sh 60s` limpio. La v0.8.2 sigue en su tag, `spec-v0.8.2` (`9ac9cd9`). |
| | `v0.8.2` | `9ac9cd9` | El commit del tag; ya no hace falta. |
| | `v0.9` | `f24a280` | Spec v0.9, aprobada por el autor el 29-09, e implementación del formato 2 con sus fixtures y mutaciones. `scripts/check.sh 60s` limpio. Falta el tag `spec-v0.9` (§2.5, paso 4). |
| `datekeys-ts`, antes `App` (`go/DateKeys-App`) | `main` | `5ee8813` | Desde `5ee8813`, sin `docs/` y con el paquete `datekeys-ts` (§0). Versión `0.1.0-dev`, que implementa el spec 0.8.2 (`VERSION` y `SPEC_VERSION`, también en el pie de la página). Librería TypeScript con la inspección (pasos 1 a 8) y la apertura (pasos 9 a 18), en memoria o desde un `Blob` hacia un stream de salida, como un fichero OPFS. Página `/inspect` con la acción "abrir". `testdata` sincronizado a `9ac9cd9`. Fase 2 completa (pasos 2 a 8), incluidos el cifrado tlock y la interoperabilidad de TypeScript a Go. Los 65 casos del corpus pasan por `open` con el código y el paso de Go. 2 611 tests, ninguno saltado; `npm run verify` en verde. |
| | `v0.9` | `7e2d83c` | Igual que `main`; ya no hace falta. |
| `datekeys-ts`, antes `App` (`go/DateKeys-App`) | `main` | `0118890` | Desde `5ee8813`, sin `docs/` y con el paquete `datekeys-ts` (§0). Versión `0.1.0-dev`, que implementa el spec 0.9 desde `0118890` (`VERSION` y `SPEC_VERSION`, también en el pie de la página). Librería TypeScript con la inspección (pasos 1 a 8) y la apertura (pasos 9 a 18) de los formatos 1 y 2, en memoria o desde un `Blob` hacia un stream de salida, como un fichero OPFS. Página `/inspect` con la acción "abrir", que muestra el formato y avisa del 1. `testdata` sincronizado a `7e2d83c` (`spec-v0.9`). Fase 2 completa (pasos 2 a 8), incluidos el cifrado tlock y la interoperabilidad de TypeScript a Go. Los 125 casos del corpus pasan por `open` con el código, el paso y el texto de Go. 5 425 tests, ninguno saltado; `npm run verify` en verde. |
| `docs` (solo local) | `main` | | Este repo: handoff, planes, revisiones y reglas. |
| `archive/prototype`, antes `AppOld` (solo local) | `master` | `4d2b0a1` | Prototipo antiguo. No se toca. |
@ -89,7 +89,7 @@ El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9
### 2.5 Sesiones del 29-09: v0.9 del spec y formato 2 en Go (retomar aquí)
**Estado al parar (29-09 por la noche):**
- `datekeys-go`, rama `v0.9` (`f24a280`, subida): el spec v0.9, aprobado por el autor, y su implementación en la referencia Go. `main` no cambia hasta el tag (paso 4).
- Pasos 1 a 5 hechos. El spec v0.9 está cerrado con el tag `spec-v0.9` (`7e2d83c`, en `main` de `datekeys-go`), y las dos implementaciones leen el formato 2: Go desde `f24a280`, que también lo escribe, y TypeScript desde `0118890`. Retomar por el paso 6, el plan de la fase 3.
- Las 22 correcciones del repaso final ([spec_v0.9/review.md](spec_v0.9/review.md)) se aplicaron en `4a025d1`, más cuatro sitios que repetían los mismos problemas: las reglas 1 y 4 del §62.1 y los cambios 4 y 10 del §76. Los números de la corrección 1 se recalcularon con un Padmé en BigInt.
- La corrección 2 la decidió el autor el 29-09: se suaviza el §56.
- El lector MUST NOT presentar el contenido como válido antes de que termine el paso 17.
@ -148,14 +148,18 @@ El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9
1. Aplicar y verificar las 22 correcciones. Hecho el 29-09 (`4a025d1`).
2. El autor aprueba el texto de la v0.9. Hecho el 29-09.
3. La referencia Go implementa el formato 2, con fixtures nuevos y mutaciones, y pasa `check.sh`. Hecho el 29-09 (`f24a280`).
4. Se pone el tag `spec-v0.9`. Pendiente de que el autor lo autorice:
- avanzar `main` hasta `v0.9`;
- anotar el SHA-256 del spec en `spec/README.md` y en el mensaje del tag.
5. `datekeys-ts` sincroniza `testdata` y el lector TypeScript abre el formato 2. Cambia, además de los ficheros nuevos:
- los `.inspect.json` del formato 1 ganan el campo `format`;
- los registros de los fixtures dicen `"spec": "0.9"` y ganan `format`, `payload_length` y la etapa 17;
- el corpus de mutaciones pasa de 65 a 125 casos, y "version changed" escribe `VERSION` 3.
6. Se replantea el plan de la fase 3 y se escribe el writer TypeScript del formato 2.
4. Se pone el tag `spec-v0.9`. Hecho el 29-09, con la autorización del autor:
- `7e2d83c` anota el SHA-256 del spec en `spec/README.md`, que también va en el mensaje del tag;
- `main` avanzó hasta ese commit sin merge;
- `main`, `v0.9` y el tag están subidos.
5. `datekeys-ts` sincroniza `testdata` y el lector TypeScript abre el formato 2. Hecho el 29-09 (`0118890`, subido):
- `testdata` a `7e2d83c`;
- el prelude lee el formato; `decodeControl` y `encodeControl` reciben el formato; `padding.ts` con las dos reglas, exactas hasta L_MAX;
- `open` exige 16 stanzas en el paso 12, calcula P en el 16 y comprueba el relleno en el 17, entregando solo los L primeros bytes; el paso 17 se registra también cuando se supera;
- la página muestra el formato, avisa del 1 y, al abrir una cápsula del formato 2, da la regla y P;
- `ibe-vectors.json` añade los siete fixtures del formato 2, calculados con `scripts/ibe-go-vectors.go`; los valores congelados no cambian;
- comprobado: los 125 casos del corpus dan en TypeScript el código, el paso y el texto de error de `capsule.Open`, en memoria y desde un `Blob`.
6. Se replantea el plan de la fase 3 y se escribe el writer TypeScript del formato 2. **Siguiente paso.** [PLAN_fase3_escritura.md](PLAN_fase3_escritura.md) describe aún el writer de la v0.8.2: hay que rehacerlo sobre las reglas del §62.1 (16 slots con señuelos, relleno, L conocido de antemano, autocomprobaciones, recipients canónicos).
**Conclusiones de la conversación, sin decisión pendiente:**
- El protocolo no contempla un sello de tiempo de creación (§5, §55.1). Si se quiere, lo recomendado es un sello RFC 3161 u OpenTimestamps sobre el SHA-256 del `.dkc` completo, guardado aparte.