The quiet-loss cure regressed recovery: the new typed torn-record error was correct at identity-read time but threw inside init-time recovery walks, killing opens that previously survived. The boundary, redrawn: - IDENTITY READS (get-by-id of a specific record, CAS blob point-get): typed TornRecordError, unchanged — a caller who asked for THAT record can act on the answer. - SET-SHAPED READS AND WALKS (enumeration, pagination, batch hydration — the paths recovery rebuilds and finds page over): HEAL PAST the torn victim. The adapter's loud floor (error log + counted gauge) fires at the encounter; the walk serves the remaining rows. One crash casualty can no longer kill every query on its shard — or the open itself. - WRITES OVER TORN RECORDS ARE THE CURE: the save path's read-merge, the commit path's before-image capture, and the operations' rollback captures all treat a torn prior as the create sentinel, narrated — the incoming bytes replace the unreadable ones, and history for the id honestly restarts at that generation. Corruption can never block its own heal. - THE NaN SOURCE: torn mapper state (nextId/entries carrying garbage) discards with narration and re-derives via the existing rebuild path; the mint gains a source guard healing a non-integer counter from the live map. The reopen and first-write RangeError shapes are dead at the source, both authority branches. Pinned with the exact fault-injection scenarios: a torn entity record (including the VFS root) no longer kills the open — walks heal past it, the keeper rows serve, and the identity read of the victim itself is typed-or-healed; a torn mapper reopens and mints sanely on the first post-recovery write. Gates: tsc 0 · unit 2065/2065 · integration 828 · conformance 31/31. |
||
|---|---|---|
| .. | ||
| blob-save-durability.test.ts | ||
| blobStorage.compression-policy.test.ts | ||
| blobStorage.test.ts | ||
| clear-native-footprint.test.ts | ||
| getNouns-totalCount.test.ts | ||
| getVerbs-totalCount.test.ts | ||
| pagination-parallel-hydration.test.ts | ||
| registered-blob-contract.test.ts | ||
| sharding-new-installation-log.test.ts | ||
| sharding.test.ts | ||
| stats-count-accuracy.test.ts | ||
| storage-path-resolution.test.ts | ||
| torn-record-loud.test.ts | ||
| verb-cursor-pagination.test.ts | ||
| vfs-mkdir-bug.test.ts | ||