TanStack

Content temporarily unavailable

Frozen source basis for Temporal persistence design

Repository: /Users/kyle.mathews/.codex/worktrees/temporal-persistence-oracle/tanstack-db Production revision: e21c280f3c4e56f6c0d05ec0eed87db29c623489 (origin/main fetched 2026-10-05). Original reproduction revision: 84dc899bfc8d6a16487c1584dbb1cb177109aacc. The new main commit is #2002, persisted Query write/refetch ordering. Uncommitted reproduction is unchanged; rerun on e21c280f reports 21 tests, 13 pass / 8 fail. Runtime Node 24.19.0 / SQLite 3.53.3 / temporal-polyfill 0.3.0.

This is one source system: TanStack DB's current shared SQLite persistence, its value consumers, and its declared oracle boundaries. No external survey.

E1 Observed implementation: sqlite-core-adapter.ts:327-425 recursively handles Date/BigInt/nonfinite numbers, arrays and enumerable object properties. It has no Temporal handling; the real adapter reproduction observes {} after reopen. E2 Source contract: sqlite-core-adapter.ts:2440-2525 SQL-selects a candidate set, then decodes, applies DB's expression evaluator, locally sorts, and paginates. SQL may eliminate candidates before the residual evaluator can see them. E3 Observed implementation: sqlite-core-adapter.ts:512-578 treats non-Date objects by runtime identity for local ordering. db/src/utils/comparison.ts:228-255 uses Temporal kind plus string representation for equality normalization; :310-349 orders supported Temporal kinds through their compare function. Equality and ordering equivalence are distinct contracts. E4 Source contract: sqlite-core-adapter.ts:681-707 shares normalized reference SQL with runtime predicates and index expressions. :2038-2110 rebuilds a stale physical index when normalized SQL differs. Literal-bearing serialized index specifications pass through decodePersistedJsonValue at :1100-1135. E5 Source contract: sqlite-core-adapter.ts:921-954 lowers runtime IN to json_each with one binding; index-context IN is literal. :2434-2481 drops SQL pushdown when the final statement exceeds the driver cap. Public results and the host binding cap must both hold. Binding-capacity oracle starts at :2711 in sqlite-core-adapter-oracle.test.ts; expression-index owner is in Node tests. E6 Source contract: sqlite-core-adapter.ts:1597-1930 applies rows, tombstones, row metadata, collection metadata, position and replay under one transaction. Repeated-key folds validate superseded values (:1684; lastMetadataByKey). ordinary-transaction-work-oracle.ts owns distinct-key bounded statement work and rollback/invalid superseded action witnesses. A final valid value does not excuse an earlier invalid action. E7 Source contract: persisted-oracle.test.ts:58-95 requires publication before durability, observable rejected wrapped receipt and fail-stop for durability failure, and no admitted suffix. New #2002 preserves durable FIFO while an immediate source commit releases an earlier waiting publication. Adapter atomicity does not mean rollback of already published Collection state. E8 Source contract: remote-subset-wire.ts:23-37 enumerates the transport domain; :130-138 validates before local/remote route choice. Ordinary custom-prototype values are rejected via projectWireRecord and assertExactPrototype. Temporal has no listed transport case. persisted.ts:792 uses this projection even for the SingleProcessCoordinator request path. No direct-core test proves this path. E9 Source precedent only: offline-transactions/src/outbox/TransactionSerializer.ts :9-78 recognizes an allowlist, resolves global Temporal constructors, invokes brand-checking prototype methods, and rejects absent constructors. It is not a SQLite support contract or a dependency to add blindly. E10 Test evidence: sqlite-temporal-value-oracle.test.ts is a direct core/file SQLite reproduction covering Instant/PlainDate and Date/ISO controls, insert/ update, metadata/replay, equality/range, one-row windows, index presence. It is neither a provider-host test nor proof of index-plan use or all values.

Authority labels: E1-E10 are source facts/declared laws/test results. The user's request establishes the target of correcting silent Temporal loss and meshing with existing oracle work. Proposed support policies remain analyst inferences.

Primary oracle ownership to retain

Paths below are relative to packages/ at the frozen production revision. They locate current executable contracts, not new independent lifecycle models.

LawPrimary ownerNeeded Temporal extension
Kind/value after physical reopen, nested payloads and metadata/replaydb-sqlite-persistence-core/tests/sqlite-temporal-value-oracle.test.ts (new reproduction)Real brand checks; precision/calendar domains; explicit constructor failure; data versus tag collisions. Current 16 cases plus 5 calibrations are narrow diagnostic evidence.
Ordered actions, atomic durable rollback, superseded-value validation and bounded statement workdb-sqlite-persistence-core/tests/ordinary-transaction-work-oracle.ts:22, invalid-overwrite witness at :1445Add supported/rejected native-value dimensions to existing legal action histories. Its current Row type is string/number.
Atomic rows/metadata/position generations and schema fencesdb-sqlite-persistence-core/tests/sqlite-resume-snapshot-oracle.test.ts:214Constructor/format failure at snapshot read and schema/index upgrade cuts; do not claim public rollback.
SQL truth before residual correction, matching index expressions and actual named-index usenode-db-sqlite-persistence/tests/expression-index-oracle.test.ts:1, normalized index replacement at :1337Distinct equality/order keys, scalar/IN/index literals, precision/calendar, old physical index cases.
Statement-wide binding capacity and scoped-driver propagationdb-sqlite-persistence-core/tests/sqlite-core-adapter-oracle.test.ts:2708Typed IN, Boolean composition and both cursor queries at existing cap boundaries.
Wrapped source receipts, fail-stop, publication/durability and FIFOdb-sqlite-persistence-core/tests/persisted-oracle.test.ts:55Value-encoding failures before/after each existing cut, including queued immediate source writes. Precommit cancellation at :3699 remains a different contract.
Query result ownership across refetch/write overlapquery-db-collection/tests/ownership-lifecycle.oracle.test.ts (#2002)Receiving witness when a typed value or codec error enters accepted source commits; no second Query result controller.
Driver rollback/admission and receiving host executiondb-sqlite-persistence-core/tests/contracts/sqlite-driver-contract.ts:5; node-db-sqlite-persistence/tests/node-persistence.test.ts:58Reuse driver harnesses. Direct node:sqlite cannot certify Expo/OPFS/Electron transport or scheduling.
Local/transported subset value admissiondb-sqlite-persistence-core/tests/persisted-oracle.test.ts plus receiving coordinator suitesDecide and test typed wire transport. SingleProcessCoordinator also invokes the projection.

The ordinary-work budget is explicitly described as a proposed deterministic work contract, not browser latency evidence. The #2002 receiving Node test checks immediate source writes; the committed map leaves the reported two- refetch Node schedule and Expo scheduling open. None of these owner limits is retired by the Temporal design.