Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
77aa338
test(oracles): add oracleProperty, a gap report, and LocalStorage wri…
Nov 2, 2026
e9a5d21
test: upgrade to fast-check 4
Nov 2, 2026
0e80a6f
test(oracle-gaps): bound each run, size contexts to the machine, and …
Nov 2, 2026
1d7d7bb
test(oracles): move the hydration oracle onto oracleProperty with gen…
Nov 2, 2026
0742a4f
test(oracles): make oracle runs deterministic, and check and lint for it
Nov 3, 2026
0c11f5d
Merge origin/main into oracle/framework-slice
Nov 3, 2026
d47787f
test(oracles): replace the optimistic oracle's 20 ms race with logica…
Nov 3, 2026
8a05fb0
test(oracles): add resolution, calibration, and pin reach to oraclePr…
Nov 3, 2026
0b9d02c
test(oracles): split the optimistic-history oracle into oraclePropert…
Nov 3, 2026
e9e5ebb
test(oracles): add a self-oracle for oracleProperty
Nov 3, 2026
e7b9ae1
test(oracles): settle three framework rules the self-oracle review fo…
Nov 3, 2026
d0cb1f5
test(oracles): close the self-oracle review's enforcement gaps
Nov 3, 2026
4aaea80
test(oracles): run the oracleProperty self-oracle outside db's defaul…
Nov 3, 2026
352213d
test(oracles): move framework result-shape conformance onto oraclePro…
Nov 3, 2026
625f755
test(oracles): move the adapter handler-types oracle onto oracleProperty
Nov 3, 2026
a8af8fa
test(oracles): add a data schedule for drivers, with its own oracle
Nov 3, 2026
965f43c
test(oracles): track run budgets that oracleProperty definitions declare
Nov 3, 2026
0a96a31
test(oracles): log the random lane's seed once, and add an exact comp…
Nov 3, 2026
f7e607d
test(oracles): move the offline interruption oracle onto oracleProper…
Nov 3, 2026
7116079
test(oracles): move the persisted optimistic lane onto oracleProperty
Nov 3, 2026
4096800
test(oracles): move the FIFO retry oracle onto oracleProperty, with p…
Nov 3, 2026
f6bd431
test(oracles): track fixed-seed budgets in oracleProperty definitions
Nov 3, 2026
43295b7
test(oracles): move the KeyScheduler ledger onto oracleProperty, and …
Nov 3, 2026
e2de358
test(oracles): repair what the round-3 loss audits found
Nov 3, 2026
3b5ec03
test(oracles): move the multiset consolidation oracle onto oracleProp…
Nov 3, 2026
070ef66
test(oracles): move cursor read histories onto oracleProperty, with a…
Nov 3, 2026
65b4f0c
test(oracles): require every oracleProperty id to be registered
Nov 3, 2026
d782252
test(oracles): move the SQLite setup-reopen oracle onto an enumerated…
Nov 3, 2026
ab6a9bd
test(oracles): repair what the round-4 loss audits found
Nov 3, 2026
ef1f443
docs(glossary): add the oracle framework terms
Nov 4, 2026
32b5006
refactor(oracles): adopt the glossary's oracle vocabulary in code
Nov 4, 2026
d8c0158
docs(oracles): adopt the glossary's oracle vocabulary in the guidance
Nov 4, 2026
7a0a353
docs(oracles): rewrap the switchover's lines and retire "pinned" in t…
Nov 4, 2026
c75911c
feat(oracles): probe hook takes a name and a condition
Nov 5, 2026
e0608c9
feat(lint): require the decided state-probe form in production source
Nov 5, 2026
87fa5ca
refactor(probes): migrate the offline executor's probes to the decide…
Nov 5, 2026
59ed325
feat(oracle-gaps): a gap report owned by oracles, with an incremental…
Nov 5, 2026
b172b36
docs(skills): list the oracle weaknesses that reviewers must hunt by …
Nov 5, 2026
626dd16
refactor(probes): allow pure arrow conditions and migrate multiset's …
Nov 5, 2026
fe2f23e
fix(oracle-gaps): resolve a daemon request's paths against the caller
Nov 5, 2026
c7a4de4
fix(oracle-gaps): restart a daemon whose code changed, and keep ident…
Nov 5, 2026
c32b90e
fix(oracle-gaps): leave getters unread, and say why a failing owner f…
Nov 5, 2026
1d0c7cb
perf(oracle-gaps): stop at the first kill, run only reaching tests, c…
Nov 6, 2026
2dfbe47
fix(oracle-gaps): stop only after a failing test, and keep tests that…
Nov 6, 2026
f1bdf92
feat(oracle-gaps): run ordinary test files only with --ordinary
Nov 6, 2026
2783782
test(offline-transactions): settle interruption histories with setImm…
Nov 6, 2026
1a694f1
perf(oracle-gaps): judge authored mutants in every context at once
Nov 6, 2026
7b01c05
fix(oracle-gaps): keep the 10 s base of the hang limit
Nov 6, 2026
c85b45b
perf(oracle-gaps): default to up to 16 contexts, and profile history …
Nov 6, 2026
e909571
perf(oracle-gaps): keep several versions of each stored run
Nov 6, 2026
d95ca1f
perf(oracles): wait one event-loop turn with setImmediate
Nov 6, 2026
13196bc
test(offline-transactions): yield harness turns with setImmediate
Nov 6, 2026
8344c07
feat(oracle-gaps): code run at module load reaches every test of the …
Nov 6, 2026
9f5db6d
test(oracle-gaps): tokenize keys in the model with TypeScript's scanner
Nov 6, 2026
da234dc
perf(oracle-gaps): run many mutants in one Vitest run of file copies
Nov 6, 2026
64f721f
test(oracle-gaps): witness hangs in the gap report oracle
Nov 6, 2026
f2cdb8e
fix(oracle-gaps): a nondeterministic test's verdict no longer stops a…
Nov 6, 2026
53fa8dc
test(offline-transactions): judge an idle executor's timers in the FI…
Nov 6, 2026
4920f9a
test(oracle-gaps): witness a kill in one owner after a gap in another
Nov 6, 2026
210db70
perf(oracle-gaps): run a group's owner files in one batch
Nov 6, 2026
0f69aca
perf(oracle-gaps): check every test selection beside the second pass
Nov 6, 2026
a67d879
test(offline-transactions): bound oracle checkpoints in virtual time
Nov 6, 2026
9db5437
perf(oracle-gaps): run Vitest workers as threads by default
Nov 6, 2026
83a546d
fix(oracle-gaps): confirm a cut-off run alone before calling it a tim…
Nov 6, 2026
e49f00b
test(oracle-gaps): witness value changes at load and in another owner
Nov 6, 2026
3e0e7a0
fix(oracle-gaps): keep fast-check's settings in mutant runs; skip mut…
Nov 7, 2026
7d1d376
feat(oracle-property): bound work on a controlled clock with a law ve…
Nov 7, 2026
82b8bdd
test(offline-transactions): run the offline oracles on the framework …
Nov 7, 2026
9fcd8b5
fix(oracle-property): give the real timers back when a controlled clo…
Nov 7, 2026
af96c2b
feat(oracle-gaps): add the bool-flip operator
Nov 7, 2026
d57dd9d
feat(oracle-gaps): add the value-undefined operator
Nov 7, 2026
801d773
test(oracle-gaps): witness fresh module state in a workspace dependency
Nov 7, 2026
5e3e565
perf(oracle-gaps): load workspace dependencies from one-file bundles
Nov 7, 2026
79cc6ab
feat(oracle-gaps): add the loop-false operator
Nov 7, 2026
4754083
test(db-ivm): register routes in the murmur, hash identity, and incre…
Nov 7, 2026
264159c
test(offline-transactions): register the case route in the enumerated…
Nov 7, 2026
0498021
test(db-ivm): register routes in the remaining fixed tests and calibr…
Nov 7, 2026
aa2d9bb
feat(oracle-gaps): cut a hung copy that waits on nothing
Nov 8, 2026
6f42259
fix(oracle-gaps): record a test's row even when its own cleanup throws
Nov 8, 2026
a06f23d
test(offline-transactions): run the leadership-replay oracle on the c…
Nov 8, 2026
d75bcc5
fix(oracle-gaps): keep one row for a test.prop test across its runs
Nov 8, 2026
164d249
perf(oracle-gaps): stop a hung worker at once and confirm hangs in pa…
Nov 8, 2026
e8e0733
fix(oracle-gaps): never take a runner copy for a test file
Nov 8, 2026
2a6e9d5
fix(oracle-gaps): keep the runner correct and fast on Vitest 5
Nov 8, 2026
9e8b4b9
fix(oracle-gaps): skip runner copies in the static oracle's discovery…
Nov 8, 2026
3c76e91
feat(oracle-gaps): add the field-drop and arithmetic-swap operators
Nov 8, 2026
fccab1f
test(db): declare what the SortedMap, cleanup-queue, and reverse-inde…
Nov 8, 2026
f7bf023
fix(oracle-gaps): give each batch copy the worker's first globals
Nov 8, 2026
bcd64d7
feat(oracle-gaps): cut a loop that never ends by counting its calls
Nov 8, 2026
e140d4d
fix(oracle-gaps): give a run alone the call budget too
Nov 8, 2026
3be1c18
test(db): use the oracle framework from @tanstack/oracles
Nov 8, 2026
f4cd1e0
test(node-persistence): declare oracle owns and register test routes
Nov 8, 2026
bc25d3b
test(react-native-persistence): declare oracle owns and register test…
Nov 8, 2026
6711950
test(db-ivm): register gap-report routes for the remaining oracle tests
Nov 8, 2026
1f2a0f0
test(electron-persistence): declare oracle owns and register test routes
Nov 8, 2026
f15604a
test(offline-transactions): register gap-report routes for the remain…
Nov 8, 2026
af36714
test(react-db): declare oracle owns and register test routes
Nov 8, 2026
743ac55
test(preact-db): declare oracle owns and register test routes
Nov 8, 2026
06ebfc3
test(vue-db): declare oracle owns and register test routes
Nov 8, 2026
56afe1b
test(svelte-db): declare oracle owns and register test routes
Nov 8, 2026
0b85229
test(solid-db): declare oracle owns and register test routes
Nov 8, 2026
09d4605
test(browser-persistence): declare oracle owns and register test routes
Nov 8, 2026
328f865
test(db-collection-e2e): register suite test routes and document owne…
Nov 8, 2026
5f29a9c
test(db,react-db): declare conformance oracle owns and register routes
Nov 8, 2026
59a8bb5
test(trailbase-db-collection): register gap-report routes and owns fo…
Nov 8, 2026
050ce78
test(convex-db-collection): declare owns and register gap-report rout…
Nov 8, 2026
0e311c0
test(query-db-collection): declare owns and register gap-report route…
Nov 8, 2026
8938ecf
test(electric-db-collection): declare owns and register gap-report ro…
Nov 8, 2026
8da568c
test(db): declare oracle ownership and route registration for db orac…
Nov 8, 2026
47015f6
test(db): declare oracle owns and register routes in subdirectory ora…
Nov 8, 2026
ca6536f
test(persistence-core): declare oracle owns and register test routes
Nov 8, 2026
6506153
test(browser-persistence): declare e2e oracle owns and helper ownersh…
Nov 8, 2026
d14c8a3
Merge branch 'oracle/convert-db-b' into oracle/use-oracles-package
Nov 8, 2026
91b9bbe
Merge branch 'oracle/convert-pkgs-core' into oracle/use-oracles-package
Nov 8, 2026
389cead
Merge branch 'oracle/convert-pkgs-persist' into oracle/use-oracles-pa…
Nov 8, 2026
dc0763c
Merge branch 'oracle/convert-pkgs-frameworks' into oracle/use-oracles…
Nov 8, 2026
c2662ae
chore(oracles): run the gap report from @tanstack/oracles
Nov 8, 2026
28433f1
Merge origin/main into oracle/use-oracles-package
Nov 8, 2026
4fa060d
chore(db-adapter-conformance): move to fast-check 4
Nov 8, 2026
51b112e
test(react-db): declare owns and routes for the client-window and Sus…
Nov 8, 2026
f3e9be8
test(scripts): register routes in the release-comments oracle
Nov 8, 2026
b8f57e0
test(db): apply the signed-zero decision to the planned optimistic hi…
Nov 8, 2026
266f674
test(svelte-db): declare owns and routes for the client-window oracle
Nov 8, 2026
b014b1e
test(adapters): declare owns and routes for the eager live-source rec…
Nov 8, 2026
9503f69
test(db): declare owns and routes for main's new oracles and unrouted…
Nov 8, 2026
9173c02
test(db-adapter-conformance): calibrate each mutant against the law i…
Nov 8, 2026
daa3a7c
test(db): declare what the join result key oracle owns
Nov 8, 2026
1b56ac3
test(db): keep the zero-sign quiet settlement as a fixed history
Nov 8, 2026
958fdac
test(db): drop the moved self-tests from the aggregate run
Nov 8, 2026
4f816fe
docs(oracles): point the framework laws at their @tanstack/oracles ow…
Nov 8, 2026
272a129
test(db): draw only valid dates where a property skipped invalid ones
Nov 8, 2026
1305a61
test(oracles): own only the code that each oracle's laws judge
Nov 8, 2026
8293da7
test(db-adapter-conformance): name each calibration's whole law
Nov 8, 2026
341ca0c
fix(oracles): guard state probes with a function-local probing constant
Nov 8, 2026
6cde3f0
Merge origin/main (Vitest 5 and Vite 8, #2371) into oracle/use-oracle…
Nov 9, 2026
2661925
test(db): record the cross-formulation replay witnesses for fast-check 4
Nov 9, 2026
be1789a
chore: pin @tanstack/oracles c090f43 and lint with @tanstack/eslint-p…
Nov 9, 2026
a17c8e4
test(db-collection-e2e): register routes through the browser-safe dec…
Nov 9, 2026
2102f47
test(db): reach a restarted sync run that rewrites a row from before …
Nov 9, 2026
febef19
chore: give @fast-check/vitest the one fast-check 4 copy
Nov 9, 2026
79a6362
fix(scripts): track run budgets of seeds declared with oracleFixedSeed
Nov 9, 2026
bd6ff87
test(db): cross the hydration oracle with on-demand sources and unsee…
Nov 9, 2026
5911536
test: route offline and reload-class campaigns by their parameters (C-9)
Nov 9, 2026
db1601a
fix(db): keep no rows from before cleanup in a live-query observer's …
Nov 9, 2026
fb79197
test(db): compare the replay reporter's format in a child process
Nov 9, 2026
ff69b14
test(db): re-record the cross-formulation replay witnesses under one …
Nov 9, 2026
5ab0f42
chore(lint): retire the local oracle lint rules for @tanstack/eslint-…
Nov 9, 2026
c88f7c4
test: route every fast-check campaign by the parameters it runs with
Nov 9, 2026
2133d80
chore: pin @tanstack/oracles and @tanstack/eslint-plugin-oracles to b…
Nov 9, 2026
2431909
test: declare the remaining fixed seeds with oracleFixedSeed
Nov 9, 2026
c7fad57
test(db-sqlite-persistence-core): leave runtime-registered oracles ou…
Nov 9, 2026
7a55b70
Merge branch 'oracle/hydration-terminal-fix' into oracle/use-oracles-…
Nov 9, 2026
2813f28
ci: apply automated fixes
autofix-ci[bot] Nov 9, 2026
3031f61
fix(db): run the optimistic-history oracle in test:oracles again
Nov 9, 2026
3d166ff
refactor(db): assign the discard mode's stale rows once at cleanup
Nov 9, 2026
92bcdfc
test(db): let the hydration oracle judge the subscription half of the…
Nov 9, 2026
9f3e0b1
docs(db-collection-e2e): say that no consumer of the shared suites de…
Nov 9, 2026
1da8dc8
docs: point the oracleProperty framework row at TanStack/oracles
Nov 9, 2026
589cb3a
test(db-adapter-conformance): judge calibration law names with one an…
Nov 9, 2026
0bca833
docs(db-ivm): say why a join-tuple merge fires two probes
Nov 9, 2026
a6fd192
fix(scripts): re-lint every oracle file only when the plugin's lockfi…
Nov 9, 2026
16a723d
Merge origin/oracle/use-oracles-package (CI formatting fixes)
Nov 9, 2026
c40daff
fix(scripts): read the merge-base lockfile whole, and fail on any git…
Nov 9, 2026
cce78df
test(scripts): declare the lint-scope fixed seed and add its construc…
Nov 9, 2026
0956b45
fix(db): run the split LocalStorage oracles in test:oracles
Nov 9, 2026
7980a03
docs(db): state the hydration oracle's ownership rule precisely
Nov 9, 2026
df85071
build: strip oracle state probes from the published build
Nov 9, 2026
b63f981
fix(build): declare the probe-stripping plugin's types
Nov 9, 2026
604f8c7
docs(db): state the hydration oracle's ownership walk exactly
Nov 9, 2026
bb3a7de
test(build): add a generated oracle for the probe stripper
Nov 9, 2026
eafe48d
test(scripts): register the lint-scope campaigns' routes
Nov 9, 2026
5cabde6
test(build): declare reach only for admitted placements
Nov 9, 2026
dc18806
fix(build): strip probes by the rule's form, keeping what it admits
Nov 9, 2026
4e5fc59
test(scripts): stand the lint-scope campaigns aside during other replays
Nov 9, 2026
ecb1679
Merge origin/main (production-bundle benchmark #2379, dependency upgr…
Nov 9, 2026
6d418a6
ci: apply automated fixes
autofix-ci[bot] Nov 9, 2026
40c0548
test(db): name the probe stripper oracle's owner in the replay manifest
Nov 9, 2026
bc183bd
chore: pin @tanstack/oracles to TanStack/oracles main
Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
26 changes: 13 additions & 13 deletions .agents/skills/oracle-authoring/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ Work in this order when a production change is part of the task:
2. Inventory the materially affected public receiving paths and their promised
observation cuts. Include required real-host receiving witnesses in this
pre-edit gate; a controlled core witness does not supply their evidence.
3. Extend the history grammar, driver, or observation until generated
3. Extend the history grammar, production driver, or observation until generated
histories reach the state where the law matters. Declare that state with
`createOracleReach` (ORC-015) for each required receiving path.
4. Run those comparisons on unchanged production. Record the defect's RED
result and the neighboring guarantees' results. A setup failure or missing
required witness blocks production edits; repair the test path first.
5. Change production, with the oracle running after each attempt.
6. Record the GREEN result and a hostile mutant that fails.
6. Record the GREEN result and a mutant that fails.

Do not change production before step 4. Retrospective runs or a documented
process gap do not satisfy this gate. If a model rule disagrees with
Expand All @@ -38,7 +38,7 @@ change only so that it matches production output is model hacking.

Read [the oracle guide](../../../docs/contributing/oracle-rubric.md) and
[the glossary](../../../docs/contributing/glossary.md) in full, then read the
relevant owner and limits in
relevant oracle owner and limits in
[the coverage map](../../../docs/contributing/oracle-coverage.md).

After a handoff or compaction, reopen required sources whose relevant contents
Expand All @@ -51,11 +51,11 @@ concepts. Delegated agents must do the reading relevant to their own scope.
Follow the subsystem reading requirements in AGENTS.md.

Keep unit tests and standalone concrete type assertions out of oracle files
(ORC-016). Fixed regressions are inputs to the same model, driver, and
comparison as the broader campaign, without their own expected answers.
Compile-time oracles generate legal TypeScript inputs and compare public
types with a reusable independent law; a matrix of fixed assertions does not
satisfy this requirement. Supplemental examples belong in ordinary test files.
(ORC-016). Fixed regressions are inputs to the same model, production driver,
and comparison as the broader campaign, without their own expected answers.
Compile-time oracles generate legal TypeScript inputs and compare public types
with a reusable independent law; a matrix of fixed assertions does not satisfy
this requirement. Supplemental examples belong in ordinary test files.

Use the [instrument library](../../../docs/contributing/instruments/index.md)
when there is a material uncertainty. Select cards within the authorized task;
Expand Down Expand Up @@ -90,9 +90,9 @@ when requested by the task. A proposal with unresolved authority can be explored
in a scratch model; do not silently make it a product expectation.

At closeout, write the evidence block from AGENTS.md (law, reach, RED, GREEN,
mutant, limits). Connect the law to the evidence actually obtained: which histories
and paths ran, which wrong behavior was rejected, and what remains untested.
Use concise prose suited to the change; no particular report template is
required. When changing repository coverage, update the existing owner and
coverage map to reflect the changed scope. A scratch law-design experiment
mutant, limits). Connect the law to the evidence actually obtained: which
histories and paths ran, which wrong behavior was rejected, and what remains
untested. Use concise prose suited to the change; no particular report template
is required. When changing repository coverage, update the existing oracle owner
and coverage map to reflect the changed scope. A scratch law-design experiment
retains its proposals and limits without claiming new repository coverage.
49 changes: 44 additions & 5 deletions .agents/skills/oracle-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ test can coexist with correct production.

Read [the oracle guide](../../../docs/contributing/oracle-rubric.md) and
[the glossary](../../../docs/contributing/glossary.md) in full, then read the
relevant owner and limits in
relevant oracle owner and limits in
[the coverage map](../../../docs/contributing/oracle-coverage.md).

After a handoff or compaction, reopen required sources whose relevant contents
Expand Down Expand Up @@ -41,8 +41,9 @@ from the [instrument library](../../../docs/contributing/instruments/index.md):
- **Law restructuring** tests whether merging, splitting, replacing, or removing
laws gives a better account while preserving necessary obligations.
- **Mutant gap hunt** tests whether a plausible wrong implementation can pass
the owner and traces survivors to a missing distinction, a contract-permitted
difference, a scoped equivalence argument, or a baseline product bug.
the oracle owner and traces survivors to a missing distinction, a
contract-permitted difference, a scoped equivalence argument, or a baseline
product bug.

Choose attacks for the actual uncertainty; do not run every card or require a
finding at every level. Use a fresh reviewer for an independent challenge when
Expand Down Expand Up @@ -76,10 +77,48 @@ Report each one as a finding:
- A claim about a state that no declared reach shows generated histories enter.
- A skipped, narrowed, or relaxed comparison without a coverage-map entry and a
maintainer decision.
- A pinned example where the law needs a generator dimension.
- A fixed-history-only coverage claim where the law needs a generator dimension.
- A counterexample labeled as older than the change and then left without a
fix, a coverage-map record, or a maintainer decision.
- A closure claim without a hostile mutant that fails the oracle.
- A closure claim without a mutant that fails the oracle.

Lint, reach checks, coverage, and calibrations cannot see the weaknesses
below. Treat them as your main job, and hunt for each one in the oracle under
review, not only in the diff:

- **Run but not checked.** A history executes the code, but the comparison
never observes its effect. Coverage and declared reach both pass. Find a
line the oracle claims, and name the mutant on it that would survive.
- **A model that copies production.** The model mirrors production's branches,
classifications, or helpers, so both agree on the same wrong answer. Compare
the model's structure with production, not only its results.
- **A grammar narrower than the law.** The law's prose claims a value domain,
action, or case that the grammar never generates. Examples are a type the
generator never produces, an exclusion stated in prose but missing from the
declared limits, and a size or length setting that makes part of the
declared range unreachable. Check each claim in the law against a generator
dimension.
- **Easy declared states and probes.** A declared state or probe is placed
where it is always true, or is defined by a weaker condition than the state
it names. Its count rises without showing that histories enter the
interesting state. Check each definition against the state that the law
needs.
- **A late or coarse checkpoint.** The comparison runs only at the end of a
history or observes only a summary, so a wrong intermediate observation
disappears. Ask whether a user could see the wrong value before the
checkpoint.
- **A limit that hides in-scope work.** A declared limit, waiver, or
coverage-map entry excludes a legal case that the law promises. Check that
each limit's decision covers exactly what it excludes.
- **A dismissed survivor.** A surviving mutant is called equivalent or out of
scope without an argument from the contract. Require that argument, or a
witness.
- **An invariant guard without an invariant witness.** A throw for a
contradictory collaborator signal or impossible state has no history that
reaches it. Require an invariant witness: a fault-injected step that supplies
the contradictory signal, with the expected observation that production
fails at the boundary before it releases established state or publishes
success.

Report supported findings and remaining uncertainty. Do not invent findings,
retire laws, or rewrite expectations to make a review come out decisive.
Expand Down
5 changes: 5 additions & 0 deletions .changeset/observer-restart-rewrite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/db': patch
---

Show a row that a restarted sync run writes again after cleanup. A live-query observer (and so `useLiveQuery` in every framework adapter) that stayed subscribed through a Collection's cleanup and restart showed no row when the new sync run wrote a row equal to one it showed before cleanup, or when an on-demand restart reloaded it. The observer's Collection subscription now keeps none of the rows from before cleanup.
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 🔬 Oracle Coverage

<!-- For a change to observable behavior, name the coverage-map owner and summarize the oracle evidence. For a non-bug change without a practical oracle, identify the relevant coverage-map entry and explain why you cannot extend its owner, create an independent oracle, or add a receiving witness. -->
<!-- For a change to observable behavior, name the coverage-map oracle owner and summarize the oracle evidence. For a non-bug change without a practical oracle, identify the relevant coverage-map entry and explain why you cannot extend its oracle owner, create an independent oracle, or add a receiving witness. -->

<!-- For a bug fix, provide evidence that closes the entire declared bug class. State the violated law, exercised histories, production paths, observation checkpoints, RED/GREEN result, and remaining limits. Resolve known in-scope gaps before submitting; a focused test alone is not sufficient. -->

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ jobs:
uses: tanstack/config/.github/setup@e4b48f16568324f76f467aa4c2aac2f05db632c3
- name: Build Packages
run: pnpm run build
- name: Check that no build carries an oracle probe
run: node scripts/check-dist-probes.mjs
- name: Publish Previews
run: pnpx pkg-pr-new publish --pnpm --compact './packages/*' --template './examples/*/*'
size:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ jobs:
run: pnpm --dir packages/db exec vitest --mergeReports .vitest-reports
- name: Build packages
run: pnpm run build
- name: Check that no build carries an oracle probe
run: node scripts/check-dist-probes.mjs
- name: Run Changesets (version or publish)
id: changesets
uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d # v1.9.0
Expand Down
9 changes: 5 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@ vite.config.js.timestamp-*
vite.config.ts.timestamp-*
tsconfig.vitest-temp.json

# The part-reach oracle lints scratch programs inside the repository; an
# interrupted run can leave them behind.
/part-reach-scratch-*/

# Other checkouts and scratch copies. A plain directory here is not part of
# this checkout's branch, so the oracle lint hooks must not see its files.
/.worktrees/

# The gap report CLI: evidence store and workspace bundles, and the harness
# files that a run which died leaves beside the package
.oracle-gaps/
.oracle-gaps-*
Loading
Loading