The defect
packages/plugin-tree/src/ObjectTree.tsx:94-105 explains, as a measured reason, why the file spells its node type with Extract instead of a named import. Read on origin/main 72f55c9ec1 at 2026-09-17T11:38Z, verbatim:
⚠️ Extract off ObjectQLComponentSchema, and NOT a named import, for a
measured reason: ObjectTreeSchema is declared in objectql.ts and re-exported
from the ZOD barrel (objectui#8784 / PR #8777 repaired that half), but the TS
barrel's export type { … } from './objectql.js' block omits it, while its nine
siblings — … — are all on it.
So the name cannot be imported today. ⛔ That omission is NOT repaired here: it
is a published-surface addition on another package and belongs to whoever files
it.
objectui#9550 is "whoever files it", and PR objectui#9685 is the repair. That PR adds ObjectTreeSchema to exactly that export type { … } from './objectql.js' clause in packages/types/src/index.ts (+1/-0). ⇒ on merge, this paragraph asserts the opposite of the tree.
Which claims go false — read the PARAGRAPH, not the line
Three, and ⛔ correcting any one alone still leaves it asserting the same wrong thing (the objectui#8617 shape):
| claim |
after objectui#9685 |
| the TS barrel's re-export block "omits it" |
false — it is on that clause |
| "its nine siblings … are all on it" (framed as: they are on it, this one is not) |
the framing inverts; the barrel now carries ten of the eleven node schemas, this name among them |
| "So the name cannot be imported today" |
false — that is precisely what objectui#9685 makes possible |
⭐ The paragraph's own stated purpose — justifying the Extract idiom by a measured absence — is what expires. It does not merely go stale; it argues for a workaround whose reason has been removed.
What stays TRUE and ⛔ must NOT be deleted with it
The second paragraph (:106-109) warns against spelling the local alias ObjectTreeSchema, citing the two-layers-one-word trap objectui#8651 recorded when a local CalendarSchema shadowed the published one. ⭐ That warning becomes more load-bearing once the published name is importable, not less. ⛔ A repair that deletes the whole docblock loses it.
The repair shape
Replace the module-local Extract alias with a named import of ObjectTreeSchema from @object-ui/types, delete the now-false justification paragraph, and keep the shadowing warning. ⇒ the Extract idiom in this file exists only because of the gap objectui#9550 closes.
⚠️ Window — ⛔ do NOT dispatch this before objectui#9685 merges
Before that merge the paragraph is true, and a dev sent here would read a correct sentence and find nothing — the dead-instrument shape. ⇒ this card becomes actionable at the merge of objectui#9685, ⛔ not on filing.
Provenance and scope
Surfaced by the os-dev seat delivering objectui#9550 as an out-of-scope finding (a dev does not file cards), and re-verified here against origin/main by the domain:spec @ objectui execution seat — the quotation and line numbers above are this seat's own reading of the tree, ⛔ not relayed. ⛔ The file is outside objectui#9550's declared file surface, which is why it was not repaired there.
⛔ Filed as a finding only: grading, domain:* and routing are the triage seat's. ℹ️ The fix lands in packages/plugin-tree, which is not this seat's lane.
Dedup terms
ObjectTreeSchema · plugin-tree · ObjectTree.tsx · Extract idiom · root barrel omits
Filed by the domain:spec @ objectui execution seat, session session_01UanLVj6xvbS6puBCewLr8L, R1.
Generated by Claude Code
The defect
packages/plugin-tree/src/ObjectTree.tsx:94-105explains, as a measured reason, why the file spells its node type withExtractinstead of a named import. Read onorigin/main72f55c9ec1at 2026-09-17T11:38Z, verbatim:objectui#9550 is "whoever files it", and PR objectui#9685 is the repair. That PR adds
ObjectTreeSchemato exactly thatexport type { … } from './objectql.js'clause inpackages/types/src/index.ts(+1/-0). ⇒ on merge, this paragraph asserts the opposite of the tree.Which claims go false — read the PARAGRAPH, not the line
Three, and ⛔ correcting any one alone still leaves it asserting the same wrong thing (the objectui#8617 shape):
⭐ The paragraph's own stated purpose — justifying the
Extractidiom by a measured absence — is what expires. It does not merely go stale; it argues for a workaround whose reason has been removed.What stays TRUE and ⛔ must NOT be deleted with it
The second paragraph (
:106-109) warns against spelling the local aliasObjectTreeSchema, citing the two-layers-one-word trap objectui#8651 recorded when a localCalendarSchemashadowed the published one. ⭐ That warning becomes more load-bearing once the published name is importable, not less. ⛔ A repair that deletes the whole docblock loses it.The repair shape
Replace the module-local
Extractalias with a named import ofObjectTreeSchemafrom@object-ui/types, delete the now-false justification paragraph, and keep the shadowing warning. ⇒ theExtractidiom in this file exists only because of the gap objectui#9550 closes.Before that merge the paragraph is true, and a dev sent here would read a correct sentence and find nothing — the dead-instrument shape. ⇒ this card becomes actionable at the merge of objectui#9685, ⛔ not on filing.
Provenance and scope
Surfaced by the
os-devseat delivering objectui#9550 as an out-of-scope finding (a dev does not file cards), and re-verified here againstorigin/mainby thedomain:spec@ objectui execution seat — the quotation and line numbers above are this seat's own reading of the tree, ⛔ not relayed. ⛔ The file is outside objectui#9550's declared file surface, which is why it was not repaired there.⛔ Filed as a
findingonly: grading,domain:*and routing are the triage seat's. ℹ️ The fix lands inpackages/plugin-tree, which is not this seat's lane.Dedup terms
ObjectTreeSchema·plugin-tree·ObjectTree.tsx·Extract idiom·root barrel omitsFiled by the
domain:spec@ objectui execution seat, sessionsession_01UanLVj6xvbS6puBCewLr8L, R1.Generated by Claude Code