{{ message }}
Repository navigation
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

feat(tables): typed predicate filter grammar, cursor pagination, and the v2 table surface #6067
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
feat(tables): typed predicate filter grammar, cursor pagination, and the v2 table surface #6067
Changes from 1 commit
47492ab4c63dcfd74c0c0a048d02da060340696861ded16c48f686225d11720740ca2c2106332295d98fde74b64eaf41799b5fe21ead6391705ea6f0df4d58b3f31961564fdd4f9c104e885854f2d964f79d0dd0e2685621d502082546a093dfaaadd62ad329d8fa6c3ebb639c66ecef808bc0d96d49b8File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
…ntly narrowing Found by running the HTTP suite: a node carrying BOTH a group key and a leaf's `field`/`op`/`value` returned 200, not 400. Zod strips unrecognized keys by default, so `{ all: [...], field, op, value }` parsed clean against the group branch with the leaf half quietly deleted. The hybrid guard added in eaf4179 could never fire — the keys were gone before `validatePredicate` ran. On the bulk paths that turns "delete archived rows for tenant acme" into "delete EVERY row for tenant acme". Both node shapes are now `strictObject`. Strict on the group alone would be worse than the bug: the union would fall through to the leaf branch, which is the more dangerous reading of the two. The bulk schemas are unaffected by design — their legacy `$`-object branch accepts any non-empty object, so it absorbs the hybrid WITHOUT stripping, the route's `isTablePredicate` check routes it back to `validatePredicate`, and the runtime guard rejects it there. Tests now pin both layers so removing either one fails loudly. Verified against a running server on the `hello` table: 18/18 HTTP checks pass, including the previously-failing hybrid case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011M563cbFy2S74GvSDf2C3RUh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing