Handoff for 2 October: format 3 in the page, the key of words, the signature area review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main
dev 7 days ago
parent 60f85b126d
commit 2e3cecde08

@ -1,7 +1,42 @@
# Handoff DateKeys, 26 de septiembre de 2026 (actualizado el 30 por la noche: el formato 3 implementado en la referencia Go y la spec v0.10 cerrada con su tag)
# Handoff DateKeys, 26 de septiembre de 2026 (actualizado el 1 de octubre por la noche: el formato 3 en la página, la llave de palabras y la consulta sobre el área de firmas)
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, poner el tag `spec-v0.9` y escribir el writer TypeScript con su interoperabilidad con Go (§2.5). El 30 de madrugada se diseñó el formato de cápsula 3 y Fable lo revisó; a mediodía se aplicaron al diseño esa revisión y las decisiones del autor, y quedó separado en tres entregas; por la tarde, el autor cerró las preguntas de la entrega 1, y se redactó y revisó el borrador del spec v0.10 (§2.5, al final). Por la noche, el autor aprobó ese borrador, con Unicode 18.0.0 y la regla de invisibles, y la referencia Go implementó el formato 3 (§2.5, al final). Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude.
---
## Retomar aquí (1 de octubre por la noche)
**Repositorios**, subidos con permiso del autor («comiteas y pusheas»):
- `App` (`datekeys-ts`): la rama `v0.10`, en `67d626e`. `main` sigue en `da26862`.
- `datekeys-go`: `main` en `13910b3` y la rama `v0.11` en `5b3d2d4`, sin tags nuevos.
- `docs` no tiene remoto: este handoff va en su último commit.
- GATES
**Hecho el 01-10:**
- **Formato 3 en `datekeys-ts`:** los pasos 0 a 8 del [plan](PLAN_formato3_ts.md), con interoperabilidad con Go en los dos sentidos (hasta `4883c90`). Lo pendiente está en el punto 4 de abajo.
- **Diseño de las páginas:** `/create` rediseñada y el sitio siempre claro (`e6cca0b`); `/inspect` a una columna, con los ejemplos plegados (`0d98480`). El autor no aprobó `/create` como estilo. Sus reglas: nunca fondo oscuro, nada del estilo de la web corporativa, y diseñar con la skill de diseño sobre la página real.
- **Pedir la firma a drand:** `/inspect` la pide con un botón a `api.drand.sh`, `api2.drand.sh` y `api3.drand.sh` a la vez y comprueba que `randomness` sea el SHA-256 de la firma, que después se verifica en el paso 10. La CSP abre `connect-src` solo a esos tres (`2ec7102`).
- **Llave de palabras:** al menos 6 palabras que elige la persona abren una cápsula `time_and_key` en lugar de la `.dkk`.
- Se normalizan (NFD sin marcas, minúsculas y los espacios de Go) y se estiran con PBKDF2-SHA256 de 600 000 rondas, con la sal `DateKeys llave de palabras v1|<cadena>|<ronda>`.
- Dan una identidad X25519 que entra como un destinatario más, así que el formato no cambia.
- Está en la página (`b617007` y `67d626e`) y en la CLI de Go, con `-words` y `-words-file` en `encrypt` y `decrypt` (`5b3d2d4`, rama `v0.11`). Las dos comparten un vector, y la CLI abrió una cápsula hecha en la página. El detalle está en [spec_v0.11/llave_palabras.md](spec_v0.11/llave_palabras.md).
- **Firma de autor:** el [plan](PLAN_firma_go.md), con los cambios que pidió el autor: firma con certificado reconocido (`alg` 2, CAdES separada), hecha fuera de la web y nativa en escritorio, móvil y CLI; escritor en dos tiempos; sello RFC 3161 de una autoridad cualificada; OpenTimestamps en estudio.
- **El área de firmas y sellos:** el autor no está convencido de fijar su tamaño. La consulta para Fable y Astra está en [spec_v0.11/area_firmas_para_revision.md](spec_v0.11/area_firmas_para_revision.md) y en un artefacto privado, https://claude.ai/artifact/8hVZGDWpv6ZqzzxcWVS7Rc.
**Siguiente:**
1. Recibir las opiniones de Fable y Astra y guardarlas en `spec_v0.11/`, como [la revisión anterior](spec_v0.10/revision_fable.md). Con ellas, el autor decide el tamaño del área (opciones O1 a O5 de la consulta), las firmas de varias personas u organismos y los dos sellos.
2. Medir una firma CAdES real: firmar con AutoFirma un fichero de 98 bytes y anotar cuánto ocupa con la cadena y con sello.
3. Con esas decisiones, actualizar el plan de la firma y empezar su paso 0, el borrador del spec v0.11 en la rama `v0.11` de `datekeys-go`. Después, los pasos de Go del plan.
4. Pendiente en `datekeys-ts`:
- en `/inspect`, el resultado delante y los pasos 1 a 18 plegados;
- el texto del paso 17 cuando la cápsula se corta tras un chunk completo;
- `open()` en un worker para heads grandes;
- los menores del punto 5 de §2.5.
5. Sin cambios en §2.3: el correo de seguridad, la ruta pública del módulo Go y si `datekeys-ts` cierra `0.2.0`.
**Para probar:** la clave age de prueba del autor está en `G:/tmp/datekeys-prueba/clave-age-prueba.txt`; su parte secreta no se copia en el chat. La vista previa hay que reiniciarla tras cada build, y el modo de desarrollo con el panel oculto va lento: los tiempos se miden con el build.
---
## 0. Reorganización del espacio de trabajo (29-09, mediodía)
@ -253,8 +288,8 @@ El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9
- El texto del paso 17 aún difiere del de Go cuando la cápsula se corta justo tras un chunk completo: `age-encryption` retiene ese chunk hasta ver un byte más. Igualarlo exige descifrar el STREAM como Go (código propio con `@noble/ciphers`).
- Un head de 16 MiB tarda de 10 a 40 s en la página, en el hilo principal (Go tarda la mitad): `open()` en un worker.
- Menores: el `TypeError` sin sumidero llega tras los pasos 3 a 8 con un `Blob`; `tempfile.remove()` marca borrado antes de lograrlo; `measureFiles` en cada tecla con 65 535 ficheros; un bundle `.app` no avisa (igual que la CLI).
- Nada está subido: la rama `v0.10` de `App` y `main` `13910b3` de `datekeys-go` esperan al autor.
6. La entrega 2 abre la versión siguiente del spec, y la 3 espera al documento «Servicio de sellado DateKeys v1». En esa versión entra también la **llave de palabras** que pidió el autor el 01-10: la llave portable guardada como fichero `.dkk` o como 6 palabras al azar, a elegir, derivadas con scrypt y el `capsule_id` ([spec_v0.11/llave_palabras.md](spec_v0.11/llave_palabras.md)), primero en Go y después en la página. Además, el 01-10 el autor pidió que `/inspect` pueda pedir la firma a drand: ya lo hace, con un botón (`2ec7102`), lo que cambia la decisión 4 del plan de la fase 2. Para otra revisión externa, el artefacto hay que volver a publicarlo desde el diseño nuevo.
- Subido el 01-10 por la noche, con permiso del autor: la rama `v0.10` de `App`, y `main` y `v0.11` de `datekeys-go`.
6. La entrega 2 abre la versión siguiente del spec, y la 3 espera al documento «Servicio de sellado DateKeys v1». En esa versión entra también la **llave de palabras** que pidió el autor el 01-10: palabras que elige la persona y abren la cápsula en lugar de la `.dkk`, ya hechas en la página y en la CLI (apartado «Retomar aquí»). Además, el 01-10 el autor pidió que `/inspect` pueda pedir la firma a drand: ya lo hace, con un botón (`2ec7102`), lo que cambia la decisión 4 del plan de la fase 2. Para otra revisión externa, el artefacto hay que volver a publicarlo desde el diseño nuevo.
**Hecho el 30-09 por la noche: el formato 3 en Go.** Rama `v0.10` de `datekeys-go`, subida con el tag `spec-v0.10` en `cc35d2c`, un commit o varios por paso del plan:
- `631d09c`, el spec con la regla de invisibles; `6fba1dd`, paso 1, `internal/pathrule` con las tablas de Unicode 18.0.0 y best-fit generadas y su `TablesDigest`; `72e86b8`, paso 2, el códec de `BODY`, `security` y el head.

Loading…
Cancel
Save

Powered by TurnKey Linux.