Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Extend the Effect skipInitial oracle lane: ordered windows, includes, failures, and ordinary Effects

Offen
#2,117 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
42/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
react, typescript

Rechercherichtung

Start with Model D in packages/db/tests/query/includes-temporal-oracle.test.ts and the progressive source readiness review record. Check whether createEffect supports Collection-valued or inline includes, then extend the lane grammar and cells for the listed shapes, histories, and consumers. Update the open cells in docs/contributing/oracle-reviews/progressive-source-readiness.md and the Includes and publication row in docs/contributing/oracle-coverage.md; done means each new cell rejects a plausible wrong design at its intended checkpoint.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

#2115 added Model D to packages/db/tests/query/includes-temporal-oracle.test.ts. Its Effect lane checks this law: an Effect with skipInitial ends suppression at initial-query readiness. For an on-demand source, readiness means the Effect's own initial loads settled. For an eager source, it means the source Collection is ready. An obsolete or aborted load can neither hold nor close suppression.

The Effect lane covers only part of that law. This issue lists the missing shapes, histories, and consumers so that they can be added.

What the lane covers now

  • Shapes: a direct on-demand root, the lazy side of a left join, and eager roots with and without an explicit syncMode.
  • Histories: every legal order of delivery, settlement, source readiness, and one later change. On-demand shapes also get one truncate or (join only) rekey before settlement.
  • Observations: entered post ids, other events, and acquisitions at each step checkpoint.
  • Consumer: createEffect({ skipInitial: true }) only.

Missing coverage

Shapes
  • Ordered window (orderBy + limit) over a lagging on-demand source. Ordered Effects already use publication participants for their ordered chain (trackOrderedPublication), so they also interact with the new initial-load hold. The live-query lane has an ordered shape that can serve as a starting point. Its settle step resolves the whole continuation chain, and it records only that an acquisition happened.
  • Includes (a correlated child query). First, check whether createEffect accepts Collection-valued or inline includes. If it does, add an include shape. If it does not, record that limit in the lane prose.
  • Single result (findOne()), which is the shape from #2113. The live-query lane has it. The Effect lane does not.
  • Two on-demand sources in one Effect, for example a join where both sides are on-demand. One source can settle before the other. Suppression must stay on until every current initial load settles.
Histories
  • A real load failure during the initial load. The expected result is that onSourceError fires, the Effect is disposed, and no deltas are delivered. Model D excludes rejected acquisitions now. Today only source inspection backs the claim that a real failure disposes the Effect. Also add a hostile control: a rejection classified as success must not change any observation.
  • Source error or cleanup while the source lags behind its settled subset.
  • Disturbance after readiness. A truncate or rekey after settle must not reopen suppression, and its later rows must arrive as deltas.
  • Truncate of an eager source before markReady().
  • More than one disturbance in one history, for example rekey then truncate, or two rekey steps.
Consumers
  • skipInitial: false. ARCHITECTURE.md says that ordinary initial requests keep their existing callback timing. No lane checks this over a lagging source. A mutant that tracks initial loads without skipInitial survived Model D. It is equivalent only because initialLoadComplete starts as true without skipInitial. A lane for skipInitial: false would make that argument executable.
  • useLiveQueryEffect (React). There is no framework witness for an Effect over a lagging source.
Calibration to keep

For each new cell, show that it rejects a plausible wrong design at the intended checkpoint, as in the #2115 review record (docs/contributing/oracle-reviews/progressive-source-readiness.md). The present lane rejects these designs:

  • the shared ordered-repair failure flag (10 rekey cells),
  • releasing a hold without the truncate takeover (80 truncate cells),
  • a design that ignores source readiness (8 eager cells).

New shapes should keep these kills and add one for their own distinction.

Where to update

  • Model D's prose and grammar in includes-temporal-oracle.test.ts.
  • The open cells in docs/contributing/oracle-reviews/progressive-source-readiness.md.
  • The "Includes and publication" row in docs/contributing/oracle-coverage.md.
Vorherrschende Sprache
TypeScript
Sterne
3.9k
Forks
272
Ø Merge
1 T. 48 Min.
Gemergte PRs (30 T.)
238

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus TanStack/db

Alle Issues in TanStack/db

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.