Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
434 commits
Select commit Hold shift + click to select a range
4926ccc
test(db): make lifecycle coverage independently observable
KyleAMathews Sep 4, 2026
83ae148
test(db): expose subset acquisition availability gaps
KyleAMathews Sep 4, 2026
e593b47
test(db): strengthen async lifecycle observations
KyleAMathews Sep 4, 2026
bd8c17b
test(db): complete subset acquisition phase table
KyleAMathews Sep 4, 2026
4f80cfb
test(db): complete async demand lifecycle histories
KyleAMathews Sep 4, 2026
eb40a86
test(db): consolidate subset lifecycle model
KyleAMathews Sep 4, 2026
f668cd1
test(db): make demand lifecycle traces independent
KyleAMathews Sep 4, 2026
72e30d3
test(db): complete subset lifecycle census
KyleAMathews Sep 5, 2026
9a6f911
test(db): close subset lifecycle census gaps
KyleAMathews Sep 5, 2026
ebef4ff
test(db): make acquisition census executable
KyleAMathews Sep 5, 2026
82c26a7
test(db): tighten lifecycle interaction evidence
KyleAMathews Sep 5, 2026
c2dcc3f
test(db): complete lifecycle acquisition census
KyleAMathews Sep 5, 2026
b78b6ed
test(db): assert terminal failure cleanup
KyleAMathews Sep 5, 2026
b2ec4a9
test(db): require compound lifecycle reach
KyleAMathews Sep 5, 2026
052f416
test(db): extend lifecycle red suffixes
KyleAMathews Sep 5, 2026
6514a7b
test(db): observe restart interleavings
KyleAMathews Sep 5, 2026
43777c1
test(db): tighten restart settlement evidence
KyleAMathews Sep 5, 2026
7c0428e
test(db): extend publication lifecycle suffixes
KyleAMathews Sep 5, 2026
b45e4d4
test(db): prove publication red suffixes execute
KyleAMathews Sep 5, 2026
b387106
test(db): map the publication lifecycle product
KyleAMathews Sep 5, 2026
3538d8c
test(db): close publication product audit gaps
KyleAMathews Sep 5, 2026
5a1b211
test(db): expose settled replay peer retirement gap
KyleAMathews Sep 5, 2026
93967bd
test(db): verify reentrant replay demand readiness
KyleAMathews Sep 5, 2026
ed48a3a
test(db): verify replay error ownership and publication trace
KyleAMathews Sep 5, 2026
3b3244d
test(db): verify settled peer recovery through includes graph
KyleAMathews Sep 5, 2026
a990927
test(db): cover ordered consumer lifecycle product
KyleAMathews Sep 5, 2026
a0aaeb7
test(db): close ordered lifecycle observation gaps
KyleAMathews Sep 5, 2026
814a1cc
docs: record lifecycle stress results and audit limits
KyleAMathews Sep 5, 2026
7d322d7
test(db): keep failed replay private in lifecycle model
KyleAMathews Sep 5, 2026
489fb3a
fix(db): reject unfinished preload during cleanup
KyleAMathews Sep 5, 2026
c3f8001
test(db): isolate startup cleanup cancellation
KyleAMathews Sep 5, 2026
e1fd395
fix(db): reject preload when ordered refinement fails
KyleAMathews Sep 5, 2026
54bd382
docs: record boundary repair loss audit and controls
KyleAMathews Sep 5, 2026
21554b4
fix(db): reconcile missing eager rows after restart
KyleAMathews Sep 5, 2026
244c1a8
docs: record restart audit and overall lifecycle progress
KyleAMathews Sep 5, 2026
31d95d8
fix(db): skip subset release for eager collections
KyleAMathews Sep 5, 2026
a0edd96
docs: record eager release audit and stress budget limits
KyleAMathews Sep 5, 2026
60fded6
test(db): expose peer replay loss as a failing assertion
KyleAMathews Sep 5, 2026
2624347
docs: record peer replay assertion loss audit
KyleAMathews Sep 5, 2026
1fb62bd
fix(db): ignore snapshot requests cancelled before acquisition
KyleAMathews Sep 5, 2026
4636494
docs: record pre-abort ownership loss audit
KyleAMathews Sep 5, 2026
cf3a29d
fix(db): retain demand until the subset loader is installed
KyleAMathews Sep 5, 2026
75e2bb5
fix(db): reject deferred subset requests when cancelled
KyleAMathews Sep 5, 2026
e8d4c28
docs: record queued cancellation audit and limits
KyleAMathews Sep 5, 2026
c205456
fix(db): fence adapter retirement across sync reentry
KyleAMathews Sep 5, 2026
6af2ab1
docs: record session retirement loss audit
KyleAMathews Sep 5, 2026
d6bf7fb
fix(db): defer source demand until initial error recovery
KyleAMathews Sep 5, 2026
464fd2e
docs: record initial error gate audit and baseline controls
KyleAMathews Sep 5, 2026
3b39a8a
fix(db): report pending results for unavailable subset demand
KyleAMathews Sep 5, 2026
c5fd546
test(db): verify recovery wait publication and restart boundaries
KyleAMathews Sep 5, 2026
a4e2250
docs: record recovery notification follow-up audit
KyleAMathews Sep 5, 2026
050911a
test(db): align truncate oracle with replay ownership contract
KyleAMathews Sep 5, 2026
1614d96
docs: record truncate contract loss audit
KyleAMathews Sep 5, 2026
35e300f
test(db): model queued replay setup in lifecycle histories
KyleAMathews Sep 5, 2026
67e3815
docs: record queued history model audit and generator gap
KyleAMathews Sep 5, 2026
ef7e197
fix(db): avoid acquiring canceled replay demand
KyleAMathews Sep 5, 2026
4d492a0
docs: record canceled replay ownership loss audit
KyleAMathews Sep 5, 2026
06fcad8
test(db): model cancellation settlement in replay histories
KyleAMathews Sep 5, 2026
807bac6
docs: record cancellation contract loss audit
KyleAMathews Sep 5, 2026
7f98dd2
test(db): distinguish readiness and replay publication waits
KyleAMathews Sep 5, 2026
da79036
docs: record publication readiness loss audit
KyleAMathews Sep 5, 2026
b9a326a
test(db): align publication oracle with batch and cancellation contracts
KyleAMathews Sep 5, 2026
c1027a8
test(db): preserve raw publication diagnostics after loss audit
KyleAMathews Sep 5, 2026
85e5d4d
fix(db): preserve private replay rows and scope demand retirement
KyleAMathews Sep 5, 2026
26045e0
refactor(db): remove unused replay key snapshot after loss audit
KyleAMathews Sep 5, 2026
8d66f43
fix(db): reconcile known snapshots and retained reset rows
KyleAMathews Sep 5, 2026
d702e7f
docs: record publication lifecycle loss audit
KyleAMathews Sep 5, 2026
8b018f9
fix(db): scope ordered recovery to each source consumer
KyleAMathews Sep 6, 2026
b80311f
docs: record ordered recovery loss audit
KyleAMathews Sep 6, 2026
681ed76
fix(db): retain ordered tie boundaries across row arrivals
KyleAMathews Sep 6, 2026
af72794
docs: record boundary retention loss audit
KyleAMathews Sep 6, 2026
397f962
fix(db): guard queued ordered recovery publication
KyleAMathews Sep 6, 2026
b76c1d0
docs: record queued recovery loss audit
KyleAMathews Sep 6, 2026
2d7f28c
test(db): arm incremental failures after ordered startup
KyleAMathews Sep 6, 2026
f95d200
docs: record incremental phase loss audit
KyleAMathews Sep 6, 2026
4adb7b9
fix(db): finish release attempts before reporting errors
KyleAMathews Sep 6, 2026
41290dd
test(db): enforce release error identity after loss audit
KyleAMathews Sep 6, 2026
75537a2
fix(db): retain failed cleanup within its retiring session
KyleAMathews Sep 6, 2026
6db3825
test(db): preserve cleanup error message contract
KyleAMathews Sep 6, 2026
c4e8207
fix(db): guard window reentry and retain cleanup cancellation
KyleAMathews Sep 6, 2026
74ba989
docs: record window lifecycle loss audit and remaining witnesses
KyleAMathews Sep 6, 2026
f2c7af8
fix(db): join pending window leases during preload
KyleAMathews Sep 6, 2026
af29779
docs: record controller loss audit and projection baseline
KyleAMathews Sep 6, 2026
8e3592f
test(db): map functional include projection boundaries
KyleAMathews Sep 6, 2026
cbea7f1
docs: record projection boundary loss audit
KyleAMathews Sep 6, 2026
159d7c7
fix(db): retain functional include projection inputs
KyleAMathews Sep 6, 2026
ca26b6a
test(db): guard scalar projections before moving materialization
KyleAMathews Sep 6, 2026
22f02a6
docs: record scalar projection compatibility audit
KyleAMathews Sep 6, 2026
5d3f1c0
test(db): specify functional projection consumer boundaries
KyleAMathews Sep 6, 2026
178dc46
docs: record projection compatibility specification audit
KyleAMathews Sep 6, 2026
bac6a6a
fix(db): materialize inline inputs before functional projection
KyleAMathews Sep 6, 2026
60e44bb
docs: record inline projection repair loss audit
KyleAMathews Sep 6, 2026
15c5516
test(db): pin already-public facade projection controls
KyleAMathews Sep 6, 2026
fd06c64
docs: record public facade control loss audit
KyleAMathews Sep 6, 2026
9a215be
test(db): pin facade snapshot isolation gate
KyleAMathews Sep 6, 2026
329b8f7
docs: record facade snapshot experiment loss audit
KyleAMathews Sep 6, 2026
05a2827
test(db): pin draft facade identity contract
KyleAMathews Sep 6, 2026
2bf4a3a
docs: record draft facade experiment loss audit
KyleAMathews Sep 6, 2026
8a89139
refactor(db): replace deferred projections with live input views
KyleAMathews Sep 6, 2026
531ee32
docs: reconcile slim projection loss audit
KyleAMathews Sep 6, 2026
cf11720
fix(db): read draft facade helpers through their view
KyleAMathews Sep 6, 2026
5b926a6
docs: record draft read API loss audit
KyleAMathews Sep 6, 2026
e70145f
fix(db): reject index creation on draft projection inputs
KyleAMathews Sep 6, 2026
0f573c3
docs: reconcile draft index guard loss audit
KyleAMathews Sep 6, 2026
a6ef1a1
test(db): check retained facade APIs across publication
KyleAMathews Sep 6, 2026
3881033
docs: record retained facade API loss audit
KyleAMathews Sep 6, 2026
7f81091
test(db): cover facade subscriptions through failure and restart
KyleAMathews Sep 6, 2026
e00472e
test(db): fence pending facade loads across graph restart
KyleAMathews Sep 6, 2026
f0c55b5
test(db): check chained facade continuation boundaries
KyleAMathews Sep 6, 2026
cbeda0b
docs: record continuation boundary loss audit
KyleAMathews Sep 6, 2026
6be078b
perf(db): snapshot draft facade rows once per input view
KyleAMathews Sep 6, 2026
93c3c2d
test(db): align retention oracle with restart reconciliation
KyleAMathews Sep 6, 2026
1da0ba1
docs: record snapshot audits and oracle campaign scope
KyleAMathews Sep 6, 2026
ec2ec79
test(db): preserve publication state across no-op lifecycle commands
KyleAMathews Sep 6, 2026
f2da984
fix(db): establish the source prefix on explicit window moves
KyleAMathews Sep 6, 2026
d7f4b9d
test(db): model raw updates after private replay retirement
KyleAMathews Sep 6, 2026
4d327d5
docs: record oracle audits and prefix transfer cost gate
KyleAMathews Sep 6, 2026
3a87718
test(db): bound provider row volume during pagination
KyleAMathews Sep 6, 2026
88fad51
fix(db): continue pagination from settled loading boundaries
KyleAMathews Sep 6, 2026
0c2198e
docs: record pagination boundary loss audit
KyleAMathews Sep 6, 2026
667ec97
test(db): model raw truncate events after replay retirement
KyleAMathews Sep 6, 2026
ec87d43
test(db): keep publication model state aligned with callbacks
KyleAMathews Sep 6, 2026
31ec4d1
docs: record publication model verification and loss audits
KyleAMathews Sep 6, 2026
e9ca64a
docs: record clean full oracle campaign with thread workers
KyleAMathews Sep 6, 2026
d6de62b
docs: preserve full campaign audit limits
KyleAMathews Sep 6, 2026
f9aa053
test(db): restore the package test typecheck gate
KyleAMathews Sep 6, 2026
c50df34
docs: record type gate audits and unit failure boundaries
KyleAMathews Sep 6, 2026
7d250b1
test(db): assert authoritative ordered retry work
KyleAMathews Sep 6, 2026
92b6c53
fix(db): keep failed windows private through source replay
KyleAMathews Sep 6, 2026
a353d56
test(db): distinguish replay failure ownership boundaries
KyleAMathews Sep 6, 2026
2f8b8b2
fix(db): isolate failed window state across restart
KyleAMathews Sep 6, 2026
f5ed3b2
docs: record closed unit groups and green stress gate
KyleAMathews Sep 6, 2026
247dc8d
docs: close integration campaign loss audit
KyleAMathews Sep 6, 2026
efd299e
docs: record measured code-weight reduction plan
KyleAMathews Sep 6, 2026
6355e74
docs: retain code-weight audit proof obligations
KyleAMathews Sep 6, 2026
b9fa969
refactor(db): retain subset acquisitions as lease objects
KyleAMathews Sep 6, 2026
fbddca5
docs: record acquisition reduction audit and stress gate
KyleAMathews Sep 6, 2026
704a402
refactor(db): centralize ordered startup failure state
KyleAMathews Sep 6, 2026
667477d
docs: record ordered failure reduction audit and stress results
KyleAMathews Sep 6, 2026
f2207d2
refactor(db): reuse callback handling for subscription teardown
KyleAMathews Sep 6, 2026
5e61e9c
refactor(db): derive ordered invalidation from contributed rows
KyleAMathews Sep 6, 2026
81a1b34
docs: record teardown and pagination reduction stress gate
KyleAMathews Sep 6, 2026
cdb9ecd
refactor(db): flatten replay pending state
KyleAMathews Sep 6, 2026
baa2163
fix(db): preserve retained replay startup participants
KyleAMathews Sep 6, 2026
00cb21d
fix(db): prune released failures from retained replay attempts
KyleAMathews Sep 6, 2026
7b9ea64
refactor(db): retain only current replay failures
KyleAMathews Sep 6, 2026
d69d846
docs: record replay reduction validation and next weight target
KyleAMathews Sep 6, 2026
9d595a4
refactor(db): share grouped and global aggregate pipelines
KyleAMathews Sep 6, 2026
a55b6d0
docs: record group pipeline loss audits and validation
KyleAMathews Sep 6, 2026
f929e44
refactor(db): trim group mapping and evaluation helpers
KyleAMathews Sep 7, 2026
9bfa0ea
docs: record group helper audit and ordered request candidate
KyleAMathews Sep 7, 2026
c5e060f
refactor(db): name ordered source request kinds
KyleAMathews Sep 7, 2026
f8a9afc
docs: record ordered request audit and stress results
KyleAMathews Sep 7, 2026
d65f07c
refactor(db): reuse published rows as replay baseline
KyleAMathews Sep 7, 2026
bd2be04
docs: record replay baseline audit and stress gates
KyleAMathews Sep 7, 2026
b455df3
refactor(db): share graph loader callback dispatch
KyleAMathews Sep 7, 2026
3feb359
docs: record graph callback audit and validation
KyleAMathews Sep 7, 2026
832bf76
refactor(db): keep one scheduling dependency set
KyleAMathews Sep 7, 2026
5122fc8
test(db): preserve dependency trace failure snapshots
KyleAMathews Sep 7, 2026
84d788c
fix(db): wait for reentrant scheduler dependencies
KyleAMathews Sep 7, 2026
5f24bbf
docs: record scheduler audit and full-suite follow-ups
KyleAMathews Sep 7, 2026
dc41313
test(db): await ordered join-subquery readiness
KyleAMathews Sep 7, 2026
7367954
docs: record ordered join test audit and identity decision
KyleAMathews Sep 7, 2026
4a5c09a
test(db): define inline includes value and publication guarantees
KyleAMathews Sep 7, 2026
d53fb74
docs: record inline identity audit and stress gate
KyleAMathews Sep 7, 2026
4c382d7
fix(db): leave subset row retention to the source
KyleAMathews Sep 7, 2026
8e17521
docs: record source retention stress gate and loss audit
KyleAMathews Sep 7, 2026
a9f2423
test(db): run order-by cases without automatic indexes
KyleAMathews Sep 7, 2026
9e47cdd
docs: record order-by unskip loss audit
KyleAMathews Sep 7, 2026
5b860cd
test(db): preserve settled empty-window work bounds
KyleAMathews Sep 7, 2026
08f5fbe
docs: record empty-window work loss audit
KyleAMathews Sep 7, 2026
b372383
test(db): preserve replacement startup progress
KyleAMathews Sep 7, 2026
7be7a58
docs: record recovery design loss audit
KyleAMathews Sep 7, 2026
38aaaec
docs: assess snapshot acquisition boundaries
KyleAMathews Sep 7, 2026
a66c84d
docs: record snapshot split loss audit
KyleAMathews Sep 7, 2026
565ff43
docs: record snapshot handoff experiment
KyleAMathews Sep 7, 2026
1cec4d7
docs: record handoff experiment loss audit
KyleAMathews Sep 7, 2026
dce182a
docs: trace loading lifecycle formation
KyleAMathews Sep 7, 2026
30cd965
docs: record wider loading design grammars and audit
KyleAMathews Sep 7, 2026
1598706
docs: record wider readout loss audit
KyleAMathews Sep 7, 2026
97b5d87
docs: freeze ordered lifecycle refactor baseline
KyleAMathews Sep 7, 2026
200f96f
refactor(db): isolate ordered source loading
KyleAMathews Sep 7, 2026
13f4dd0
refactor(db): make ordered retry failure explicit
KyleAMathews Sep 7, 2026
7a17c3f
docs: record ordered state refactor validation
KyleAMathews Sep 7, 2026
340250b
refactor(db): distinguish ordered settlement from recovery
KyleAMathews Sep 7, 2026
89d3ba2
docs: close ordered loader refactor checkpoint
KyleAMathews Sep 7, 2026
2a48984
refactor(db): make replay acquisition handoff explicit
KyleAMathews Sep 7, 2026
aa1ffcf
test(db): preserve exact options identity in handoff matrix
KyleAMathews Sep 7, 2026
69f45d2
docs: record audited acquisition handoff checkpoint
KyleAMathews Sep 7, 2026
1e69e83
fix(db): isolate ordered publication settlement by session
KyleAMathews Sep 7, 2026
dd85385
docs: close audited integration handoff checkpoint
KyleAMathews Sep 7, 2026
3cc7d59
test(db): pin demand message boundaries before D2 batching
KyleAMathews Sep 7, 2026
4f7e315
docs: record demand-presence spike audit limits
KyleAMathews Sep 7, 2026
f902b21
fix(db): align index cursors and clear readiness lint
KyleAMathews Sep 7, 2026
fcee497
test(db): pin source cleanup recovery boundary
KyleAMathews Sep 7, 2026
4b248b4
docs: record consolidated readiness gates and audit
KyleAMathews Sep 7, 2026
3623df2
refactor(db): share descriptor-safe array snapshots
KyleAMathews Sep 7, 2026
902c03a
docs: record array snapshot validation and loss audit
KyleAMathews Sep 7, 2026
ccf4a9c
refactor(db): name public container property record
KyleAMathews Sep 7, 2026
915280a
docs: record route property type loss audit
KyleAMathews Sep 7, 2026
31e4eaf
docs: prepare consolidated lifecycle PR
KyleAMathews Sep 7, 2026
2e38c58
ci: apply automated fixes
autofix-ci[bot] Sep 7, 2026
859c1e7
fix(db): wait for initial rows before fetching the next page
KyleAMathews Sep 7, 2026
0190839
test: await settled framework window normalization
KyleAMathews Sep 7, 2026
6a5f7a6
test: retain post-flush window assertions
KyleAMathews Sep 7, 2026
21760ba
test(query-db): expect cancellation of abandoned preloads
KyleAMathews Sep 7, 2026
cfb724f
fix: address review findings and retire unused subset algebra
KyleAMathews Sep 7, 2026
7061d38
fix: close publication and subset ownership review gaps
KyleAMathews Sep 8, 2026
2f89da3
fix: settle adapter waits and preserve acquisition ownership
KyleAMathews Sep 8, 2026
ef3b92c
fix: fence cancelled demand and expose broken source tracking
KyleAMathews Sep 8, 2026
c2fe72d
test: call the acquired PowerSync release helper
KyleAMathews Sep 8, 2026
3f915f8
refactor: attempt each subset release once
KyleAMathews Sep 8, 2026
926d58c
refactor: reject structural cycles and hash Collection handles by ref…
KyleAMathews Sep 8, 2026
245c4b5
docs: align subset ownership and hashing contracts
KyleAMathews Sep 8, 2026
d4682b4
refactor(db): remove dead state and consolidate exact duplicates
KyleAMathews Sep 8, 2026
475f1b6
refactor(db): restrict functional select to inline include inputs
KyleAMathews Sep 8, 2026
bf4722a
perf(db): encode group representatives once per contribution
KyleAMathews Sep 8, 2026
a116c66
perf(db): compare binary equality operands without string encoding
KyleAMathews Sep 8, 2026
060f436
perf(db): stop BasicIndex filtering when the page is full
KyleAMathews Sep 8, 2026
176ec85
perf(db): retain ordered bucket ownership for exact index values
KyleAMathews Sep 8, 2026
b127a83
perf(db): avoid intermediate arrays when comparing own keys
KyleAMathews Sep 8, 2026
98fed61
fix(db): observe deduplicated load callback failures
KyleAMathews Sep 8, 2026
7cfe70b
perf(db): remove proxy debug logging overhead
KyleAMathews Sep 8, 2026
3f19379
perf(db): remove automatic index diagnostics
KyleAMathews Sep 8, 2026
fcaaf40
refactor(db): remove unused helpers and exercise production test paths
KyleAMathews Sep 8, 2026
a14b942
refactor(db): share narrow helpers and require exact release
KyleAMathews Sep 8, 2026
641f818
test(db): preserve indexed range recovery after mixed values
KyleAMathews Sep 8, 2026
f71486e
test(db): protect reference-key matches across public container cleanup
KyleAMathews Sep 8, 2026
ae6fc2e
refactor(db): restrict cursor construction to single-column requests
KyleAMathews Sep 8, 2026
03b0a90
refactor(db): retain immutable subset request data
KyleAMathews Sep 8, 2026
464a6ec
test(db): cover replay failure isolation and consumer recovery
KyleAMathews Sep 8, 2026
b3f0b59
refactor(db): replace replay acquisitions sequentially
KyleAMathews Sep 8, 2026
e25b3d6
test(powersync): cover pending writes at final demand release
KyleAMathews Sep 8, 2026
40a2006
test(db-ivm): preserve work limits across rejected hash retries
KyleAMathews Sep 8, 2026
fb1658e
refactor(db): clear disposed effect references without deferred state
KyleAMathews Sep 8, 2026
5188e97
refactor(query-db): reuse eager observers across cache removal
KyleAMathews Sep 8, 2026
26a0d62
test(db): cover retired load status across settlement orders
KyleAMathews Sep 9, 2026
6e1f051
refactor(db): remove live-query run-count diagnostic
KyleAMathews Sep 9, 2026
d525f37
test(db): verify resource cleanup across failed teardown retries
KyleAMathews Sep 9, 2026
88472e4
refactor(db): trim unused internals and move test inspection out of r…
KyleAMathews Sep 9, 2026
3e7f106
fix(db): preserve live Map and Set draft iteration
KyleAMathews Sep 9, 2026
7221ba0
fix(db): join reentrant effect disposal outcomes
KyleAMathews Sep 9, 2026
4cbb29b
fix(db): preserve ordered recovery across late finite success
KyleAMathews Sep 9, 2026
8631f8c
fix(db): reject restart during active collection cleanup
KyleAMathews Sep 9, 2026
3021228
test(db): match cleanup oracle collection key type
KyleAMathews Sep 9, 2026
afeae0b
chore(db): classify API removals as a minor release
KyleAMathews Sep 9, 2026
7f4f955
fix(db): isolate persistence and observer failures
KyleAMathews Sep 9, 2026
38f4c83
fix: close demand settlement and reference identity gaps
KyleAMathews Sep 9, 2026
21dbcc3
perf(db): retire finite demands after authoritative recovery
KyleAMathews Sep 9, 2026
58e3edc
fix(db): preserve draft value sharing and detach completed updates
KyleAMathews Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .changeset/harden-load-subset-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
'@tanstack/db': minor
'@tanstack/db-ivm': patch
'@tanstack/db-sqlite-persistence-core': patch
'@tanstack/electric-db-collection': patch
'@tanstack/powersync-db-collection': patch
'@tanstack/query-db-collection': patch
---

Fix on-demand load settlement, ordered pagination, and replay to preserve coherent results across cancellation, failure, cleanup, and restart. Preserve subset results and ownership across Electric, PowerSync, Query, and SQLite persistence adapters. Correct live-query grouping, include projections, value identity, and indexed comparisons. D2 hashing now rejects structural cycles and excessive traversal depth or work with an explicit error; Collection handles retain object-reference identity without traversing their mutable contents.

Remove the unused public subset-algebra helpers: `isWhereSubset`, `unionWherePredicates`, `minusWherePredicates`, `isOrderBySubset`, `isLimitSubset`, `isOffsetLimitSubset`, `isPredicateSubset`, and `isLoadSubsetRequestSubsumedBy`. Apps that import these helpers must remove those imports; normal queries and adapters are unaffected. `DeduplicatedLoadSubset` remains available and shares only exact demand identities.

Reject compiled Collection-valued includes as `fn.select()` inputs, including nested descendants, before invoking the callback. Use `toArray()` or `materialize()` in the upstream `.select()` for child-value calculations. To keep live child Collections, use expression `.select()` or perform parent-only functional work before adding the includes. Ordinary Collection-valued includes remain supported.

Remove proxy `DEBUG` logging and automatic index timing statistics to avoid diagnostic work on reads and writes. Remove `getStats()` and `IndexStats`; use `index.keyCount` for the current entry count, and instrument index methods externally when profiling. Custom index subclasses must remove calls to the retired `trackLookup()` and `updateTimestamp()` helpers.

