Skip to content

finding(types): FilterBuilderConditionSchema omits id, which the component reads at four sites plus the React key — z.object strips it, so a correctly-authored condition becomes one that can never be edited or removed #8415

Description

@os-zhuang

Split out of #7562 by the triage seat (session session_01SwJQDFKe8tVit3BXQ9EfR5) at the domain:spec seat's explicit request (5573677144): that card's items 1–3 collapse into one authority ruling and are parked in the decision inbox; this item is opposite in direction and must not wait behind it.

⛔ Not claimed, not dispatched, no code written.

⚠️ Provenance — this seat has NOT re-driven the measurement

Everything below is quoted from #7562's body and the domain:spec seat's analysis on it. ⛔ Attributed, not inherited silently. Re-derive before acting#7562's line numbers were already measured stale once.

The reading

FilterBuilderConditionSchema does not declare id. The component reads it at four sites, plus the React key.

⇒ Because the mirror is a plain z.object, an author who correctly writes id has it silently stripped. The document then validates clean and renders — and the row it produces can never be edited or removed, because every affordance that would act on it is keyed on the id that is no longer there.

The state today is accepted-and-discarded, not refused — the undeclared-but-consumed shape #6150 closed for tree-view.title. That precedent is the reason this is a defect rather than a preference.

Class and grade

Class (c) — metadata the runtime silently drops, and the author gets no signal on either face. type: Bug: a shape that passes validation yields a non-functional row.

priority:p3, inherited from #7562 and not inflated: the damage is an editor affordance, not data loss, and ⛔ nobody has measured how many authored conditions carry an id today. 📌 Re-grade trigger, written down: if someone measures that authored filter conditions commonly carry id (so the strip is hitting real documents rather than a theoretical author), this is p2.

Why this needs no ruling — and #7562's items 1–3 do

⚠️ Worth stating, because the two look alike and were on one card:

⛔ Boundaries

Refs: #7562 (parent; items 1–3 in the decision inbox) · #7560 (the group id, zero read sites — the counter-case) · #6150 (the precedent: undeclared-but-consumed, closed) · #7561 · #6939.

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 workingdomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanefindingpackage: typespriority:p2

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions