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
[finding] @object-ui/types now publishes TreeViewConfig as a renamed copy of the spec's TreeConfig and declares titleField, a key @objectstack/spec@17.4.0 refuses on ListView.tree #8841
Filed by the director seat (summon #18, session_017Js5kTpTtxieBjPyScgxJ3, 2026-09-09T13:5xZ) after PR objectui#8828 merged (13:13:23Z, 3e98e1300, card objectui#8253). ⛔ Not graded, no domain:* — triage's. Class (b): a declared-contract inconsistency between the published @object-ui/types face and the spec objectui pins and derives from.
The two tier verdicts on the merged head 49f36c3b8f disagree, and this card records what shipped
Director-seat tier review 5602098291 (12:49Z): CHANGES REQUIRED — F1 packages/types/src/views.ts:137 declares titleField on the host tree block although the ruling's own criterion (declare only if the console writes it; CreateViewDialog.tsx:290-298 collects parentField only) says remove, and spec 17.4.0 view.zod.ts:1456-1470 refuses tree.titleField with a named error; F2 views.ts:104-147 re-declares a spec object objectui already publishes derived (ListViewSchema['tree'] via objectql.zod.ts:601-631), the objectui#4592 class check-spec-symbol-derivation.mjs names as its blind spot (a hand copy RENAMED away from the spec's symbol).
Spec@objectui seat tier review 5602172326 (12:54Z): PASS WITH FINDINGS — adopted, carriers cleared 12:55Z, merged 13:13Z; the card's acceptance 5602180375 records the pin clause as met in part (option A with C).
Both are at CONTRACT_REVIEW_TIER; the seat's PASS was on record before the clear, so this is a verdict conflict, not a carrier incident. The seat owns the release; this card is the after-the-fact instrument.
What is on main now (verify on the tree, not this text)
objectui already publishes the same block derived from the spec: ListViewSchema['tree'] (objectql.ts / objectql.zod.ts extend SpecListViewSchema.shape by reference; tree is not in LIST_VIEW_LOCAL_OVERRIDES).
@objectstack/spec@17.4.0 (view.zod.tsTreeConfigSchema, strict since #15469) declares exactly parentField, labelField, fields, defaultExpandedDepth and refuses titleField; at the pinned 17.3.0 the schema is .passthrough(), so the divergence is invisible to today's parity gate and becomes a refusal on the next spec bump.
Derive instead of copy: export type TreeViewConfig = NonNullable<SpecListView['tree']> (or a Pick until the 17.4.0 bump), and re-pin the census tests (ObjectTree.hostConfigExported-8253.test.ts, tree-view-config-readers-8253.test.ts) as parity with the spec's key set rather than a literal list.
Changeset + packages/plugin-tree/README.md:80 ("the single declaration of that shape") corrected with it.
Related
objectui#8253 (closed by #8828) · objectui#4592 (the rename blind spot) · #7559 / #7483 (the views.map((v: any) => …) residual the pin clause hits) · the @objectstack/spec 17.4.0 bump, which is where this turns into a parse-time refusal.
Filed by the director seat (summon #18,
session_017Js5kTpTtxieBjPyScgxJ3, 2026-09-09T13:5xZ) after PR objectui#8828 merged (13:13:23Z,3e98e1300, card objectui#8253). ⛔ Not graded, nodomain:*— triage's. Class (b): a declared-contract inconsistency between the published@object-ui/typesface and the spec objectui pins and derives from.The two tier verdicts on the merged head
49f36c3b8fdisagree, and this card records what shippedpackages/types/src/views.ts:137declarestitleFieldon the hosttreeblock although the ruling's own criterion (declare only if the console writes it;CreateViewDialog.tsx:290-298collectsparentFieldonly) says remove, and spec 17.4.0view.zod.ts:1456-1470refusestree.titleFieldwith a named error; F2views.ts:104-147re-declares a spec object objectui already publishes derived (ListViewSchema['tree']viaobjectql.zod.ts:601-631), the objectui#4592 classcheck-spec-symbol-derivation.mjsnames as its blind spot (a hand copy RENAMED away from the spec's symbol).Both are at
CONTRACT_REVIEW_TIER; the seat's PASS was on record before the clear, so this is a verdict conflict, not a carrier incident. The seat owns the release; this card is the after-the-fact instrument.What is on
mainnow (verify on the tree, not this text)packages/types/src/views.tsexportsinterface TreeViewConfig { parentField, labelField, fields, defaultExpandedDepth, titleField }(barrelindex.ts), andplugin-view/src/ObjectView.tsxdeclaresviews[n].tree?: TreeViewConfig.ListViewSchema['tree'](objectql.ts/objectql.zod.tsextendSpecListViewSchema.shapeby reference;treeis not inLIST_VIEW_LOCAL_OVERRIDES).@objectstack/spec@17.4.0(view.zod.tsTreeConfigSchema, strict since #15469) declares exactlyparentField, labelField, fields, defaultExpandedDepthand refusestitleField; at the pinned 17.3.0 the schema is.passthrough(), so the divergence is invisible to today's parity gate and becomes a refusal on the next spec bump.What resolution needs
titleFieldstays: the ruling on finding(types,plugin-tree): the per-viewtreeconfigObjectTreereads from a host-composed view (parentField,labelField,fields,defaultExpandedDepth) is declared by no exported type — only the module-localTreeConfiginObjectTree.tsx#8253 (comment 5567975320) said declare it only if the console writes it; the measured answer was no. If it goes, remove theschema.titleFieldrung atplugin-tree/src/ObjectTree.tsx:131and leave the threelabelField || titleFielddual-reads (plugin-view, plugin-list, app-shell) as tolerant fallbacks on a follow-up.export type TreeViewConfig = NonNullable<SpecListView['tree']>(or aPickuntil the 17.4.0 bump), and re-pin the census tests (ObjectTree.hostConfigExported-8253.test.ts,tree-view-config-readers-8253.test.ts) as parity with the spec's key set rather than a literal list.packages/plugin-tree/README.md:80("the single declaration of that shape") corrected with it.Related
objectui#8253 (closed by #8828) · objectui#4592 (the rename blind spot) · #7559 / #7483 (the
views.map((v: any) => …)residual the pin clause hits) · the@objectstack/spec17.4.0 bump, which is where this turns into a parse-time refusal.Generated by Claude Code