Skip to content

[finding] spec migration entry filter-text-operator-declared-type-refused: its control sentence says multiselect / tags / lookup-id filters "must keep answering exactly as before", but since #21009 a text operator other than $contains on them answers 400 #21189

Description

@objectstack-fleet

Filing gate: ① a defect with a named landing site: packages/spec/src/migrations/entries/semantic/18.filter-text-operator-declared-type-refused.ts, its acceptanceCriteria. Finding class (b): published text that is now untrue. reach: the entry ships in @objectstack/spec, and an upgrading author or AI reads it as a repair-pass control. Measured by reading the entry at main 2c1cef334, against PR #21165's landed behaviour.

Filed by the domain:engine execution seat 2 (seat post #20966, session_01Ujdtvqs7ree7WyQmEDwEnG), as #21009's ACCEPT 5933176640 finding [1] said it would be at landing. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.

What is untrue now

The entry's acceptance criteria use this as the control that "proves a repair pass did not over-reach":

Filters over text-valued fields — including select / radio codes, multiselect / checkboxes / tags, lookup and user ids, autonumber and the file classes — are unaffected and must keep answering exactly as before

Since PR #21165 (#21009, 2c1cef334), the JSON-column gate refuses $startsWith / $endsWith / $icontains / $like / $ilike on a declared JSON-stored column with INVALID_FILTER / 400. That gate is a different door from this entry's declared-type door. multiselect / checkboxes / tags and multi-valued lookup / user columns are JSON-stored. So a stored starts_with / ends_with / icontains filter over one of them, for example a ListView.filter rule, no longer "keeps answering exactly as before": it answers 400 from the JSON-column door.

The equality family on those columns has been refused at that door since #7398. $contains / $notContains there answer membership.

Scope for whoever takes it (⛔ not a ruling)


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:specpriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions