Found while implementing #5351 (PR5478). Not claiming; observation class. Baseline objectui main @ 490f482.
The fact
packages/components/src/__tests__/skill-guide-data-table-binding.test.tsx is a doc-sameness gate: it lifts the fenced ```json blocks out of skills/objectui/guides/{data-integration,schema-expressions}.mdat run time and feeds them to the real `SchemaRenderer`, asserting the rows reach the screen.
Its docblock ends with an explicit scope disclaimer:
* The `columns` entries in these examples are deliberately untouched: their
* `{ name, label }` spelling is the separate open question on objectui#5120
* (the undeclared `col.name` / `col.label` alias at `data-table.tsx:776-777`),
* parked with the maintainer. This file pins the BINDING only, and stays true
* whichever way that one lands — nothing below asserts a column key spelling.
The last clause is not true of the code. The behaviour assertions are on cell text:
expect(bodyCells()).toEqual(['Ada Lovelace', 'ada@example.com', 'Grace Hopper', 'grace@example.com'])
Cell text can only render if the accessor resolves, and in these blocks the accessor resolves only through the col.name alias. So the file transitively pins that alias, and does not in fact stay true whichever way #5120 lands.
How it was measured
Retiring accessorKey: col.accessorKey || col.name at data-table.tsx turns this file red on 2 tests, one per guide, both with all four cell strings becoming "". Retiring the sibling header: col.header || col.label on the same lines leaves it 15/15 green — the header alias is genuinely invisible to it, exactly as the docblock claims for both.
So the disclaimer is half right: accurate for label, wrong for name.
Why it is worth a card rather than a silent fix
This is the coupling that made #5120's remaining step invisible when the family was ruled on. The ruling (2026-08-20) retires the col.name alias; the recorded discussion weighed the two skill guides as an instruction-corpus concern and no participant named the fact that a repo gate already pins those guides' bytes to renderer behaviour. Whoever takes #5120's remaining step will hit this test red and needs the docblock to describe what the assertions really depend on.
Not fixed in PR5478 on purpose: that PR holds the name alias precisely so this gate stays green, and rewriting the disclaimer while the dependency is still live would be editing the comment to match a state that has not happened yet. The right moment is the same commit that migrates the guides.
Recheck
sed -n '43,48p' packages/components/src/__tests__/skill-guide-data-table-binding.test.tsx
sed -n '170,185p' packages/components/src/__tests__/skill-guide-data-table-binding.test.tsx
grep -n -A8 '"type": "data-table"' skills/objectui/guides/data-integration.md
Grading
finding, not pm:queue. Related: #5120, #5351, #5126, #5337.
Found while implementing #5351 (PR5478). Not claiming; observation class. Baseline objectui
main@ 490f482.The fact
packages/components/src/__tests__/skill-guide-data-table-binding.test.tsxis a doc-sameness gate: it lifts the fenced ```json blocks out ofskills/objectui/guides/{data-integration,schema-expressions}.mdat run time and feeds them to the real `SchemaRenderer`, asserting the rows reach the screen.Its docblock ends with an explicit scope disclaimer:
The last clause is not true of the code. The behaviour assertions are on cell text:
Cell text can only render if the accessor resolves, and in these blocks the accessor resolves only through the
col.namealias. So the file transitively pins that alias, and does not in fact stay true whichever way #5120 lands.How it was measured
Retiring
accessorKey: col.accessorKey || col.nameatdata-table.tsxturns this file red on 2 tests, one per guide, both with all four cell strings becoming"". Retiring the siblingheader: col.header || col.labelon the same lines leaves it 15/15 green — the header alias is genuinely invisible to it, exactly as the docblock claims for both.So the disclaimer is half right: accurate for
label, wrong forname.Why it is worth a card rather than a silent fix
This is the coupling that made #5120's remaining step invisible when the family was ruled on. The ruling (2026-08-20) retires the
col.namealias; the recorded discussion weighed the two skill guides as an instruction-corpus concern and no participant named the fact that a repo gate already pins those guides' bytes to renderer behaviour. Whoever takes #5120's remaining step will hit this test red and needs the docblock to describe what the assertions really depend on.Not fixed in PR5478 on purpose: that PR holds the
namealias precisely so this gate stays green, and rewriting the disclaimer while the dependency is still live would be editing the comment to match a state that has not happened yet. The right moment is the same commit that migrates the guides.Recheck
Grading
finding, notpm:queue. Related: #5120, #5351, #5126, #5337.