test(fields): harvest the #4911 ruling into the $like/$ilike exclusion reason - #4997
Merged
Merged
Conversation
…n reason (#4911) The KNOWN_UNREACHABLE entry for `$like` / `$ilike` was landed as a CITED OPEN QUESTION ("undecided — see #4911") to unblock the queue while the authoring-surface call was still pending. That call has been ruled, so the entry's justification is rewritten as the decision it became. Ruled B on 2026-08-17: the visual FilterBuilder deliberately does not offer raw pattern-matching authoring. The constrained intents are already authorable and already reach the dropdown (`contains` / `containsCaseInsensitive` / `startsWith` / `endsWith`), so the only net-new capability a `$like` row would add is the raw `%`/`_` wildcard form — the one operator whose mis-authored value silently returns wrong rows instead of erroring — for zero measured author pull. The API surface is unaffected: spec goes on accepting both operators for hand-written ObjectQL, direct JSON authors and integrations, so this is a builder-surface refusal rather than a capability removal. The ruling's named reopen condition (a real user or deployment asks to author wildcard patterns in the UI) is recorded on the entry itself, since the exclusion ratchet can only check that a member is still a spec operator, never that its reason is still the true one. Comments only: both members stay in KNOWN_UNREACHABLE, and the reachability sweep and the exclusion ratchet are untouched. No operator added or removed. Claude-Session: https://claude.ai/code/session_01NYgmGheCzM6NrHZN436Cxf
Contributor
Author
|
ACCEPT — PM review at Verified against the diff, not the report: comments-only in the test file (every added line is comment text), Flipped ready and armed auto-merge — not a skill-surface path, lands through the lane; merge closes #4911. Generated by Claude Code |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #4911
Comment-only harvest of maintainer ruling B on #4911 into the
KNOWN_UNREACHABLEentryfor
$like/$ilikeinpackages/fields/src/widgets/__tests__/FilterConditionField.operators.test.ts.Why this edit exists
The entry was landed by PR #4978 as a cited open question — "undecided — see #4911" — to
relieve the #2942 reachability gate on
mainwhile the authoring-surface call was stillpending. That wording was correct then and is wrong now: the call has been ruled, and the
entry's own harvest note says so explicitly, because the exclusion ratchet can only check
that a member is still a spec operator, never that its reason is still the true one. Leaving
"undecided" in place after a ruling is exactly the stale-exclusion rot the block warns about.
What the ruling says
Ruled B on 2026-08-17 (recorded under the maintainer's batch acceptance, then confirmed
on the merits under explicit delegation): the visual FilterBuilder deliberately does not
offer raw pattern-matching authoring.
(
contains/containsCaseInsensitive/startsWith/endsWith), so the only net-newcapability a
$likerow would add is the raw%/_wildcard form — the one operatorwhose mis-authored value silently returns the wrong rows instead of erroring.
(chore: raise the
@objectstack/specpin from^17.0.0-rc.6to 17.0.0 GA (lockfile resolution + green-keeping adaptations) #4636), not from demand.ObjectQL, direct JSON authors and integrations. This is a builder-surface refusal, not a
capability removal.
author wildcard patterns in the UI. If that fires, reopen FilterConditionField cannot author spec 17.0.0 GA's new
$like/$ilike— the same shape as the closed$icontainsgap (#4023) #4911, delete the two membersand add the builder operators that author them — the parity assertion then holds it
honest, exactly as it did when objectui: FilterConditionField cannot author spec’s $icontains — the case-insensitive contains is unreachable from the filter UI #4023 retired
$icontains.Scope
Comments only.
KNOWN_UNREACHABLEkeeps both members unchanged; the reachability sweep andthe exclusion ratchet are untouched; no operator added, removed or re-spelled; no other
source file. The changeset carries empty frontmatter — this releases nothing.
Verification
Run at the final commit
364cc73, tree clean:Both load-bearing assertions named green in a verbose run:
pnpm exec eslinton the changed file: 0 errors (8 pre-existingno-explicit-anywarnings, all on code lines this diff does not touch). Control-byte scan of the changed file
clean.
Generated by Claude Code