9.2 KiB
Handoff DateKeys
Estado al 6 de octubre de 2026 por la noche. Lo que pasó hasta aquí, sesión a sesión, está en HANDOFF_historial.md.
Sirve para retomar sin contexto previo, sea una persona o una sesión de Claude.
Antes de empezar:
- La sesión se abre en
G:\bussines\datekeys, la raíz, que es la que tiene la memoria y elCLAUDE.md. - Comprueba que corre en Opus. Una sesión del 1-10 corrió por descuido con Sonnet 5.5 y hubo que revisarla entera. Los trailers
Co-Authored-Byde los commits dicen qué modelo escribió cada uno. - Comprueba cada repo con
git statusygit log: todo lo de abajo estaba subido al cerrar.
Estado
| Repo | Rama y commit | Tags | Qué es |
|---|---|---|---|
datekeys-go |
v0.14 en 22f184c; main en 39b2033 |
spec-v0.14 en 39b2033, y los de las versiones anteriores |
Spec v0.14 aprobada, implementación de referencia, testdata compartido |
App (datekeys-ts) |
v0.10 y main en 3abd7bf |
v0.3.0 en 3abd7bf, v0.2.0, v0.1.0 |
Librería TypeScript 0.3.0, de la spec 0.14, y páginas /inspect y /create |
datekeys-dart |
v0.14 en 013b069 |
ninguno | Librería Dart completa, de la spec 0.14; las ramas v0.11 a v0.13 se quedan atrás |
docs |
main |
— | Este repo |
web |
main en f2b8a38 |
— | Landing de datekeys.com, sin remoto |
- Spec: la v0.14 está aprobada desde el 6-10, con SHA-256
390922135931dd61a263ed90259c7a978b5d92944405e641e94cc194f84fb459. No hay ningún borrador abierto. Las versiones aprobadas y sus SHA-256 están endatekeys-go/spec/README.md. - Las tres implementaciones coinciden en todos los vectores compartidos de
datekeys-go/testdataen39b2033, 136 ficheros. Gates el 6-10:- Go:
scripts/check.shentero, yscripts/fuzz.sh 20sen39b2033con sus 26 objetivos; - TypeScript:
npm run verifyen3abd7bf, con 8 030 pruebas; - Dart:
tool/check.shen013b069, con 2 193 pruebas en la VM y 681 en Node.
- Go:
- La revisión externa: el paquete está listo en revision_externa/, con commits congelados (
39b2033,22f184cpara la documentación de Go,3abd7bfy013b069). Su nota dice qué decidió el autor y qué falta: elegir revisor, alcance y presupuesto, el NDA, los bundles y el envío.
Qué queda
En el orden que recomendó la sesión del 6-10 y aceptó el autor: este HANDOFF, después la recuperación a largo plazo y después las recomendaciones de la v0.14 en los clientes.
Protocolo
- La revisión externa. El paquete está listo; lo que falta es del autor. Al recibir el informe, se abre la versión siguiente con sus hallazgos, el párrafo de idioma y precedencia del final del §1, las etiquetas del §76 que hoy llaman independientes a revisiones de IA, y el registro de la revisión (§75, punto 10). Todo eso lo aprobó el autor el 6-10; ver revision_externa/precedence_and_language.md.
- La recuperación a largo plazo. Es lo más grave que queda abierto: una cápsula a veinte años depende de que alguien conserve el release de su ronda. El §74 lo deja como trabajo futuro: un objeto de release, su fuente de archivo y el uso del reloj local en el paso 9.c. Hace falta un diseño para que el autor decida.
- Medir el área de 32 KiB y cerrar el perfil CMS (§74; §75, punto 13), con firmas reales con certificado de varios países y sellos de autoridades reales. Necesita firmas del autor o permiso para pedir sellos a una autoridad pública.
- Lo que el §74 aún llama provisional: los esquemas de bytes de la cabecera, el control y la
.dkk, los límites de los campos y los vectores definitivos del perfil. Conviene congelarlo con el informe de la revisión delante. - El registro de perfiles firmado (§71), que no existe.
- Más adelante: un tipo de acceso post-cuántico, y quizá una derivación más dura que PBKDF2 para la llave de palabras.
Librerías y clientes
- Las recomendaciones de la v0.14 al SDK oficial, que no aplican ni
/createni la CLI de Go:- recomendar
time_and_keypara horizontes largos (§7.6); - ofrecer por defecto palabras al azar (§38.1). El autor tiene que elegir la lista: cuál, en qué idioma y con qué licencia;
- avisar del estado de un perfil (§71).
- recomendar
- 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
/createno crea sobres e/inspectno descarga el resto. - 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.
Espacio de trabajo
- Del autor: renombrar la carpeta
Appadatekeys-tsy borrarenquiry.phpde la raíz, pendientes desde el 29-09. websigue sin remoto.
Decisiones del autor que siguen vigentes
- La app Flutter está archivada «para un futuro» (6-10). No se empieza sin que lo pida.
- La revisión externa (6-10):
- primero, buscar un revisor que lea español; si no lo hay, traducir solo el núcleo normativo;
- dos niveles de alcance, con presupuesto cerrado por nivel;
- código entero en bundles de git cifrados con
age; - un NDA mutuo;
- la v0.15, después del informe.
locator.Opensigue leyendo como mucho 1 MiB del localizador (6-10).- El cifrado tlock queda en
BigInt, sin tiempo constante, documentado en Dart y TypeScript («continúa», 6-10). - El reporte del posible fallo de dart2js al equipo de Dart, solo con permiso del autor. Está documentado en el README de
datekeys-dart. - Mostrar Q1 y Q10 de la revisión al equipo de drand antes de pagar una revisión es decisión del autor, porque supone enseñar el proyecto fuera.
- El diseño de las páginas: nunca un fondo oscuro, nada del estilo de la landing, usar la skill
frontend-designsobre la página real y no gastar en maquetas. Ver la memoria.
Para trabajar
-
Subir al Gitea. El nombre
g.activething.coma veces resuelve a 89.46.247.16, que no responde. Entonces se sube a la IP de la red local, sin tocar el remoto:git -C <repo> push https://192.168.18.112/go/<repo-remoto>.git <rama>y después
git -C <repo> update-ref refs/remotes/origin/<rama> <rama>. Los remotos songo/DateKeys,go/DateKeys-App,go/dateKeys-dartygo/datekeys-doc. El servidor no es del autor: no se propone ningún cambio en él. -
Cerrar una versión del spec, como la v0.12, la v0.13 y la v0.14:
- en Go, la cabecera del spec con «aprobado por su autor ese día» y nada más del texto;
SpecVersion;go run ./internal/testkit/genfixtures -out testdata, y el campospeca mano en los dos congelados,security_cms.jsonylocator.json;- el SHA-256 en
spec/README.md, y los README,SECURITY.md, la trazabilidad,testdata/README.mdy el CHANGELOG; scripts/check.sh, con el árbol limpio tras el commit;- el tag anotado
spec-vX.Yymainavanzado sin fusión (git fetch . <rama>:main); - en TypeScript y Dart, la versión del spec,
testdatasincronizado con sus scripts,mutation-texts.jsonregenerado con Go en un módulo temporal (G:\tmp\mutgo), y el campospecde los vectores propios que salen de Go.
Tras aprobar no se añade texto normativo sin enseñarlo: fue el fallo E1 de la v0.11.
-
Encargos a agentes:
- con
model: "opus"; - en worktrees junto a los repos, para que
../datekeys-goresuelva; - nunca dos agentes en los mismos ficheros;
- solo ficheros nuevos, y los comunes en un último commit;
- la sesión revisa contra Go antes de integrar.
- con
-
Herramientas de esta máquina:
- los heredocs de Bash rompen las barras invertidas,
\nincluido; - la herramienta Write quita los espacios de final de línea (los saltos de Markdown del §77) y convierte
\uXXXXen caracteres; - para cambios con barras o espacios exactos, un script de Python escrito con Write que use
chr(92), o la herramienta Edit; cden Bash mueve el directorio de la sesión: usa( cd … )ogit -C.
- los heredocs de Bash rompen las barras invertidas,
-
Vista previa de la página: la configuración
inspector-dev-appde.claude/launch.jsonarrancaApp, mientras la carpeta no se renombre. No pares el servidor mientras el autor lo usa.vite.config.tsprepara las dependencias que se cargan bajo demanda (optimizeDeps.include), para que la primera apertura no recargue la página. -
Fuzzing: usa
FUZZ_PARALLEL=4. Un «context deadline exceeded» sin entrada que falle es del motor de Go, no del código; se vuelve a pasar. -
Disco: C: está casi lleno con las cachés de Go y Dart; los temporales van en
G:\tmp, y nunca se borra con comodines.
Documentos
El README los lista. Para retomar, lo principal es:
- revision_externa/: el paquete y su nota;
- REVISION_completitud_v0.13.md: qué falta antes de la v1.0;
- spec_v0.14/decisiones.md: las decisiones de la última versión.