Fix mutation drafts so Map/Set `forEach` calls each callback once and read-only iteration reports no changes. Track nested Map `for...of` edits through `collection.update()`. Keep Set entries in place during nested edits, preserving live iteration and usable `has`, `delete`, and `add` handles without duplicate entries or repeated visits. Reverting one entry no longer discards another entry's pending changes.

Preserve shared values within a row's draft. Newly supplied objects use normal shared references during the update callback, including Map values and Set members; editing through either handle changes the same new object. Copy completed changes at callback return so later caller edits cannot mutate stored data. Existing collection values remain isolated. Copy a new caller-owned value before insertion if it must remain untouched during the callback.

Keep rejected local-storage mutations out of later successful saves. Stage insert, update, delete, and manual transaction writes before persisting, then promote the shared cache only after storage succeeds.

Deliver live-query observer publications to peer listeners even when one listener throws. Preserve queued publication order and stop delivery on disposal; report the first listener failure after delivery.

Wait for PowerSync demands admitted during tracking finalization before reporting them loaded. Preserve untouched object and array key identity when they contain `NaN`. Retire every failed ordered acquisition on explicit retry, while retaining a full-source demand repaired by replay.

After authoritative ordered recovery succeeds, retire settled page and tie demands so later truncate replay fetches only the full-source replacement. Keep unfinished requests observed until settlement and preserve independent query ownership.

Remove the live-query `utils.getRunCount()` diagnostic and its runtime counter. Apps that call this diagnostic must remove those calls. Query scheduling and results are unchanged.

Remove test-only index inspection getters (`indexedKeysSet`, `valueMapData`, `orderedEntriesArray`, and `orderedEntriesArrayReversed`) and unused scheduler diagnostics. `ReverseIndex` now exposes only the `IndexReader` lookup, range, and forward traversal surface returned by `findIndexForField`; mutate the original index instead. Export `IndexReader` for callers that name this return type. Remove the unused subscription `releaseLoadSubset()` method; request owners use the release callback supplied by `onLoadSubsetResult`. Ordinary query and adapter APIs remain unchanged by these removals.

Remove unused internal helpers and the unused public error classes `WhereClauseConversionError`, `SubscriptionNotFoundError`, and `AggregateNotSupportedError`. These classes have no remaining runtime throw sites; remove any imports of them. Keep the existing query and index behavior and exercise identity/evaluation tests through the production entry points.

Ensure failed mutations roll back even when their rejection value cannot be converted to a string. Preserve ordinary Error instances; report unprintable rejection values as `Unknown error`.

Make reentrant effect disposal share the active cleanup result, including calls from abort listeners or source release callbacks. A release failure reaches every waiting disposer while each source still receives one release attempt.

