You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found out of scope while implementing #13259 (the repair that makes getUiView's list priority pass honour hidden). ⛔ Reported, not touched — the repair direction here is a judgment call about what hidden governs, which is exactly the kind of thing #13259's triage ruled must not be smuggled into a card that only restores a stated invariant.
⛔ Ungraded and unrouted. Severity not judged here. Duplicate-checked before filing: all 354 open issues were listed through the REST list endpoint (the search endpoint answers 403 from this seat, so the read is list + local grep) and grepped for getUiView / ui view / ui/view / hidden / sort. The control passed — the grep returns #13259 itself, plus #13214, #13294, #12767 and #8113, none of which is this. So the zero is a reading, not an unverified silence.
Measured — driven, with a control arm, not read off the source
packages/metadata-protocol/src/protocol.ts, getUiView, the type === 'list' branch, builds its sort directive from presence alone:
created_at is one of the nine priority names. With #13259's fix in place it is correctly withheld from columns when declared hidden — and sort names it anyway. Driven against the built dist of @objectstack/metadata-protocol at #13259's branch head, two arms:
The control is the point: sort is byte-identical across the two arms, so it is unconditional on hidden rather than merely happening to agree. columns and searchableFields differ between the arms, so the probe is demonstrably able to observe a difference where one exists.
hidden does not govern ordering — current behaviour is correct, and the right output is a one-line comment in the producer saying so, so the next reader does not read it as residue.
hidden governs everything the default UI derives — the sort directive should be omitted when created_at is hidden, matching how searchableFields already follows columns.
The sort field should be constrained to the emitted columns regardless of hidden — a broader statement about the body's internal consistency, and the one with the largest blast radius.
⚠️ Note for whoever takes it: ListViewSchema (packages/spec/src/ui/view.zod.ts) does not cross-reference sort against columns, so the current body parses GREEN against GetUiViewResponseSchema either way. Schema conformance is not the detector here and cannot be made to be one without a schema change.
⛔ Reverse-check any zero with a term known present in the same region: searchableFields sits three lines below the sort line, and priorityFields about twenty lines above it.
Found out of scope while implementing #13259 (the repair that makes
getUiView's list priority pass honourhidden). ⛔ Reported, not touched — the repair direction here is a judgment call about whathiddengoverns, which is exactly the kind of thing #13259's triage ruled must not be smuggled into a card that only restores a stated invariant.⛔ Ungraded and unrouted. Severity not judged here. Duplicate-checked before filing: all 354 open issues were listed through the REST list endpoint (the search endpoint answers 403 from this seat, so the read is list + local grep) and grepped for
getUiView/ui view/ui/view/hidden/sort. The control passed — the grep returns #13259 itself, plus #13214, #13294, #12767 and #8113, none of which is this. So the zero is a reading, not an unverified silence.Measured — driven, with a control arm, not read off the source
packages/metadata-protocol/src/protocol.ts,getUiView, thetype === 'list'branch, builds its sort directive from presence alone:created_atis one of the nine priority names. With #13259's fix in place it is correctly withheld fromcolumnswhen declared hidden — andsortnames it anyway. Driven against the builtdistof@objectstack/metadata-protocolat #13259's branch head, two arms:The control is the point:
sortis byte-identical across the two arms, so it is unconditional onhiddenrather than merely happening to agree.columnsandsearchableFieldsdiffer between the arms, so the probe is demonstrably able to observe a difference where one exists.Why this is a card and not a comment
getUiViewlist branch serves fields declaredhiddenwhen the field name is one of its nine priority names — declared, not enforced #13259. Before that fix, a hiddencreated_atwas emitted as a column and named insort— wrong, but internally consistent. After it, the body names an ordering field that is not among its own columns. That is a new shape, and it arrived as a side effect rather than a decision.getUiViewlist branch serves fields declaredhiddenwhen the field name is one of its nine priority names — declared, not enforced #13259 did not answer it:FieldSchema.hiddenis declared "Hidden from default UI". Sorting by a field is not displaying it, and sorting a grid by a column the grid does not show is ordinary, deliberate behaviour in list UIs. So this may be correct as it stands. ⛔ No claim is made here that it is a defect.getUiViewlist branch serves fields declaredhiddenwhen the field name is one of its nine priority names — declared, not enforced #13259's rather than being re-derived later by whoever notices the asymmetry.Not decided here
Three readings, left to triage:
hiddendoes not govern ordering — current behaviour is correct, and the right output is a one-line comment in the producer saying so, so the next reader does not read it as residue.hiddengoverns everything the default UI derives — the sort directive should be omitted whencreated_atis hidden, matching howsearchableFieldsalready followscolumns.hidden— a broader statement about the body's internal consistency, and the one with the largest blast radius.ListViewSchema(packages/spec/src/ui/view.zod.ts) does not cross-referencesortagainstcolumns, so the current body parses GREEN againstGetUiViewResponseSchemaeither way. Schema conformance is not the detector here and cannot be made to be one without a schema change.Re-check
⛔ Reverse-check any zero with a term known present in the same region:
searchableFieldssits three lines below thesortline, andpriorityFieldsabout twenty lines above it.Refs
getUiViewlist branch serves fields declaredhiddenwhen the field name is one of its nine priority names — declared, not enforced #13259 — the card whose fix creates this state (branchclaude/issue-13259-hidden-priority-fields)GET /api/v1/ui/view/:object/:typeresolves a UI view with no identity resolution and no anonymous-deny at the REST seam #13214 — measuring reachability of the same routeGenerated by Claude Code