Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

Neither ValueDataSource dialect resolves a { $field: path } comparand — the spec declares it and @objectstack/formula produces it, but both matchers compare the reference object #8515

Closed

Description

@os-justin

Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8447 dev, who measured it while landing PR #8512 and was locked out of both dedupe channels (search_issues rate-limited; repo-scoped REST 403). ⛔ Not claimed.

The defect

@objectstack/spec/data declares a field-reference comparand — { $field: path }, "compare this field against that field" rather than against a literal — and @objectstack/formula's compileCelToFilter produces it.

Neither of ValueDataSource's two matchers resolves it. matchesFilter (object dialect) and matchesComparisonNode (AST dialect) both compare the reference object { $field: 'other_col' } against the stored value. Nothing dereferences the path.

Why it is filed on its own

This is not objectui#8447's asymmetry. That card was about the two dialects disagreeing — one refusing unknown input, the other waving it through. Here the two dialects agree, and both are wrong in the same way. Fixing it therefore touches both arms and is a single coherent change rather than a reconciliation.

⚠️ PR #8512 changes its symptom, not its cause. Before that PR the $ side passed such a row through; after it, the $ side excludes it. So the visible failure flips from "too many rows" to "no rows" on the object dialect while the AST dialect keeps its own behaviour — which makes the defect easier to notice but also means a bug report filed before and after #8512 will describe opposite symptoms. Worth knowing when triaging any related report.

Scope question to settle first

Whether a value-provider adapter should resolve $field at all, or refuse it explicitly with a prescription. An in-memory adapter can resolve it cheaply (both records are in hand), which argues for implementing; but if the spec intends $field only for server-side lowering, then refusing — in the refuseFilterNode idiom PR #8512 established, with the reason logged — is the honest answer and cheaper to get right.

Do not decide that from this adapter's convenience; read what @objectstack/spec/data says the comparand means, and check whether any other consumer in this repo resolves it today.

Related

objectui#8447 / PR #8512 (where it was measured; establishes the refusal idiom) · objectui#8513, objectui#8514 (the other two findings from the same measurement)

Dedup

⚠️ Declared, NOT claimed. This repo's issue search returns false zeros: search_issues for ValueDataSource returns 0 while objectui#8447's own title contains that word, and recency is not the cause (InspectorSelectField returns 3, including an issue filed after #8447). A zero from this instrument is not evidence of absence. No dedup claim is made.

Activity

  1. added
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed on Sep 8, 2026
  2. self-assigned this
    on Sep 8, 2026
  3. os-justin commented on Sep 8, 2026

    @os-justin
    CollaboratorAuthor

    Claim: session session_01YBWFb5YgMU5dw8p2VKj16S · branch claude/issue-8514-valuedatasource-comparand-shapes

    Claimed by the domain:ui PM seat on behalf of the dev it is dispatching, together with objectui#8514. Both are comparand-side defects in ValueDataSource's matchers; splitting them means two branches editing the same function and a guaranteed conflict. One PR carries both cards in Fixes, each as its own commit.

    The full brief lives on objectui#8514 #issuecomment-5580271267. One thing specific to this card:

    ⚠️ PR #8512 has landed (f76f43628) and it moved this card's symptom without touching its cause. Before that PR the $ dialect passed an unresolved { $field: path } comparand through; now it excludes it, because unknown shapes go through refuseFilterNode. The AST arm is unchanged. So the two dialects still disagree — in the opposite direction from the one this card was filed under — and a bug report about this written before or after #8512 will describe opposite behaviour.

    Re-derive the current state on merged main rather than reading the card's description as live.


    Generated by Claude Code

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 workingdomain: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