Reject starting or preloading a collection from inside its active cleanup callbacks with a clear `CollectionStateError`. Nested cleanup cannot admit replacement work that the old teardown would discard. Restart after cleanup completes, or from its final `cleaned-up` status event, remains supported.

Prevent older page or tie-boundary completions from clearing a newer full-source failure or starting redundant loading. Failed window moves retain their settled public snapshot; an explicit retry releases the failed acquisition once and publishes the completed replacement.

Restrict direct subscription `requestLimitedSnapshot()` cursor inputs to one order term and one `minValues` entry. Composite and partial-composite cursor inputs now throw before local delivery or adapter work. Use normal live-query ordering and window APIs for multi-column pagination; those remain supported through prefix-and-tie loading. Existing adapters need no changes.

Treat `LoadSubsetOptions` and their nested request data as immutable from submission onward. Core no longer copies expression trees or mutable constant payloads at the sync and deduplication boundaries. Create a new Date, byte array, membership array, or options object when changing a demand instead of mutating submitted data. Adapters must also leave request data unchanged. Use stable data properties rather than stateful getters. `AbortSignal` cancellation and subscription release remain live.

Replace replay acquisitions sequentially: release the prior physical lease before starting its replacement. The logical demand and last complete public result remain retained. A failed release prevents replacement startup; failed startup leaves demand available for a later authoritative replay. Custom adapters must support a release/load gap and preserve resources still held by other owners; a sole underlying resource may stop and restart.
7 changes: 7 additions & 0 deletions docs/collections/query-collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,13 @@ Derived projections, such as `select: (response) => response.edges.map((edge) =>

The `meta` option allows you to pass additional metadata to your query function. By default, Query Collections automatically include `loadSubsetOptions` in the meta object, which contains filtering, sorting, and pagination options for on-demand queries.

Treat `ctx.meta.loadSubsetOptions` and its nested request data as read-only.
Do not edit expression nodes, ordering options, Dates, byte arrays, or membership
arrays. Build separate API parameters instead. Core retains request data without
cloning it; changing submitted data can make the request disagree with its cache
key. To change a query constant, supply a new value rather than mutating the old
one. Cancellation through the request's `AbortSignal` remains supported.

### Type-Safe Meta Access

The `ctx.meta.loadSubsetOptions` property is automatically typed as `LoadSubsetOptions` without requiring any additional imports or type assertions:
Expand Down
11 changes: 6 additions & 5 deletions docs/guides/error-handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,12 @@ their incremental result can no longer be kept complete.

When a must-refetch truncate cannot reload every active subset, a subscription
keeps its last successful snapshot and reports the subset error. It discards
the incomplete replay batch, then resumes publishing ordinary source changes.
The next truncate retries every active subset. Overlapping truncates form one
atomic replay: all in-flight requests settle, the newest attempt decides the
result, and subscribers receive the replacement only when that attempt
succeeds.
the incomplete replay batch and keeps later source changes private because they
cannot prove a complete replacement. The next truncate retries every active
subset. Overlapping truncates form one atomic replay: all in-flight requests
settle, the newest attempt decides the result, and subscribers receive the
replacement only when that attempt succeeds. Cleanup rejects window moves that
are waiting for replay with `AbortError`.

## Collection Status and Error States

Expand Down
5 changes: 5 additions & 0 deletions docs/guides/live-queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -2821,6 +2821,11 @@ The functional variant API provides an alternative to the standard API, offering

### Functional Select

> [!WARNING]
> `fn.select()` cannot consume Collection-valued includes, even when the callback ignores or passes through that field. This also applies to nested Collection-valued includes. Use `toArray()` or `materialize()` in the upstream `.select()` to provide inline child values. Keep these helpers outside the functional callback.

Inline child updates rerun the functional projection. Arrays support JavaScript calculations, but do not expose Collection methods such as `get()`, `createIndex()`, or `subscribeChanges()`. To keep live child Collections, use standard `.select()`, or perform parent-only `.fn.select()` work before adding the child include.

> [!WARNING]
> `fn.select()` cannot be used with `groupBy()`. The `groupBy` operator needs to statically analyze the `select` clause to discover which aggregate functions to compute, which is not possible with an opaque JavaScript function. Use the standard `.select()` API for grouped queries.

Expand Down
20 changes: 20 additions & 0 deletions docs/guides/mutations.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,26 @@ todoCollection.update(
> [!IMPORTANT]
> The `updater` function uses an Immer-like pattern to capture changes as immutable updates. You must not reassign the draft parameter itself—only mutate its properties.

Existing row values stay isolated from draft edits. New objects you assign or
add to a draft keep normal shared references during the synchronous callback:

```ts
const tag = { label: 'new' }
todoCollection.update(todoId, (draft) => {
draft.tags.add(tag) // tags is a Set
tag.label = 'edited' // included in the update
for (const value of draft.tags) value.label = 'final'
// tag.label is now 'final' too
})
tag.label = 'later' // does not change the stored row
```

The completed changes are copied when the callback returns. This applies to
new Map values, Set members, and objects assigned to draft properties. If you
need to keep a new caller-owned object unchanged during the callback, insert
your own copy. A thrown callback does not roll back edits to that caller-owned
object; it leaves existing collection data unchanged.

### Delete

Remove items from a collection:
Expand Down
216 changes: 0 additions & 216 deletions docs/reference/classes/AggregateNotSupportedError.md

This file was deleted.

Loading
Loading