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
useSettledSchema was extracted and published with ONE adopter — the convergence #6482 asked for is 1 of 4, and the gantt's ungated double fetch is still live #7225
Filed by the domain:ui execution seat (session session_012wwHa4aaFybxXrfmfHioDM). Surfaced by the objectui#7210 lane, which measured the gantt half; the convergence half is this seat's measurement. Filed unassigned.
The #7210 lane recommended reopening objectui#6482 rather than filing again, to avoid a fourth card on the same regime. I checked before acting on that, and the situation turned out different from what the recommendation assumed, so I am filing instead. Reasoning, so it can be overruled:
Its ask 1 was a decision — "extract a shared hook, or keep hand copies?" That decision was made and the hook shipped. Reopening implies it was not.
Its body is a five-week-old snapshot of a tree that has since moved — its four-row table no longer describes the code. objectui#7089 §1 warns about exactly this: read the type and the code, not the card. Reopening would put a stale table back into circulation as if current.
What is actually outstanding is narrower and different from what #6482 says, so it deserves its own scope.
Measured today, on origin/main
useSettledSchema exists and is published — packages/react/src/hooks/useSettledSchema.ts, exported through packages/react/src/hooks/index.ts.
It has exactly ONE non-test adopter. Counted as a file count (grep -rl … | wc -l, files not lines), excluding packages/react/ itself and all test paths:
non-test adopter files
1 — packages/plugin-tree/src/ObjectTree.tsx
Control that the probe discriminates: the same pattern finds packages/react/src/hooks/useSettledSchema.ts, its index.ts export, and its own test file. So the 1 is a reading, not a broken query.
⚠️ I got this wrong on the first attempt: my initial probe searched for useSettledObjectSchema, which is not the symbol's name, and returned zero adopters — a silent zero that read exactly like the alarming answer I was half expecting. It was caught only by running a control that also should have matched and did not. Same class as the rest of this repo's silent-zero catalogue.
So the convergence is 1 of 4.ObjectKanban, plugin-view/ObjectView and ObjectCalendar do not import the hook and still carry their own settled-schema shapes. The one migration that happened, ObjectTree, was the one that had an actual correctness defect (objectui#6481, the unkeyed latch) — so the hook was extracted to fix a bug and the deduplication it was named for did not follow.
And #6482's ask 2 is untouched for the gantt.packages/plugin-gantt/src/ObjectGantt.tsx still holds a local useState for the schema and still lists objectSchema in its fetch-effect dependency list, which is the ungated "two queries, the first unexpanded" regime #6482 tabulated. The #7210 lane re-confirmed it by measurement: two unbounded queries per gantt load, before and after the object-schema read settles, the first carrying no $expand and therefore a wasted round trip.
Why a published export with one adopter is its own problem
This is ADR-0049 territory from an unusual direction. @object-ui/react is a published package, so the hook is a permanent public-surface commitment — which #6482's own body flagged in advance:
A helper would have to live in @object-ui/react … which makes it a new export on a published package — a permanent public-surface commitment. All four plugins already depend on @object-ui/react, so it is feasible; the question is whether it is wanted.
The question was answered "yes", the surface was widened, and three of the four intended callers were left as they were. That is the worst of both: the duplication remains and the API is now owed compatibility forever.
⛔ Note that gating the gantt is not the same as capping it. objectui#7210 half 2 — whether a non-grid view may fetch unbounded — is an open maintainer decision, and nothing here should pre-empt it. This card is about the duplicate query, not the unbounded one.
Related: objectui#6482 (closed; the origin) · PR #6690 (the extraction) · objectui#6481 (the defect that drove it) · objectui#7210 (where the gantt half was re-measured) · objectui#7222 (the gantt renderer's prop-forwarding asymmetry, same component).
Filed by the
domain:uiexecution seat (sessionsession_012wwHa4aaFybxXrfmfHioDM). Surfaced by the objectui#7210 lane, which measured the gantt half; the convergence half is this seat's measurement. Filed unassigned.Why this is a new card and not a reopen of #6482
The #7210 lane recommended reopening objectui#6482 rather than filing again, to avoid a fourth card on the same regime. I checked before acting on that, and the situation turned out different from what the recommendation assumed, so I am filing instead. Reasoning, so it can be overruled:
$expandgate is now four hand copies, and four more views resolve the schema without gating on it #6482 is closed ascompleted, by PR feat(react): extract the settled-schema resolution hook #6690 (feat(react): extract the settled-schema resolution hook), assigned to and closed by another seat.What is actually outstanding is narrower and different from what #6482 says, so it deserves its own scope.
Measured today, on
origin/mainuseSettledSchemaexists and is published —packages/react/src/hooks/useSettledSchema.ts, exported throughpackages/react/src/hooks/index.ts.It has exactly ONE non-test adopter. Counted as a file count (
grep -rl … | wc -l, files not lines), excludingpackages/react/itself and all test paths:packages/plugin-tree/src/ObjectTree.tsxControl that the probe discriminates: the same pattern finds
packages/react/src/hooks/useSettledSchema.ts, itsindex.tsexport, and its own test file. So the 1 is a reading, not a broken query.useSettledObjectSchema, which is not the symbol's name, and returned zero adopters — a silent zero that read exactly like the alarming answer I was half expecting. It was caught only by running a control that also should have matched and did not. Same class as the rest of this repo's silent-zero catalogue.So the convergence is 1 of 4.
ObjectKanban,plugin-view/ObjectViewandObjectCalendardo not import the hook and still carry their own settled-schema shapes. The one migration that happened,ObjectTree, was the one that had an actual correctness defect (objectui#6481, the unkeyed latch) — so the hook was extracted to fix a bug and the deduplication it was named for did not follow.And #6482's ask 2 is untouched for the gantt.
packages/plugin-gantt/src/ObjectGantt.tsxstill holds a localuseStatefor the schema and still listsobjectSchemain its fetch-effect dependency list, which is the ungated "two queries, the first unexpanded" regime #6482 tabulated. The #7210 lane re-confirmed it by measurement: two unbounded queries per gantt load, before and after the object-schema read settles, the first carrying no$expandand therefore a wasted round trip.Why a published export with one adopter is its own problem
This is ADR-0049 territory from an unusual direction.
@object-ui/reactis a published package, so the hook is a permanent public-surface commitment — which #6482's own body flagged in advance:The question was answered "yes", the surface was widened, and three of the four intended callers were left as they were. That is the worst of both: the duplication remains and the API is now owed compatibility forever.
What this card asks for
ObjectKanban,plugin-view/ObjectView,ObjectCalendar), or decide deliberately that they should not migrate and record why — finding(ui): the schema-settled$expandgate is now four hand copies, and four more views resolve the schema without gating on it #6482 already documented a real obstacle, thatObjectCalendarkeys ondataConfig.object ?? schema.objectNameand gates one provider branch rather than the whole effect. If that obstacle is what stopped the migration, saying so closes the question honestly.$expandgate is now four hand copies, and four more views resolve the schema without gating on it #6482's own finding, whether gating is worth it is a per-component measurement, not an inference — it measured three latency profiles and found the cost differs by component (a discarded round trip in one case, a visible three-step paint in another). Do not gate the gantt because the table says so; measure it.⛔ Note that gating the gantt is not the same as capping it. objectui#7210 half 2 — whether a non-grid view may fetch unbounded — is an open maintainer decision, and nothing here should pre-empt it. This card is about the duplicate query, not the unbounded one.
Related: objectui#6482 (closed; the origin) · PR #6690 (the extraction) · objectui#6481 (the defect that drove it) · objectui#7210 (where the gantt half was re-measured) · objectui#7222 (the gantt renderer's prop-forwarding asymmetry, same component).