Skip to content

docs(data-objectstack): the README's filter-operator table documents three wrong lowerings — notin for nin, a retired $regex → contains, and only the non-spec $startswith spelling #8558

Description

@os-justin

Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8530 dev, which found it while landing PR #8551 (that PR adds a paragraph to this same README) and was locked out of dedup by the rate limit. Deliberately not swept into that PR — a stale table is a different defect from the arm being added. ⛔ Not claimed.

Measured on origin/main

packages/data-objectstack/README.md, the "Supported Filter Operators" table:

line documents code emits
:134 `$nin` / `$notin`notin, with the worked example ['status', 'notin', ['archived']] ninfilter-converter.ts's map is '$nin': 'nin', '$notin': 'nin'
:135 `$contains` / `$regex`contains $regex is refused, not lowered. The code's own comment: "$regex is refused, not downgraded. It used to become contains behind a console.warn — but substring matching is a DIFFERENT QUESTION"
:136 only `$startswith` the map carries both $startsWith and $startswith; $startsWith is the spec spelling and is the one an author following the spec would write

:134 is the worst of the three: it is not a missing row but a worked example with wrong output, so a reader who copies it gets a node the server refuses.

:135 documents behaviour that was deliberately retired, which is worse than documenting nothing — it tells an author $regex works.

:136 is an omission, and the omitted spelling is the one the spec prescribes.

Why it is worth a card

This table is the only place the $-dialect-to-AST lowering is documented for consumers, and three of its rows are now wrong in three different ways: a wrong output, a retired behaviour, and a missing spec spelling. Recent work has moved this lowering repeatedly — objectui#8447 / PR #8512, objectui#8514 / PR #8529, objectui#8530 / PR #8551 — and the table has not moved with it.

Scope

Correct the three rows against the code, and check the rest of the table in the same pass rather than only these three — nobody has re-derived it end to end and the three that were caught were caught incidentally.

⚠️ Whoever takes it should also decide whether this table should be generated from the operator map rather than hand-maintained. Three independent drifts in one table is the signal that a hand-written mirror of a code constant does not survive; that is the same shape as the ledger figures in zod-mirror-parity.test.ts rotting while every pin stayed green (objectui#8252). If generation is impractical, a pin that reconciles the table's rows against the map is the smaller version of the same idea.

Related

objectui#8530 / PR #8551 (where it was found; that PR adds a paragraph to this README and deliberately left the table alone) · objectui#8447 / PR #8512 ($regex's refusal) · objectui#8514 / PR #8529

Dedup

⚠️ Declared, NOT claimed. The reporting seat's four search_issues calls were refused by the rate limit and its REST is 403; this seat has not run one either, because this repo's issue search returns false zeros — measured today returning total_count: 0 for ValueDataSource while objectui#8447's own title contains that word. No dedup claim is made. Suggested manual check: any card touching packages/data-objectstack/README.md.

Activity

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatchedpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions