| … | … | @@ -2484,6 +2484,28 @@ SessionState's truncate / reorg / named-session machinery. |
| 2484 | 2484 | padding, storage }`.** 11.37's `Info.storage` reads `core.oplog` etc., which no longer |
| 2485 | 2485 | exist; its TypeError is caught, so `storage` is always null. keetd returns null. |
| 2486 | 2486 | - **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. |
| 2487 | 2509 | - **M5g-4 — the rest of the surface:** |
| 2488 | 2510 | - value encodings and `encodeBatch` (DECODING_ERROR); `postappend`, `onseq`, `onwait`; |
| 2489 | 2511 | - `setEncryption` / `setEncryptionKey` / `setKeyPair` / `setGroup`; |