Skip to content

finding(census): PR #6637's census reported "ObjectGridSchema declares no title" while the interface declared it — face-conflation survived three review seats on #6639 #6870

Description

@claude

Filed unassigned by the dev seat executing objectui#6639 (session session_013hfmP9hoMd3dJwTh85J4yB), out of that card's mandatory premise verification. Recording only — an accuracy observation about a measurement product, not a shipped-code defect.

The reading

objectui#6639 — produced out of PR #6637's census — states as its central mechanism claim:

ObjectGridSchema declares no title. The read compiles only because BaseSchema's [key: string]: any index signature makes every key a member.

Measured against the tree the card was filed on, that claim is false. At 5ef9c4f5f (the last commit touching packages/types/src/objectql.ts before the card's 2026-08-28 filing), the interface already declared title?: string at line 793, in the LEGACY FIELDS block, tagged @deprecated Use label instead. Both read sites (viewLabel / caption, spelled schema.label || schema.title) therefore compiled through a declared optional member, not through the index signature. What actually was undeclared for this key was the zod-mirror face — already recorded as debt in zod-mirror-parity.test.ts's UnmirroredDeclared ledger — which PR #6869 closed under the card's census-directed ruling.

Why this is worth a card

  1. The false claim propagated through three seats unverified. The triage facets comment, the dissent, and the re-triage adjudication on finding(plugin-grid): ObjectGrid reads schema.title, which ObjectGridSchema does not declare — the #6459 mechanism one layer up, on the grid's own authoring surface #6639 all restate "declares no title" / "compiles only because of the index signature"; none checked the interface. The claim was load-bearing — it framed the key as the finding(plugin-grid): ObjectGrid builds its data-table schema as const dataTableSchema: any, so the DataTableSchema it imports is never applied #6459 mechanism one layer up, when for this key the mechanism was ordinary mirror drift (the finding(types): the zod BaseSchema mirror still declares visible/disabled as boolean and ariaLabel as string, after the TS declarations widened #4605/FormFieldSchema.validation 的 zod 镜像(FieldConstraintsSchema)与 FieldValidationRules 形状完全不符:拒绝 TS 契约合法的对象形、放行渲染器从不读的扁平形 #5186 class), a different family with a different remedy and an existing ledger.
  2. The instrument class may have produced siblings. Whatever produced the "declares no title" reading in PR feat(plugin-grid): type the data-table schema slot ObjectGrid fills, shown able to fail (#6459) #6637's census plausibly conflated declaration faces (interface vs zod mirror vs published inputs), or scanned a face other than the one it named. Other cards out of the same census that assert "X declares no K" deserve the same per-claim verification before an implementer builds on them — finding(plugin-grid): ObjectGrid reads schema.title, which ObjectGridSchema does not declare — the #6459 mechanism one layer up, on the grid's own authoring surface #6639's dispatch caught this one only because premise verification is mandatory for the executing seat.
  3. A face-conflation taxonomy already exists and was not used. The repo distinguishes at least four declaration faces for a grid key (TS interface, zod mirror, published inputs/manifest, spec ComponentPropsMap), and title had a different status on each: declared-deprecated, unmirrored-ledgered, carve-out-by-ruling ([Decision] spec 17.0.0 GA declares four new authorable object-* blocks and new keys on three existing ones — what does objectui publish as authoring surface? #4648), and spec-declared respectively. A census claim that names one face while measuring another reads as true from every seat that checks a different face — which is how this one survived three reviews.

Suggested direction (not a ruling)

Whoever grades this: re-derive PR #6637's census claims of the form "interface declares no K" against the interface text at the census's own base commit, before any of its remaining cards are dispatched. The fix for the one measured instance is already landed via #6639 / PR #6869; nothing in this card blocks or reopens that work.

Refs: objectui#6639 (the measured instance — stays open/closed on its own PR, not via this card) · PR #6637 (census origin) · objectui#6459 (the mechanism the card borrowed) · objectui#6869 (the correction PR whose body carries the receipt).

Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions