Skip to content

test: adopt @tanstack/oracles d1b508a (owns on oracleProperty, no law.owner) - #2407

Merged
KyleAMathews merged 7 commits into
mainfrom
oracle/adopt-owns
Nov 11, 2026
Merged

KyleAMathews merged 7 commits into
mainfrom
oracle/adopt-owns

Conversation

@KyleAMathews

@KyleAMathews KyleAMathews commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This pull request adopts @tanstack/oracles and @tanstack/eslint-plugin-oracles at TanStack/oracles d1b508a (TanStack/oracles#11). It is an API migration. It does not change behavior. It prepares the later oracles change that removes legacyCampaigns and declareOracle.

d1b508a makes two changes that affect this repository:

  • OracleLaw has no owner field. Code ownership belongs to CODEOWNERS (maintainer decision, 2026-11-10). An owner: property in a law literal is now a TypeScript excess-property error.
  • oracleProperty takes owns, with the same meaning as the owns of declareOracle. The gap CLI reads owns from both calls during the migration.

Changes

  1. Pins. The three pkg.pr.new pins change from b6bf6fc to d1b508a: the root package.json (both packages) and packages/db/package.json. The lockfile changes only in the two tarball URLs and their integrity hashes. The manifests of the new tarballs have the same dependencies, peer dependencies, engines, and bin as the old ones. pnpm install --frozen-lockfile accepts the lockfile, and a later pnpm install reports "Already up to date".

  2. law.owner removed. A TypeScript-AST codemod removed 359 owner properties (one line each) from 190 files:

    • 336 properties in law: { ... } object literals.
    • 23 properties in shared law objects that calls receive through a variable, such as const lifecycleLaw = { statement, authority, limits, owner } with law: lifecycleLaw or { ...pagerLaw, statement }.

    No code reads law.owner, and no repository type declares it. Other owner names, such as product fields, variables, and coverage-map prose, are unchanged. The scripts' oracle files are in a separate commit because the first commit missed them.

  3. owns moved to oracleProperty. A TypeScript-AST codemod moved owns in each of the 162 files that have both a declareOracle({ owns }) and at least one inline oracleProperty({ ... }) call:

    • The owns array goes into each inline oracleProperty call, directly after law. The entries are byte-identical and in the same order. 77 files have one call. 85 files have several calls, and each call gets the same list (390 calls in total). The gap CLI judges ownership per file, so a repeated list has the same meaning.
    • Two files had two declareOracle calls with owns: live-query-observer-hydration-oracle.property.test.ts and window-render-oracle.test.tsx. Each call gets the ordered union of the lists, without duplicates. In both files, the second list was a subset of the first.
    • declareOracle keeps its check, model, grammar, typeModel, and other parts, because oracle/no-unit-test reads them. 28 declareOracle calls had only owns. They were removed, and their import was removed in the 26 files that had no other declareOracle use. No oracle/ rule reads owns from declareOracle: no-unit-test collects only identifier parts and typeModel strings.
    • 49 comment blocks moved with the list to the first oracleProperty call. These are a // What this oracle owns: ... comment directly above a declareOracle call, and any comment directly above a removed call. Other comments stay in place.
    • 80 files keep declareOracle({ owns }), because they have no inline oracleProperty call (the list follows). If a file registers through a wrapper in another module, moving its list there would assign the ownership to that other file.
  4. Legacy entries. No change. legacyCampaigns keeps its two entries. See the decisions below.

  5. Docs. The docs did not tell authors to write law.owner or to put owns on declareOracle. They did not describe owns at all. This change adds the guidance:

    • docs/contributing/oracle-rubric.md: the inline-literal owns form on oracleProperty, the declareOracle fallback, and the rule that a law has no owner field.
    • docs/contributing/glossary.md: the "oracle owner" row now says that it is not a law field, and a new "owned code" row.
    • docs/contributing/oracle-coverage.md: the paragraph on the gap report now says where the report reads owns.
    • AGENTS.md and .agents/skills/oracle-authoring/SKILL.md: one short pointer each.

    The coverage map keeps its "owner" column, which is the oracle owner.

No changeset: this change touches only tests, docs, and development dependencies, and the similar pull requests (#2402, #2403, #2406) have none.

Counts

Item Count
owner: law lines removed 359 (336 inline law: literals, 23 shared law objects), in 190 files
Files whose owns moved to oracleProperty 162 (77 with one call and 85 with several, so 390 calls receive owns)
declareOracle calls removed (only owns remained) 28, with 26 imports removed
Files that keep declareOracle({ owns }) 80
(file, owns entry) pairs, before and after 515 in 242 files before, 515 in 242 files after, identical

The task estimate was about 431 owner lines. The AST scan found 359 law owner properties. No owner property is left in a law-shaped object.

Files that keep declareOracle({ owns })

None of these files has an inline oracleProperty({ ... }) call:

  • 67 files register through a production driver, a wrapper in another module (for example, registerIncludesProperty), or it/test over their declared parts.
  • 7 files are end-to-end or Playwright specs.
  • 6 files are companion modules that register no tests.
The 80 files

e2e or Playwright spec

  • packages/browser-db-sqlite-persistence/e2e/electric-source-prefix-oracle.opfs.spec.ts
  • packages/browser-db-sqlite-persistence/e2e/leader-close-oracle.opfs.spec.ts
  • packages/browser-db-sqlite-persistence/e2e/opfs-open-outcome-oracle.e2e.test.ts
  • packages/browser-db-sqlite-persistence/e2e/opfs-request-order-oracle.opfs.spec.ts
  • packages/browser-db-sqlite-persistence/e2e/reload-class-oracle.opfs.spec.ts
  • packages/browser-db-sqlite-persistence/e2e/shared-driver-fairness-oracle.opfs.spec.ts
  • packages/electron-db-sqlite-persistence/tests/reload-class-oracle.electron.e2e.test.ts

registers through a driver, wrapper, or ordinary it/test

  • packages/browser-db-sqlite-persistence/tests/multi-tab-electric-oracle.test.ts
  • packages/browser-db-sqlite-persistence/tests/opfs-open-outcome-oracle.test.ts
  • packages/browser-db-sqlite-persistence/tests/per-collection-coordinator-oracle.test.ts
  • packages/browser-db-sqlite-persistence/tests/shared-driver-fairness-oracle.test.ts
  • packages/db-ivm/tests/temporal-group-key-oracle.test.ts
  • packages/db-sqlite-persistence-core/tests/persisted-demand-coverage-oracle.test.ts
  • packages/db-sqlite-persistence-core/tests/sqlite-temporal-value-oracle.test.ts
  • packages/db/tests/collection-cleanup-restart-oracle.test.ts
  • packages/db/tests/collection-index-value-oracle.test.ts
  • packages/db/tests/collection-row-metadata-composition-oracle.test.ts
  • packages/db/tests/collection-subscription-reentrancy-oracle.test.ts
  • packages/db/tests/conformance/indexing-reuse-oracle.test.ts
  • packages/db/tests/db-client-hydration-authority-oracle.test.ts
  • packages/db/tests/duration-query-equality-oracle.test.ts
  • packages/db/tests/effect-disposal-oracle.test.ts
  • packages/db/tests/index-suggestion-oracle.test.ts
  • packages/db/tests/indexed-db/cross-tab-boundary-oracle.test.ts
  • packages/db/tests/indexed-db/local-write-order-oracle.test.ts
  • packages/db/tests/indexed-db/pending-history-oracle.test.ts
  • packages/db/tests/indexed-db/persistence-values-oracle.test.ts
  • packages/db/tests/indexed-db/retirement-oracle.test.ts
  • packages/db/tests/indexed-db/transport-oracle.test.ts
  • packages/db/tests/indexed-db/wrapper-settlement-oracle.test.ts
  • packages/db/tests/local-only-direct-write-oracle.test.ts
  • packages/db/tests/local-storage-order-oracle.test.ts
  • packages/db/tests/optimistic-composition-oracle.test.ts
  • packages/db/tests/optimistic-history-publication-oracle.test.ts
  • packages/db/tests/paced-mutations-oracle.test.ts
  • packages/db/tests/production-error-messages-oracle.test.ts
  • packages/db/tests/proxy-iteration-contract-oracle.test.ts
  • packages/db/tests/query/includes-alias-shadowing-oracle.test.ts
  • packages/db/tests/query/includes-collection-oracle.property.test.ts
  • packages/db/tests/query/includes-context-transport-oracle.test.ts
  • packages/db/tests/query/includes-cross-formulation-oracle.property.test.ts
  • packages/db/tests/query/includes-functional-projection-oracle.test.ts
  • packages/db/tests/query/includes-optimistic-oracle.property.test.ts
  • packages/db/tests/query/includes-oracle.property.test.ts
  • packages/db/tests/query/includes-outer-join-route-work-oracle.test.ts
  • packages/db/tests/query/includes-publication-oracle.test.ts
  • packages/db/tests/query/includes-query-shape-oracle.test.ts
  • packages/db/tests/query/includes-space-oracle.test.ts
  • packages/db/tests/query/includes-temporal-oracle.test.ts
  • packages/db/tests/query/includes-work-counter-oracle.test.ts
  • packages/db/tests/query/index-path-collision-oracle.test.ts
  • packages/db/tests/query/load-subset-source-readiness-refinement-oracle.test.ts
  • packages/db/tests/query/load-subset-transaction-refinement-oracle.test.ts
  • packages/db/tests/query/mixed-index-order-oracle.test.ts
  • packages/db/tests/query/optimizer-semantics-oracle.test.ts
  • packages/db/tests/query/ordered-source-loader-oracle.test.ts
  • packages/db/tests/query/subquery-user-value-oracle.test.ts
  • packages/db/tests/query/virtual-row-fields-effect-oracle.test.ts
  • packages/db/tests/query/virtual-row-fields-input-oracle.test.ts
  • packages/db/tests/query/virtual-row-fields-oracle.test.ts
  • packages/db/tests/query/virtual-row-fields-types-oracle.test.ts
  • packages/db/tests/truncate-readiness-oracle.test.ts
  • packages/electric-db-collection/tests/pg-serializer-oracle.property.test.ts
  • packages/electron-db-sqlite-persistence/tests/electron-ipc-readiness-oracle.test.ts
  • packages/offline-transactions/tests/connectivity-replay-oracle.test.ts
  • packages/query-db-collection/tests/includes-work-counter-oracle.test.ts
  • packages/query-db-collection/tests/ownership-lifecycle.oracle.test.ts
  • packages/query-db-collection/tests/persisted-direct-write-window.oracle.test.ts
  • packages/query-db-collection/tests/ssr-dehydration-oracle.test.ts
  • packages/react-db/tests/convex-lazy-paging-oracle.test.tsx
  • packages/react-db/tests/effect-callback-oracle.test.tsx
  • packages/react-db/tests/infinite-query-render-cuts-oracle.test.tsx
  • packages/react-db/tests/usePacedMutations-render-cuts-oracle.test.tsx
  • packages/vue-db/tests/useLiveQuery-publication-oracle.test.ts

companion module (no test registration)

  • packages/db/tests/collection-metadata-publication-oracle.ts
  • packages/db/tests/comparison-laws-oracle.ts
  • packages/electric-db-collection/tests/documented-mutations-oracle.test.ts
  • packages/offline-transactions/tests/executor-environment-oracle.property.test.ts
  • packages/offline-transactions/tests/transaction-serializer-oracle.ts
  • packages/query-db-collection/tests/documented-mutations-oracle.test.ts

Legacy-entry decisions

  • packages/db/tests/declared-reach-oracle.property.test.ts: kept. This file is the self-oracle for the vendored createOracleReach and runOracleCampaign helpers, and the helpers are its subject. To judge them, it must import them, and oracle/oracle-property-only reports that import. Option (a), conversion, would remove the judgments. Option (b), retirement, does not apply: this migration does not make the helpers unneeded. createOracleReach still has callers outside the legacy list: documented-mutations-support.ts, live-query-bound-options-support.ts, query-db-collection/tests/query.test.ts, electric-db-collection/e2e/collection-gc.e2e.test.ts, and four db-sqlite-persistence-core/tests/sync-metadata-* modules. Only this oracle, legacy-campaign.test.ts, and scripts/oracle-campaign-inventory.mjs use runOracleCampaign. Retiring it alone would leave the entry in place, because of the createOracleReach import. A maintainer decides whether to retire runOracleCampaign and its judgments now.

  • packages/node-db-sqlite-persistence/tests/expression-index-oracle.test.ts: kept. Its product campaigns already use oracleProperty. The legacy uses are four raw fc.check controls:

    • the fast-check seed, run, and path configuration self-checks.
    • the grammar-ablation controls, where each ablated axis must fail with missing=<kind>.
    • the wrong-answer controls, which must shrink to a non-null counterexamplePath and fail again when the same seed and path replay.

    Native oracleProperty calibrations at d1b508a take only a mutant driver or corrupt and a law name. They do not mutate the history arbitrary and do not expose shrink coordinates. d1b508a does not change calibrations. Conversion would therefore drop the shrink-and-replay and ablation judgments. This entry needs a framework calibration that exposes the shrink path and supports grammar ablation.

Verification

Evidence: no behavior changes, the owns pairs are identical, typecheck and lint pass, and the sampled oracles pass.

  • Owns pairs. /tmp scripts read every tracked file that calls oracleProperty or declareOracle. One script uses the gap CLI's own readOwns (oracle-gaps/owners.mjs). It returns 515 (file, entry) pairs in 242 files on both trees, and the sets are identical. A second, independent AST reader compares the raw source text of each entry. It finds the same ordered entry lists per file, and every oracleProperty list in a file equals that file's former list. After the change, 80 files have owns only on declareOracle, 162 files only on oracleProperty, and no file has both.

  • Gap CLI ownership (static only, no mutation sweep). node node_modules/@tanstack/oracles/oracle-gaps/index.mjs --help works. The CLI has no static-only flag, so the check calls its analyze(), which instruments and reads ownership but runs no tests. It runs on packages/db with --source src/collection/lifecycle.ts:

    • It reads 122 oracle files and finds 430 mutant sites in 44 functions, with 0 unowned functions and 64 owner files. collection-gc-transaction-oracle.property.test.ts is one of the owners.
    • The same read on the parent tree (git archive of packages/db before the owns commit) gives an identical owners-by-function map.
  • Typecheck. tsc --noEmit -p ran in every package with a tsconfig.json (27 packages), after pnpm build:

    • 25 packages have 0 errors.
    • packages/db and packages/db-collection-e2e each have one TS6059 rootDir error, for scripts/publishable-module-output.mjs from vite.config.ts and for support/test-context.ts. These are configuration errors in files that this branch does not change.
    • There is no excess-property error for owner or owns.
  • Lint. pnpm lint:changed passes. pnpm lint:oracles passes: the legacy-campaign gate reports {"added":[]}, and the oracle/ rules pass on every oracle file. The pre-commit hook (the oracle/ rules and eslint --fix) passed on each commit. Prettier reports all changed files as formatted.

  • Sampled oracles (--maxWorkers=2). Each file runs its declared fixed-seed campaigns and a random campaign:

    • packages/db/tests/collection-gc-transaction-oracle.property.test.ts (fixed seed 20261024) and packages/db/tests/live-query-observer-hydration-oracle.property.test.ts (20260, -88123, and 2345, the merged-list file): 2 files, 50 tests passed.
    • packages/convex-db-collection/tests/offline-oracle.property.test.ts (20261022, 20261023): 9 tests passed.
    • packages/db-ivm/tests/multiset-consolidate-oracle.property.test.ts (2026929, where the codemod removed its declareOracle and moved its comment): 41 tests passed.
    • packages/react-db/tests/window-render-oracle.test.tsx (2291 and 2345, with several nested calls): 480 tests passed.

    These are the three packages with the most changed files (db, convex-db-collection, db-ivm), plus react-db.

  • Scripts oracles. vitest run --config scripts/oracle-scripts.vitest.config.mjs --maxWorkers=2: 9 files and 394 tests pass.

  • packages/db has no test:oracle-framework script.

Limits

  • The sample runs 5 of the 162 files whose owns moved. The other files changed only by an inserted owns property and a removed owner property. Typecheck, lint, and the owns comparison cover them.
  • No gap report or mutation sweep ran. The ownership evidence is static: identical readOwns pairs for every file, and an identical owners map for src/collection/lifecycle.ts.
  • The two legacyCampaigns entries remain, as described above.

This pull request and its description were written by Isaac.

Summary by CodeRabbit

  • Documentation
    • Clarified how oracle checks identify the production code they cover and how ownership is represented in coverage reports.
    • Added guidance distinguishing code ownership from oracle coverage ownership.
  • Chores
    • Updated oracle metadata across test suites to associate checks with the code they assess.
    • Updated development tooling to a newer package preview.

Test and others added 5 commits November 10, 2026 18:48
Co-authored-by: Isaac <no-reply@databricks.com>
@tanstack/oracles d1b508a drops `owner` from OracleLaw: code ownership
belongs to CODEOWNERS (maintainer decision, 2026-11-10). Remove the field
from every law literal passed to oracleProperty and from the shared law
objects that those calls receive.

Co-authored-by: Isaac <no-reply@databricks.com>
The same removal as the previous commit, for the oracle laws under scripts/.

Co-authored-by: Isaac <no-reply@databricks.com>
@tanstack/oracles d1b508a lets oracleProperty take `owns`, with the
meaning that declareOracle's `owns` has. Move each file's owns list into
its inline oracleProperty calls, verbatim and in order. A file with several
calls repeats the list on each call; the gap report judges ownership per
file, so the meaning is the same. A declareOracle call left with no part is
removed with its import. Files that register through a driver or wrapper
and have no inline oracleProperty call keep their declareOracle owns.

The set of (file, owns entry) pairs that the gap report reads is unchanged:
515 pairs in 242 files before and after.

Co-authored-by: Isaac <no-reply@databricks.com>
State where an oracle file names the production code it judges: the
inline `owns` list of each oracleProperty call, in the literal form the
gap report reads statically. A file with no inline oracleProperty call
keeps declareOracle's owns during the migration. A law has no owner
field; code ownership belongs to CODEOWNERS. The coverage map's oracle
owner keeps its meaning.

Co-authored-by: Isaac <no-reply@databricks.com>
@changeset-bot

changeset-bot Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 6e34110

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

This change updates Oracle documentation and test metadata across the repository. It removes law.owner, moves ownership to per-property owns declarations in many oracle tests, keeps temporary declareOracle({ owns }) guidance for migration cases, and updates Oracle package preview revisions.

Changes: Oracle ownership metadata migration

Layer / File(s) Summary
Ownership guidance and package preview update
.agents/skills/oracle-authoring/SKILL.md, AGENTS.md, docs/contributing/oracle-rubric.md, docs/contributing/oracle-coverage.md, docs/contributing/glossary.md, package.json, packages/db/package.json
The docs now state that oracleProperty calls must declare judged production code in inline owns arrays. They also state that laws do not have an owner field, distinguish oracle ownership from CODEOWNERS ownership, and note that gap reports still read declareOracle({ owns }) when no inline declaration exists. Oracle package preview revisions were updated.
Repository-wide migration to property-level owns
packages/.../*oracle*, scripts/*oracle*
Across many oracle test files, ownership metadata moved from law.owner or shared declareOracle({ owns }) declarations to per-property owns declarations on oracleProperty. In many files, standalone declareOracle imports or ownership-only registrations were removed.
Law metadata cleanup where ownership was only descriptive
packages/.../*oracle*, scripts/*oracle*
Where a property already had ownership elsewhere or no new owns target was added in the edited block, the change removes the obsolete owner field from law metadata and leaves statements, authorities, limits, models, grammars, and checks unchanged.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Other

Possibly related issues

Possibly related PRs

  • TanStack/db#2402 — Both PRs update the Oracle API migration path, documentation, and repository usage of oracleProperty ownership declarations.
Merge Risk: Minimal · up to 6e341

No merge-blocking risk is established from the available evidence.

Pre-merge checks: Passed 5

Check name Status Explanation
Title check Passed The title clearly identifies the main API migration: adopting the specified oracle package revision, moving owns metadata to oracleProperty, and removing law.owner.
Description check Passed The description is detailed and relevant. It explains the migration, motivation, ownership changes, verification evidence, test results, known typecheck limits, and the absence of release impact. It d…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is detailed and relevant. It explains the migration, motivation, ownership changes, verification evidence, test results, known typecheck limits, and the absence of release impact. It does not use the template headings or checklist format exactly, but it provides the required information in equivalent sections.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 64 files. (1 skipped: 1 unsupported.)

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 3152b52f-02f6-44db-b192-8a4c59769d7a
Commits

Reviewing files that changed from the base of the PR and between 27ae644 and 6e34110.

Files ignored due to path filters: 1

  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
Files selected for processing: 25

  • docs/contributing/oracle-coverage.md
  • packages/browser-db-sqlite-persistence/e2e/query-rejected-write-cutoff-oracle.browser.test.ts
  • packages/db-adapter-conformance/tests/eager-reload-oracle-suite.ts
  • packages/db-adapter-conformance/tests/persisted-baseline-lifecycle-oracle-suite.ts
  • packages/db-adapter-conformance/tests/persisted-capability-oracle-suite.ts
  • packages/db-adapter-conformance/tests/persisted-startup-oracle-suite.ts
  • packages/powersync-db-collection/tests/eager-live-source-conformance-oracle.property.test.ts
  • packages/query-db-collection/tests/immediate-eager-materialization-oracle.test.ts
  • packages/query-db-collection/tests/immediate-eager-materialization-oracle.ts
  • packages/query-db-collection/tests/ownership-bottom.oracle.test.ts
  • packages/query-db-collection/tests/ownership-confirmation.oracle.test.ts
  • packages/query-db-collection/tests/ownership-lifecycle.oracle.test.ts
  • packages/query-db-collection/tests/ownership-settlement.oracle.test.ts
  • packages/query-db-collection/tests/ownership-upper.oracle.test.ts
  • packages/query-db-collection/tests/persisted-direct-ownership-oracle.test.ts
  • packages/query-db-collection/tests/persisted-direct-ownership-oracle.ts
  • packages/query-db-collection/tests/persisted-precedence-oracle.test.ts
  • packages/query-db-collection/tests/persisted-rejected-write-cutoff-oracle.test.ts
  • packages/query-db-collection/tests/retained-scoped-hydration-oracle.test.ts
  • packages/query-db-collection/tests/scope-omission-reacquisition-oracle.test.ts
  • packages/query-db-collection/tests/scope-omission-reacquisition-oracle.ts
  • packages/rxdb-db-collection/tests/eager-live-source-conformance-oracle.property.test.ts
  • packages/trailbase-db-collection/tests/eager-live-source-oracle-suite.ts
  • packages/trailbase-db-collection/tests/lifecycle-hydration-oracle-suite.ts
  • packages/trailbase-db-collection/tests/lifecycle-oracle.property.test.ts
Files with no reviewable changes: 10

  • packages/browser-db-sqlite-persistence/e2e/query-rejected-write-cutoff-oracle.browser.test.ts
  • packages/trailbase-db-collection/tests/lifecycle-hydration-oracle-suite.ts
  • packages/query-db-collection/tests/scope-omission-reacquisition-oracle.ts
  • packages/db-adapter-conformance/tests/persisted-startup-oracle-suite.ts
  • packages/query-db-collection/tests/immediate-eager-materialization-oracle.ts
  • packages/db-adapter-conformance/tests/persisted-capability-oracle-suite.ts
  • packages/trailbase-db-collection/tests/eager-live-source-oracle-suite.ts
  • packages/db-adapter-conformance/tests/persisted-baseline-lifecycle-oracle-suite.ts
  • packages/query-db-collection/tests/persisted-direct-ownership-oracle.ts
  • packages/db-adapter-conformance/tests/eager-reload-oracle-suite.ts
Files skipped from review as they are similar to previous changes: 1

  • docs/contributing/oracle-coverage.md

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Incremental update benchmark

Comparing 8e832a3bd (this PR) against a2ba396d5 (base). Write times are per-write medians over 100 iterations (20 warmup writes). Timings use the median of 3 fresh fixture repetition(s).

Overall median write time vs base: 1.01× · cold hydrate time: 1.01× (geometric mean of per-case ratios; lower is faster).

Writes: 1 regression(s), 0 improvement(s) (threshold: ±20% and >0.05ms).

Cold hydrate: No significant changes (threshold: ±50% and >5ms).

CI regression gate: PASS. Query geometric means: >+30% writes or >+50% cold. A case also fails when every repetition exceeds the entire base range by >+50% and the metric's absolute floor.

Per-case flags are noisy on shared runners. Read the geometric means first.

Writes

Query Δ median write time (geomean) Best case Worst case Flags
list: newest 50 open +0.4% -32.3% +61.4% —
list + author -4.9% -15.1% -1.1% —
list + comment count +5.2% -1.3% +18.1% —
list + 3 recent comments -0.2% -17.8% +10.9% —
issue detail + comments +3.9% -10.5% +10.9% —
open issues + documents +0.9% -17.8% +57.0% 1 🔴

Cold hydrate

Query Δ cold hydrate time (geomean) Best case Worst case Flags
list: newest 50 open -4.0% -39.7% +27.7% —
list + author +1.2% -5.6% +13.2% —
list + comment count +1.2% -24.0% +17.1% —
list + 3 recent comments +0.5% -17.8% +16.7% —
issue detail + comments +11.7% -11.1% +32.3% —
open issues + documents -2.2% -37.0% +31.3% —

Each row aggregates that query's scale/index/write-mode configurations; per-configuration tables below.

100 rows/collection | source indexes: none | synced writes — geomean 0.87×, cold 0.89×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.130ms 0.101ms -22.4% 0.188ms 0.184ms -2.1% 3.127ms 2.930ms -6.3%
list: newest 50 open 0.172ms 0.171ms -0.3% 0.330ms 0.336ms +1.7% 1.315ms 0.793ms -39.7%
list + author 0.115ms 0.098ms -15.1% 0.190ms 0.199ms +4.6% 6.321ms 6.145ms -2.8%
list + comment count 0.181ms 0.179ms -1.3% 0.288ms 0.272ms -5.3% 3.701ms 3.773ms +1.9%
list + 3 recent comments 0.165ms 0.136ms -17.8% 0.234ms 0.226ms -3.5% 4.666ms 4.423ms -5.2%
issue detail + comments 0.082ms 0.073ms -10.5% 0.165ms 0.154ms -7.0% 0.553ms 0.491ms -11.1%
open issues + documents 0.088ms 0.073ms -17.8% 0.148ms 0.153ms +3.3% 2.115ms 1.990ms -5.9%
100 rows/collection | source indexes: none | optimistic writes — geomean 1.03×, cold 0.95×, 1 change(s)
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.077ms 0.072ms -6.0% 0.132ms 0.135ms +2.8% 0.953ms 1.064ms +11.7%
list: newest 50 open 0.033ms 0.031ms -4.0% 0.099ms 0.101ms +2.3% 0.679ms 0.630ms -7.3%
list + author 0.074ms 0.067ms -10.0% 0.143ms 0.143ms -0.3% 3.342ms 3.236ms -3.2%
list + comment count 0.117ms 0.118ms +0.9% 0.203ms 0.224ms +10.4% 3.013ms 2.289ms -24.0%
list + 3 recent comments 0.066ms 0.066ms +0.3% 0.108ms 0.124ms +14.9% 2.728ms 2.883ms +5.7%
issue detail + comments 0.057ms 0.056ms -2.1% 0.093ms 0.099ms +5.4% 0.383ms 0.431ms +12.5%
open issues + documents 0.362ms 0.568ms +57.0% 0.633ms 0.650ms +2.7% 🔴 1.750ms 1.316ms -24.8%
100 rows/collection | source indexes: manual | synced writes — geomean 1.01×, cold 0.90×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.045ms 0.055ms +23.9% 0.078ms 0.109ms +39.8% 1.193ms 0.852ms -28.6%
list: newest 50 open 0.161ms 0.161ms +0.3% 0.269ms 0.278ms +3.5% 0.630ms 0.582ms -7.6%
list + author 0.056ms 0.055ms -1.7% 0.119ms 0.117ms -1.3% 1.357ms 1.376ms +1.4%
list + comment count 0.117ms 0.118ms +0.7% 0.221ms 0.219ms -1.1% 1.866ms 1.620ms -13.2%
list + 3 recent comments 0.075ms 0.072ms -2.9% 0.133ms 0.093ms -30.4% 2.391ms 2.320ms -3.0%
issue detail + comments 0.049ms 0.049ms +0.7% 0.072ms 0.078ms +8.1% 0.250ms 0.331ms +32.3%
open issues + documents 0.044ms 0.041ms -8.7% 0.096ms 0.058ms -40.1% 2.288ms 1.441ms -37.0%
100 rows/collection | source indexes: manual | optimistic writes — geomean 0.96×, cold 1.08×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.042ms 0.041ms -2.9% 0.068ms 0.076ms +12.0% 0.495ms 0.580ms +17.2%
list: newest 50 open 0.046ms 0.031ms -32.3% 0.066ms 0.070ms +6.1% 0.786ms 0.806ms +2.5%
list + author 0.065ms 0.063ms -2.1% 0.100ms 0.117ms +16.3% 1.365ms 1.385ms +1.5%
list + comment count 0.106ms 0.121ms +14.6% 0.127ms 0.150ms +17.5% 1.901ms 2.037ms +7.2%
list + 3 recent comments 0.081ms 0.072ms -11.1% 0.127ms 0.096ms -23.9% 2.407ms 2.550ms +6.0%
issue detail + comments 0.053ms 0.059ms +10.4% 0.069ms 0.082ms +19.7% 0.260ms 0.291ms +11.8%
open issues + documents 0.329ms 0.330ms +0.2% 0.429ms 0.395ms -7.8% 1.133ms 1.219ms +7.6%
1,000 rows/collection | source indexes: none | synced writes — geomean 1.04×, cold 1.07×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.028ms 0.028ms -0.4% 0.042ms 0.036ms -13.4% 4.158ms 5.310ms +27.7%
list: newest 50 open 0.668ms 0.674ms +0.9% 0.976ms 0.917ms -6.1% 4.463ms 4.525ms +1.4%
list + author 0.045ms 0.044ms -1.1% 0.060ms 0.063ms +4.8% 14.485ms 13.667ms -5.6%
list + comment count 0.099ms 0.117ms +18.1% 0.132ms 0.154ms +17.1% 5.120ms 5.998ms +17.1%
list + 3 recent comments 0.062ms 0.068ms +9.9% 0.075ms 0.087ms +15.4% 7.802ms 8.271ms +6.0%
issue detail + comments 0.044ms 0.047ms +7.0% 0.063ms 0.065ms +4.5% 0.552ms 0.556ms +0.7%
open issues + documents 0.038ms 0.037ms -3.3% 0.049ms 0.048ms -2.1% 8.400ms 8.778ms +4.5%
1,000 rows/collection | source indexes: none | optimistic writes — geomean 1.12×, cold 1.07×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.038ms 0.037ms -2.0% 0.055ms 0.055ms -0.7% 3.478ms 3.653ms +5.0%
list: newest 50 open 0.023ms 0.037ms +61.0% 0.031ms 0.053ms +70.1% 3.538ms 3.773ms +6.6%
list + author 0.059ms 0.057ms -3.2% 0.070ms 0.080ms +13.5% 12.578ms 12.763ms +1.5%
list + comment count 0.095ms 0.109ms +14.4% 0.168ms 0.144ms -14.2% 5.467ms 5.497ms +0.5%
list + 3 recent comments 0.053ms 0.059ms +10.9% 0.072ms 0.095ms +32.2% 5.671ms 5.654ms -0.3%
issue detail + comments 0.045ms 0.050ms +10.9% 0.068ms 0.078ms +16.0% 0.576ms 0.740ms +28.5%
open issues + documents 0.321ms 0.335ms +4.4% 0.370ms 0.395ms +6.8% 8.390ms 9.496ms +13.2%
1,000 rows/collection | source indexes: manual | synced writes — geomean 1.01×, cold 1.02×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.031ms 0.030ms -3.0% 0.070ms 0.073ms +3.2% 0.688ms 0.630ms -8.4%
list: newest 50 open 0.157ms 0.161ms +2.7% 0.188ms 0.228ms +21.2% 0.545ms 0.572ms +4.9%
list + author 0.045ms 0.044ms -2.8% 0.058ms 0.058ms -0.9% 1.384ms 1.441ms +4.1%
list + comment count 0.121ms 0.125ms +3.5% 0.144ms 0.156ms +8.3% 2.087ms 2.088ms +0.0%
list + 3 recent comments 0.078ms 0.076ms -2.6% 0.159ms 0.113ms -28.8% 2.675ms 2.198ms -17.8%
issue detail + comments 0.044ms 0.048ms +8.2% 0.055ms 0.060ms +9.4% 0.242ms 0.313ms +29.2%
open issues + documents 0.038ms 0.038ms +0.4% 0.049ms 0.052ms +6.4% 8.123ms 8.706ms +7.2%
1,000 rows/collection | source indexes: manual | optimistic writes — geomean 1.02×, cold 1.11×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.040ms 0.039ms -3.1% 0.082ms 0.058ms -28.7% 0.551ms 0.616ms +11.8%
list: newest 50 open 0.030ms 0.028ms -6.0% 0.039ms 0.036ms -6.0% 0.691ms 0.639ms -7.6%
list + author 0.059ms 0.057ms -3.0% 0.078ms 0.078ms -0.4% 1.294ms 1.379ms +6.5%
list + comment count 0.111ms 0.116ms +5.2% 0.143ms 0.141ms -1.4% 1.797ms 2.070ms +15.2%
list + 3 recent comments 0.063ms 0.068ms +8.7% 0.083ms 0.087ms +4.5% 2.095ms 2.304ms +10.0%
issue detail + comments 0.052ms 0.057ms +10.4% 0.075ms 0.079ms +4.6% 0.281ms 0.322ms +14.3%
open issues + documents 0.319ms 0.331ms +3.8% 0.342ms 0.380ms +11.1% 8.291ms 10.887ms +31.3%
10,000 rows/collection | source indexes: none | synced writes — geomean 1.10×, cold 1.06×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.034ms 0.055ms +61.4% 0.045ms 0.072ms +59.5% 52.379ms 51.051ms -2.5%
list: newest 50 open 6.919ms 7.222ms +4.4% 7.600ms 8.030ms +5.7% 50.066ms 52.473ms +4.8%
list + author 0.050ms 0.048ms -4.7% 0.069ms 0.063ms -9.7% 163.713ms 163.744ms +0.0%
list + comment count 0.113ms 0.121ms +6.8% 0.154ms 0.147ms -5.1% 55.610ms 62.449ms +12.3%
list + 3 recent comments 0.070ms 0.075ms +6.6% 0.091ms 0.103ms +13.1% 56.928ms 57.547ms +1.1%
issue detail + comments 0.046ms 0.050ms +7.3% 0.067ms 0.069ms +3.5% 4.373ms 5.374ms +22.9%
open issues + documents 0.043ms 0.042ms -3.4% 0.091ms 0.082ms -9.5% 124.675ms 132.453ms +6.2%
10,000 rows/collection | source indexes: none | optimistic writes — geomean 0.97×, cold 0.98×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.042ms 0.043ms +1.5% 0.067ms 0.061ms -9.7% 51.127ms 49.531ms -3.1%
list: newest 50 open 0.029ms 0.027ms -7.1% 0.064ms 0.062ms -2.8% 53.808ms 43.178ms -19.8%
list + author 0.065ms 0.062ms -4.4% 0.089ms 0.079ms -11.3% 166.048ms 160.656ms -3.2%
list + comment count 0.130ms 0.129ms -1.0% 0.183ms 0.170ms -6.9% 57.905ms 54.727ms -5.5%
list + 3 recent comments 0.063ms 0.062ms -2.1% 0.082ms 0.082ms +0.0% 48.647ms 56.779ms +16.7%
issue detail + comments 0.061ms 0.057ms -6.2% 0.079ms 0.084ms +6.8% 4.100ms 4.237ms +3.3%
open issues + documents 0.326ms 0.323ms -1.0% 0.362ms 0.371ms +2.4% 108.660ms 108.469ms -0.2%
10,000 rows/collection | source indexes: manual | synced writes — geomean 0.98×, cold 0.93×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.031ms 0.030ms -1.5% 0.037ms 0.035ms -4.2% 1.514ms 1.332ms -12.0%
list: newest 50 open 0.719ms 0.723ms +0.6% 0.800ms 1.105ms +38.0% 1.469ms 1.240ms -15.6%
list + author 0.048ms 0.044ms -7.4% 0.060ms 0.053ms -11.4% 2.006ms 2.060ms +2.7%
list + comment count 0.126ms 0.126ms -0.0% 0.152ms 0.148ms -2.6% 2.534ms 2.566ms +1.3%
list + 3 recent comments 0.084ms 0.081ms -3.6% 0.109ms 0.106ms -3.6% 3.383ms 2.989ms -11.7%
issue detail + comments 0.053ms 0.056ms +4.7% 0.067ms 0.073ms +8.5% 0.443ms 0.446ms +0.6%
open issues + documents 0.042ms 0.040ms -6.4% 0.061ms 0.057ms -6.0% 125.848ms 110.908ms -11.9%
10,000 rows/collection | source indexes: manual | optimistic writes — geomean 1.00×, cold 1.04×
Query Base median PR median Δ median Base p95 PR p95 Δ p95 Base cold PR cold Δ cold
list: newest 50 open 0.044ms 0.040ms -8.7% 0.068ms 0.051ms -25.6% 1.374ms 1.336ms -2.7%
list: newest 50 open 0.034ms 0.032ms -6.4% 0.052ms 0.052ms +0.3% 1.275ms 1.264ms -0.9%
list + author 0.066ms 0.065ms -2.2% 0.100ms 0.103ms +3.6% 2.033ms 2.301ms +13.2%
list + comment count 0.141ms 0.144ms +2.7% 0.228ms 0.223ms -2.3% 2.646ms 2.914ms +10.1%
list + 3 recent comments 0.068ms 0.072ms +6.1% 0.091ms 0.091ms -0.0% 2.814ms 2.896ms +2.9%
issue detail + comments 0.059ms 0.064ms +8.3% 0.086ms 0.084ms -1.7% 0.447ms 0.468ms +4.7%
open issues + documents 0.334ms 0.333ms -0.2% 0.401ms 0.384ms -4.2% 125.324ms 128.657ms +2.7%

Runner: node v24.8.0, linux 7.0.0-1017-azure, AMD EPYC 9V74 80-Core Processor. Timings on shared CI runners are noisy; treat small deltas as indicative only.

@github-actions

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 199 kB

ℹ️ View Unchanged
Filename Size
packages/db/dist/esm/_virtual/_rolldown/runtime.js 190 B
packages/db/dist/esm/client.js 4.98 kB
packages/db/dist/esm/collection-options-brand.js 215 B
packages/db/dist/esm/collection-options.js 248 B
packages/db/dist/esm/collection/change-events.js 1.64 kB
packages/db/dist/esm/collection/changes.js 2.15 kB
packages/db/dist/esm/collection/cleanup-queue.js 698 B
packages/db/dist/esm/collection/config-errors.js 561 B
packages/db/dist/esm/collection/events.js 441 B
packages/db/dist/esm/collection/health-tree.js 679 B
packages/db/dist/esm/collection/index.js 2.6 kB
packages/db/dist/esm/collection/indexes.js 1.9 kB
packages/db/dist/esm/collection/lifecycle.js 3.59 kB
packages/db/dist/esm/collection/mutations.js 2.29 kB
packages/db/dist/esm/collection/state.js 5.31 kB
packages/db/dist/esm/collection/subscription.js 6.29 kB
packages/db/dist/esm/collection/sync.js 4.94 kB
packages/db/dist/esm/collection/validate-config.js 1.11 kB
packages/db/dist/esm/collection/validate-indexing.js 371 B
packages/db/dist/esm/deferred.js 205 B
packages/db/dist/esm/error-message.js 627 B
packages/db/dist/esm/errors.js 7.14 kB
packages/db/dist/esm/event-emitter.js 698 B
packages/db/dist/esm/index.js 4.68 kB
packages/db/dist/esm/indexed-db-wrapper.js 1.71 kB
packages/db/dist/esm/indexed-db.js 3.55 kB
packages/db/dist/esm/indexes/auto-index.js 890 B
packages/db/dist/esm/indexes/base-index.js 1.69 kB
packages/db/dist/esm/indexes/basic-index.js 1.64 kB
packages/db/dist/esm/indexes/btree-index.js 1.57 kB
packages/db/dist/esm/indexes/index-registry.js 909 B
packages/db/dist/esm/indexes/reverse-index.js 635 B
packages/db/dist/esm/live-query-adapter.js 950 B
packages/db/dist/esm/live-query-observer-client.js 2.14 kB
packages/db/dist/esm/live-query-observer.js 2.85 kB
packages/db/dist/esm/live-query-options.js 2.4 kB
packages/db/dist/esm/live-query-primitives.js 401 B
packages/db/dist/esm/live-query-window-binding.js 1.5 kB
packages/db/dist/esm/live-query-window-controller.js 3.88 kB
packages/db/dist/esm/local-only.js 814 B
packages/db/dist/esm/local-storage.js 3.95 kB
packages/db/dist/esm/optimistic-action.js 320 B
packages/db/dist/esm/paced-mutations.js 1.07 kB
packages/db/dist/esm/proxy.js 3.07 kB
packages/db/dist/esm/query/builder/clone-query.js 845 B
packages/db/dist/esm/query/builder/functions.js 1.52 kB
packages/db/dist/esm/query/builder/group-keys.js 162 B
packages/db/dist/esm/query/builder/include-functions.js 222 B
packages/db/dist/esm/query/builder/index.js 4.83 kB
packages/db/dist/esm/query/builder/query-ir.js 318 B
packages/db/dist/esm/query/builder/ref-proxy-identity.js 284 B
packages/db/dist/esm/query/builder/ref-proxy.js 1.57 kB
packages/db/dist/esm/query/builder/wrapper-identity.js 212 B
packages/db/dist/esm/query/compiler/evaluators.js 2.33 kB
packages/db/dist/esm/query/compiler/expressions.js 582 B
packages/db/dist/esm/query/compiler/find-aggregate.js 313 B
packages/db/dist/esm/query/compiler/group-by.js 3.75 kB
packages/db/dist/esm/query/compiler/grouping.js 163 B
packages/db/dist/esm/query/compiler/index.js 8.85 kB
packages/db/dist/esm/query/compiler/joins.js 3 kB
packages/db/dist/esm/query/compiler/lazy-targets.js 1.05 kB
packages/db/dist/esm/query/compiler/order-by.js 2.55 kB
packages/db/dist/esm/query/compiler/parent-routes.js 313 B
packages/db/dist/esm/query/compiler/query-equivalence.js 554 B
packages/db/dist/esm/query/compiler/route-metadata.js 1.26 kB
packages/db/dist/esm/query/compiler/select.js 1.57 kB
packages/db/dist/esm/query/effect.js 4.42 kB
packages/db/dist/esm/query/equality-conjunct.js 483 B
packages/db/dist/esm/query/equality-value-identity.js 729 B
packages/db/dist/esm/query/expression-helpers.js 1.52 kB
packages/db/dist/esm/query/ir-stable-identity.js 3.71 kB
packages/db/dist/esm/query/ir.js 2.21 kB
packages/db/dist/esm/query/join-conditions.js 254 B
packages/db/dist/esm/query/live-query-collection.js 383 B
packages/db/dist/esm/query/live/bucket-facade-adapter.js 2.73 kB
packages/db/dist/esm/query/live/collection-config-builder.js 6.72 kB
packages/db/dist/esm/query/live/collection-registry.js 259 B
packages/db/dist/esm/query/live/collection-subscriber.js 2.25 kB
packages/db/dist/esm/query/live/graph-scheduler.js 300 B
packages/db/dist/esm/query/live/includes-runtime.js 213 B
packages/db/dist/esm/query/live/internal.js 142 B
packages/db/dist/esm/query/live/materialized-pipeline.js 2.17 kB
packages/db/dist/esm/query/live/ordered-source-loader.js 4.71 kB
packages/db/dist/esm/query/live/public-key-reduction.js 931 B
packages/db/dist/esm/query/live/subset-demand-controller.js 2.01 kB
packages/db/dist/esm/query/live/utils.js 1.35 kB
packages/db/dist/esm/query/optimizer.js 2.7 kB
packages/db/dist/esm/query/pooled-live-query.js 4.2 kB
packages/db/dist/esm/query/pooled-source.js 210 B
packages/db/dist/esm/query/query-once.js 317 B
packages/db/dist/esm/query/runtime-reference-identity.js 621 B
packages/db/dist/esm/query/subset-dedupe.js 489 B
packages/db/dist/esm/query/validate-limit.js 250 B
packages/db/dist/esm/scheduler.js 942 B
packages/db/dist/esm/SortedMap.js 861 B
packages/db/dist/esm/strategies/commit-completion.js 152 B
packages/db/dist/esm/strategies/debounceStrategy.js 625 B
packages/db/dist/esm/strategies/queueStrategy.js 492 B
packages/db/dist/esm/strategies/serial-pacer.js 457 B
packages/db/dist/esm/strategies/throttleStrategy.js 695 B
packages/db/dist/esm/sync-persistence.js 648 B
packages/db/dist/esm/sync-receipt.js 210 B
packages/db/dist/esm/transaction-commit-work.js 345 B
packages/db/dist/esm/transactions.js 2.58 kB
packages/db/dist/esm/utils.js 1.7 kB
packages/db/dist/esm/utils/array-utils.js 265 B
packages/db/dist/esm/utils/browser-polyfills.js 268 B
packages/db/dist/esm/utils/btree.js 1.66 kB
packages/db/dist/esm/utils/callbacks.js 209 B
packages/db/dist/esm/utils/comparison.js 1.88 kB
packages/db/dist/esm/utils/cursor.js 752 B
packages/db/dist/esm/utils/error.js 267 B
packages/db/dist/esm/utils/get-or-create.js 154 B
packages/db/dist/esm/utils/index-optimization.js 2.08 kB
packages/db/dist/esm/utils/source-record.js 141 B
packages/db/dist/esm/utils/type-guards.js 221 B
packages/db/dist/esm/utils/uuid.js 534 B
packages/db/dist/esm/virtual-props.js 383 B
packages/react-db/dist/esm/DbProvider.js 319 B
packages/react-db/dist/esm/development.js 200 B
packages/react-db/dist/esm/HydrationBoundary.js 273 B
packages/react-db/dist/esm/index.js 314 B
packages/react-db/dist/esm/source-id-bindings.js 335 B
packages/react-db/dist/esm/useLiveInfiniteQuery.js 1.3 kB
packages/react-db/dist/esm/useLiveQuery.js 2.54 kB
packages/react-db/dist/esm/useLiveQueryEffect.js 510 B
packages/react-db/dist/esm/useLiveSuspenseQuery.js 1.87 kB
packages/react-db/dist/esm/usePacedMutations.js 374 B

compressed-size-action::db-and-react-package-size

@pkg-pr-new

pkg-pr-new Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
More templates

@tanstack/angular-db

npm i https://pkg.pr.new/@tanstack/angular-db@2407

@tanstack/browser-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/browser-db-sqlite-persistence@2407

@tanstack/capacitor-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/capacitor-db-sqlite-persistence@2407

@tanstack/cloudflare-durable-objects-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/cloudflare-durable-objects-db-sqlite-persistence@2407

@tanstack/convex-db-collection

npm i https://pkg.pr.new/@tanstack/convex-db-collection@2407

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@2407

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@2407

@tanstack/db-sqlite-persistence-core

npm i https://pkg.pr.new/@tanstack/db-sqlite-persistence-core@2407

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@2407

@tanstack/electron-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/electron-db-sqlite-persistence@2407

@tanstack/expo-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/expo-db-sqlite-persistence@2407

@tanstack/node-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/node-db-sqlite-persistence@2407

@tanstack/offline-transactions

npm i https://pkg.pr.new/@tanstack/offline-transactions@2407

@tanstack/powersync-db-collection

npm i https://pkg.pr.new/@tanstack/powersync-db-collection@2407

@tanstack/preact-db

npm i https://pkg.pr.new/@tanstack/preact-db@2407

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@2407

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@2407

@tanstack/react-native-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/react-native-db-sqlite-persistence@2407

@tanstack/react-router-with-db

npm i https://pkg.pr.new/@tanstack/react-router-with-db@2407

@tanstack/rxdb-db-collection

npm i https://pkg.pr.new/@tanstack/rxdb-db-collection@2407

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@2407

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@2407

@tanstack/tauri-db-sqlite-persistence

npm i https://pkg.pr.new/@tanstack/tauri-db-sqlite-persistence@2407

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@2407

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@2407

commit: 6e34110

Test and others added 2 commits November 10, 2026 20:50
Takes main's rewrites of the eager live-source conformance oracles and the
TrailBase lifecycle oracle, then reapplies this branch's codemods to the
merged tree: 46 law.owner properties removed in 21 files, and owns moved into
oracleProperty in 14 more files. The (file, owns entry) pairs equal main's:
537 pairs, identical.

Co-authored-by: Isaac <no-reply@databricks.com>
@KyleAMathews
KyleAMathews merged commit e332f61 into main Nov 11, 2026
27 checks passed
@KyleAMathews
KyleAMathews deleted the oracle/adopt-owns branch November 11, 2026 05:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant