Update the handoff: phase 2 step 7 done

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main
dev 1 week ago
parent 66970cf82b
commit 5f1b36945d

@ -12,7 +12,7 @@ Los dos repos están en el Gitea privado `g.activething.com` (solo LAN, certific
|---|---|---|---|
| `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. |
| `App` (`go/DateKeys-App`) | `main` | `a89bee5` | 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`; contraste BLS. `testdata` sincronizado a `9ac9cd9`. Fase 2, pasos 2 a 5b hechos. Los 65 casos del corpus pasan por `open` con el código y el paso de Go. 2 560 tests, ninguno saltado; `npm run verify` en verde. |
| `App` (`go/DateKeys-App`) | `main` | `66970cf` | 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`; contraste BLS. `testdata` sincronizado a `9ac9cd9`. Fase 2, pasos 2 a 7 hechos, 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 567 tests, ninguno saltado; `npm run verify` en verde. |
| `AppOld` (solo local) | `master` | `4d2b0a1` | Prototipo antiguo. No se toca. |
Verificación ya hecha sobre `datekeys-go`:
@ -52,7 +52,9 @@ Plan: `docs/PLAN_fase2_ibe_noble2.md` v2, con las decisiones confirmadas por el
- hecho el 28-09 (`076f3db`): `release.ts`, con `verifyRelease` en el orden y con los textos de `provider.Verify`, `ReleaseSource` y `suppliedRelease`. Solo verifica el scheme de Quicknet: otro da `ERR_UNKNOWN_PROFILE`. Reproduce los 7 casos del corpus que fallan en el paso 10;
- hecho el 28-09 (`97827ae`), paso 5a: `open.ts`, los pasos 9 a 18 con el texto en claro en memoria. Las identidades estrictas de `agewrap` se apoyan en `x25519.ts`, que abre los stanzas de uno en uno. Usa `@noble/ciphers` 2.4.0, dependencia directa aprobada ese día: es la copia que ya usa `age-encryption`. Las identidades `AGE-SECRET-KEY-1…` se leen con `bech32.ts`. `index.ts` no reexporta aún la apertura, que metería noble en `/inspect`;
- hecho el 28-09 (`a89bee5`), paso 5b. `open` acepta un `Blob` del que solo lee el prefijo de los pasos 1 a 8 (`prefix.ts`, movido de la página a la librería), calcula el `capsule_digest` en streaming (`digest.ts`) y descifra `PAYLOAD_AGE` en streaming. La salida puede ser un `WritableStream`, que se cierra tras el paso 18 y se aborta ante cualquier fallo. Comprobado en el navegador con OPFS real: un fallo de STREAM deja intacto el fichero;
- siguiente, el paso 6, ya cubierto: la enmienda de canonicidad entró en la v0.8.2. Después viene el paso 7: el cifrado del stanza tlock (`encryptOnG2RFC9380` y un `Recipient` propio) y la interoperabilidad de TypeScript a Go;
- el paso 6 está cubierto: la enmienda de canonicidad entró en la v0.8.2;
- hecho el 28-09 (`66970cf`), paso 7: `encryptOnG2RFC9380` y `timeRecipient`. Con sigma fijo, el cifrado reproduce byte a byte los vectores de Go. Go abrió los cuerpos IBE y los ficheros `age` que cifró esta librería, con `tlock.TimeUnlock` y con `agewrap.NewTimeIdentity`. Todo está en `src/lib/dkc/testing/tlock-vectors.json`;
- siguiente, el paso 8: la acción "abrir" en `/inspect`. La apertura se cargará bajo demanda, para que noble no entre en el bundle inicial. Incluye el fichero temporal de OPFS, la cuota libre, el release pegado o el del sidecar, las credenciales, los pasos 9 a 18 en el informe y la descarga. Los avisos MIT de `tlock-js` (en `ibe.ts`) y de `age` (en `bech32.ts`) deben llegar al sitio publicado;
- cifrado a nivel de stanza e interoperabilidad con Go;
- la acción "abrir" en `/inspect`.

Loading…
Cancel
Save

Powered by TurnKey Linux.