OverviewFilesCommitsIssuesDocsReleasesPeers

keet-daemon commits / f73610f

CPP-PORT-DESIGN: M5g-4a done — encodings, hooks, getters, setters, info; drill 24/25
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f73610fe9a0d8b31bcb88e895fac35aa6465205d
by plankatron <fleeky@gmail.com> · 2026-10-03T22:25:44.000Z

Changed files (1) +22 -0

docs/CPP-PORT-DESIGN.md +22 -0
……@@ -2484,6 +2484,28 @@ SessionState's truncate / reorg / named-session machinery.
24842484 padding, storage }`.** 11.37's `Info.storage` reads `core.oplog` etc., which no longer
24852485 exist; its TypeError is caught, so `storage` is always null. keetd returns null.
24862486 - **Gate:** the core gate, a new `surface` script.
2487 - **DONE 2026-10-03** (keetd bee868b + the gate / drill commit).
2488 - The codecs link holepunch's libhex / libbase64 / libutf at bare-buffer 3.6.0's pins
2489 (`charset.c`: those headers are C, not C++).
2490 - `Session::byteLength()` is SIGNED (JS goes negative when a key is set on unpadded blocks).
2491 - **Core gate `surface`** (~100 ops) covers:
2492 - every named encoding; a Buffer bypassing json and hex; per-get overrides;
2493 - DECODING_ERROR; ill-formed UTF-8 (V8 = WHATWG, one U+FFFD per maximal subpart);
2494 - encodeBatch; onseq / onwait / waits; postappend; the getters (hints past the length
2495 are capped); info; setKeyPair; setEncryptionKey / null; setGroup (with its
2496 conflict); the group option; a reopen.
2497 - **JS facts:**
2498 - `onwait` fires after `_get`'s storage read, which is real I/O, so the gate awaits a
2499 read before the log.
2500 - `info({ storage })` is null in 11.37.
2501 - `contiguousByteLength` is 0.
2502 - **Trap:** the C++ runner's JSON dump REPLACES invalid UTF-8, which masked the decoder
2503 mutants. Decoded strings are now printed as hex.
2504 - **Trap:** lifting the open-time group code into `setGroupLocked_` wrote `this->header`,
2505 which the constructor's local `header` then overwrote. The gate caught it; the helper
2506 now takes the header.
2507 - **Drill `m5g4a`: 24/25 red.** "byteLength unsigned" is equivalent (same two's-complement
2508 value). ctest 30/30.
24872509- **M5g-4 — the rest of the surface:**
24882510 - value encodings and `encodeBatch` (DECODING_ERROR); `postappend`, `onseq`, `onwait`;
24892511 - `setEncryption` / `setEncryptionKey` / `setKeyPair` / `setGroup`;