You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DateKeys-App/docs/HANDOFF.md

7.0 KiB

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.


1. Repositorios

Los dos repos están en el Gitea privado g.activething.com (solo LAN, certificado autofirmado para git.activething.com; git funciona, curl necesita -k). Ese servidor no es del autor: no se proponen cambios en él. La integración continua es el gate local.

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.
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.

2. Qué queda, en orden

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

  1. El autor revisa y aprueba el texto:

    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

node scripts/sync-testdata.mjs sync --repo ../datekeys-go --commit <final>
node scripts/sync-testdata.mjs check --against ../datekeys-go
npm run verify
  • 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.

2.4 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;
  • ibe.ts sobre noble 2, con vectores generados desde Go;
  • release.ts;
  • open.ts (pasos 9 a 18, descifrado en streaming a OPFS);
  • 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.

2.5 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

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.


3. Reglas del proyecto

  • Dependencias: en ejecución, solo age, drand, tlock y lo que ellas arrastran. El tooling de desarrollo sale de la lista del README. Nada nuevo sin aprobación escrita. Nunca GitHub como servicio.
  • Spec: en español, estilo RFC 2119. Todo cambio normativo se registra en §76 con su caso reproducible, y se actualiza el SHA-256 de spec/README.md.
  • Código y comentarios: en inglés. Commits con Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>.
  • Precedencia de errores (§69.1): trama; tipo y versión; perfil CBOR y CDDL; campos con código propio, en orden de clave. Entre objetos decide el orden de pasos de §63.
  • Subagentes: con model: "opus".

4. Documentos

  • Planes en App/docs: PLAN_libreria_go.md, PLAN_codec_cbor_y_pagina_svelte.md (v2) y PLAN_fase2_ibe_noble2.md (v2).
  • En datekeys-go:
    • spec/DateKeys_Protocol_Specification_v0.8.2.md, spec/datekeys.cddl y spec/README.md;
    • testdata/README.md, que documenta los ficheros compartidos para segundas implementaciones;
    • docs/traceability.md y CHANGELOG.md.
  • Las herramientas de verificación de esta sesión (el diferencial Go/TypeScript de tsreview/ y las copias congeladas dkgo-ref-<commit>) están en el scratchpad temporal y pueden haber desaparecido. Su descripción está en los mensajes de los commits de App y en el README de App.

Powered by TurnKey Linux.