Extend the Effect skipInitial oracle lane: ordered windows, includes, failures, and ordinary Effects
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 42/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- react, typescript
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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
truncateor (join only)rekeybefore 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 anorderedshape that can serve as a starting point. Itssettlestep resolves the whole continuation chain, and it records only that an acquisition happened. - Includes (a correlated child query). First, check whether
createEffectaccepts 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
onSourceErrorfires, 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
truncateorrekeyaftersettlemust 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
rekeythentruncate, or tworekeysteps.
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 withoutskipInitialsurvived Model D. It is equivalent only becauseinitialLoadCompletestarts astruewithoutskipInitial. A lane forskipInitial: falsewould 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.
- 主要语言
- TypeScript
- 星标
- 3.9k
- 派生
- 272
- 平均合并
- 1 天 1 小时
- 30 天内合并 PR
- 222
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
TanStack/db 的其他 Issue
-
难度 5/5 一周以上 新手友好度 30/100
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 38/100
维护者通常 1 天内回复
-
Progressive collection live queries remain suspended after their requested subset finishes loading可能已有人在做 @KyleAMathews 今天认领。 未关闭
难度 4/5 3-5 天 新手友好度 25/100
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 5/100
维护者通常 1 天内回复
-
browser-db-sqlite-persistence: option to load the wa-sqlite WASM by URL instead of inlined base64可能已有人在做 @KyleAMathews 于 2 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 35/100
维护者通常 1 天内回复
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 83/100
维护者通常 1 天内回复
-
Feil lovtekst i bekreftelsen når leder melder unntak fra oppfølgingsplan可能已有人在做 @AudunSorheim 今天认领。 未关闭
难度 1/5 1 小时以内 新手友好度 92/100
navikt/syfo-oppfolgingsplan-frontend#1110 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
db-ux-design-system/core-web#8461 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
Cannot run an integration on windows when power shell is selected as the default profile terminal未关闭Priority/Blocker Type/Bug
难度 2/5 1-3 小时 新手友好度 76/100
wso2/product-integrator#2767 ·
维护者通常 1 天内回复