datekeys-go 4a025d1 applies all 22 corrections of the final review of the
v0.9 draft, plus four places that repeated them. The author decided
correction 2 on 29-09: the section 56 rule is softened, so the streaming
readers of Go and TypeScript stay valid. Correction 10 drafts open question
4 as a MAY. Step 1 of the work order is done; next is the author's approval
of the text.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ -34,7 +34,7 @@ Los repos con remoto están en el Gitea privado `g.activething.com` (solo LAN, c
|---|---|---|---|
| `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`. |
| | `v0.8.2` | `9ac9cd9` | El commit del tag; ya no hace falta. |
| | `v0.9` | `1189f2f` | Borrador del spec v0.9, sin aprobar (§2.5). |
| | `v0.9` | `4a025d1` | Borrador del spec v0.9 con las 22 correcciones del repaso final, sin aprobar (§2.5). |
| `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. |
| `docs` (solo local) | `main` | | Este repo: handoff, planes, revisiones y reglas. |
@ -89,14 +89,14 @@ El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9
### 2.5 Sesión del 29-09 por la noche: fase 3 y v0.9 del spec (retomar aquí)
**Estado al parar:**
- `datekeys-go`, rama `v0.9` (`1189f2f`, subida): borrador del spec v0.9, sin aprobar, en `spec/DateKeys_Protocol_Specification_v0.9.md`, con `spec/datekeys.cddl`actualizado. `main` no cambia.
- El repaso final encontró 22 problemas, no 21, cada uno con su arreglo propuesto. Están en [spec_v0.9/review.md](spec_v0.9/review.md), la salida del workflow `spec-v0.9-draft`.
- **Comprobado el 29-09 a mediodía: no hay ninguno aplicado.** El borrador no cambió después de la revisión: los números de línea coinciden, y los 15 problemas que se revisaron uno a uno conservan el texto original.
- Hay que aplicarlos todos y verificarlos. Tres puntos:
- el 2.º, el MUST NOT de §56 frente a los lectores que escriben en streaming, necesita una decisión del autor: suavizarlo, o mantenerlo entre las reglas que tiene que confirmar;
- el 10.º, sobre §70, da por respondida la pregunta abierta 4;
- el 4.º es la entrada v0.9 de `spec/README.md`.
- Después hay que ejecutar `go test ./...`, por si algún test lee el CDDL.
- `datekeys-go`, rama `v0.9` (`4a025d1`, subida): borrador del spec v0.9, sin aprobar, en `spec/DateKeys_Protocol_Specification_v0.9.md`, con `spec/datekeys.cddl`y la entrada v0.9 de `spec/README.md`. `main` no cambia.
- El repaso final encontró 22 problemas, no 21, cada uno con su arreglo propuesto: [spec_v0.9/review.md](spec_v0.9/review.md). El 29-09 a mediodía no había ninguno aplicado.
- **Hecho el 29-09 (`4a025d1`):** aplicadas las 22 correcciones, 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, y `go test ./...` pasa.
- 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.
- Un lector en streaming MUST NOT escribir el relleno y MUST señalar el error para que se descarte lo escrito.
- Así siguen valiendo `Open(dst)` de Go y la salida en streaming de TypeScript.
- La corrección 10 redacta la pregunta abierta 4 como MAY: solo un generador de vectores de prueba puede escribir el formato 1 (§62.1, regla 1, y §70). El autor puede cambiarlo al aprobar el texto.
- En este repo están [PLAN_fase3_escritura.md](PLAN_fase3_escritura.md), el plan del writer TypeScript, y [REVISION_completitud_protocolo.md](REVISION_completitud_protocolo.md), la revisión del protocolo. El plan describe aún el writer de la v0.8.2 y hay que replantearlo sobre la v0.9.
**Decisiones del autor del 29-09 para la v0.9:**
@ -117,16 +117,16 @@ El vector de GT (`vectors/tlock_ibe.json`) ya está cubierto en `App`. El paso 9
1. L como `bstr` de 8 bytes, no como `uint`.
2. Si el lector informa del formato con SHOULD o con MAY.
3. Si se mantienen el objetivo 8 de §4 y el no objetivo nuevo de §5.
4. Un generador de pruebas que escriba el formato 1.
4. Un generador de pruebas que escriba el formato 1. Está redactada como MAY (corrección 10).
5. El prefijo `format2_` en los fixtures.
6. Señuelos como claves públicas aleatorias válidas, sin clave privada.
7. Puntos del twist: MAY o SHOULD.
Hay además reglas añadidas fuera de D1-D7 que confirmar: L_MAX = 2⁵³ − 2⁴⁶, el orden uniforme de los stanzas, y el MUST NOT de §56 sobre entregar el contenido antes de que termine el paso 17.
Hay además dos reglas añadidas fuera de D1-D7 que confirmar: L_MAX = 2⁵³ − 2⁴⁶ y el orden uniforme de los stanzas. La tercera, la del §56, ya está decidida: se suaviza (corrección 2).
**Orden de trabajo:**
1. Aplicar y verificar las 22 correcciones.
2. El autor aprueba el texto de la v0.9.
1. Aplicar y verificar las 22 correcciones. Hecho el 29-09 (`4a025d1`).
2. El autor aprueba el texto de la v0.9, con las preguntas abiertas y las dos reglas de arriba.
3. La referencia Go implementa el formato 2, con fixtures nuevos y mutaciones, y pasa `check.sh`.
4. Se pone el tag `spec-v0.9`.
5. `datekeys-ts` sincroniza `testdata` y el lector TypeScript abre el formato 2.