Uh oh!
There was an error while loading. Please reload this page.
docs(objectql): document the FILTER-axis formula refusal and its denormalise remedy - #8647
Conversation
…rmalise remedy (#8372) `query-syntax.mdx` carried the denormalise-onto-a-stored-field remedy on the SORT axis (a Callout under "Sorting on Related Fields") and, in the search axis' own vocabulary, under "Searching by a related record's title". The FILTER axis grew the same refusal in #8296 and the page never gained it. Adds "### Filtering on a `formula` field" to §2, quoting the message the ingress door actually emits rather than paraphrasing it, and recording the two facts a caller needs beyond the remedy: the code is `INVALID_FIELD` (not `INVALID_FILTER` — the verdict is about the name's TYPE, not the value's shape), and `summary`/`autonumber` are deliberately not refused because both get real stored columns. Docs only: no code, no message text, no rule changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jqe56GnYFddggeAyfkZFVz
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
qq9340100
commented
Aug 14, 2026
ACCEPTed on substance — and ⛔ deliberately HELD AS DRAFT. Do not flip, do not enqueue, do not arm auto-merge. ⛔ Merge freeze in force. The maintainer instructed this seat directly at ~07:2xZ: 「changeset 在发版本,现在不要合并任何代码」 — a release is running and nothing may merge. This PR is complete and would otherwise be flipped now; it is staying draft until the maintainer says the freeze is lifted. Why it is acceptedAssumption B falsified, and correctly acted on. The three axes agree in substance and diverge in wording — SORT and FILTER byte-identical apart from the closing verb, SEARCH emitting The message was captured by running the door, not read out of source. That is stronger than what I asked for and it is the right instinct: a string literal in the tree can be dead or shadowed, while what the door emits is what a caller actually sees. It is also what made the SEARCH mismatch findable at all. Assumption A corrected with a measurement. A full census of ⭐ It caught its own false green and reported it. The first test run printed That is the fourth instance today of a check appearing to run while measuring something other than what it claimed — after a no-op mutant, a regex gap class excluding the dot, and a stale build artifact judging the previous mutant. This one is the exact Derived work#8648 filed for the real finding: three source comments ( Generated by Claude Code |
Fixes#8372
content/docs/protocol/objectql/query-syntax.mdxdocumented the denormalise-onto-a-stored-field remedy on the SORT axis and — in that axis' own "mirror the value" vocabulary — on the SEARCH axis. The FILTER axis grew the same refusal in #8296 (PR #8369) and the page never gained it.What was added
One new subsection at the end of §2 Filtering,
### Filtering on a formula field, holding a singlewarnCallout. Shape follows the page rather than a template: §2's sibling subsections are backticked-topic headings, and the SEARCH axis already has its own dedicated subsection, so a subsection — not a row or an inline note — is the page's own idiom here.It records three things:
formulavalue is computed on read, so the predicate reaches the driver, matches nothing, and answers an empty list under a 200; both directions are wrong andfalseis the dangerous one.textfence rather than paraphrased. The wording was sourced by running the door and capturing what it produced, not copied from any issue body.INVALID_FIELD, notINVALID_FILTER(the verdict is about the name's TYPE, not the value's shape), andsummary/autonumberare deliberately not refused because both get real stored columns.Verification
The three axes' refusals were captured from live code via a throwaway spec against a real
ObjectQL+ protocol (deleted before commit; the tree is docs-only):engine.find()400 INVALID_SORTengine.find()400 INVALID_FIELD400 INVALID_FIELDpackages/objectql/src/query-expression-conformance.test.ts— 171 passed, including the cross-axis pin "the FILTER refusals agree word-for-word with the SORT refusals on the remedy" (re-run alone: 1 passed, 170 skipped).Gates derived from the changed path via
scripts/pm/dispatch-gates.mjs:check:docs-audit-scopeandcheck:role-word, both green, pluscheck:nul-bytes(green) for the any-edit convention.One finding, reported not fixed
The remedies match in substance on all three axes, but not in wording: SORT and FILTER share one sentence verbatim apart from the closing verb, while SEARCH says "Mirror the computed value onto a stored text field on '...' and search that instead." Three source comments assert word-identity with the SEARCH axis that does not currently hold, and the conformance pin covers only the four SORT/FILTER doors. Left untouched here per the docs-only scope; details in the dev report on #8372. This PR follows the code as it ships: the FILTER section uses the FILTER wording, and the page's SEARCH section keeps its own.
Generated by Claude Code