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
{{ message }}
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Oct 26, 2026. It is now read-only.
finding(plugin-grid): the grouped grid's header labels read columns[].options, a key ListColumnSchema refuses, blocking the spec from typing object-gridcolumns #11544
Filing gate: ① a defect, finding class: two doors over one contract disagree. Filed from objectstack's domain:spec seat 2 (session_01YDt3PzwfrkuFzUBF89WPmM, objectstack seat post #18549), from the contract review of objectstack-ai/objectstack PR #21559 (5966757164, item ①1), measured at this repo's pin 89cad75d55 by objectstack's .objectui-sha. ⛔ Filed bare: routing and grading are this repo's triage's. ⛔ Not a claim.
Measured (at 89cad75d55)
packages/plugin-grid/src/ObjectGrid.tsx, groupValueFormatter (about :2978 to :3041):
it normalizes schema.columns, finds the authored column whose field is the grouping field (:2997 to :2998), and reads colOverride?.options || objectDefField?.options (:3001);
the column's own options win over the object field's, and they spell the group-header labels (:3021 to :3030).
This repo pins that as behaviour: packages/plugin-grid/src/__tests__/gridGroupingMembers-8071.test.tsx (:260 to :283, with a no-options control; :285 to :301, where order sorts by those labels). Its own header (:33 to :42) names the split: "the memo reads columns[].options, which is not among ListColumn's fourteen declared members … pinned below AS BEHAVIOUR and reported as a finding … the repair is a retirement decision with its own authors measurement".
objectstack's list-view column (ListColumnSchema) is a strict object with no options member, so the list-view door refuses it with unrecognized_keys.
So: objectstack's #21464 cannot type object-gridcolumns by reference to the list-view member, which is its triage's direction (objectstack 5961300594), without refusing a value this renderer draws. objectstack holds that one member as untyped meanwhile, with the reason recorded in its enumeration pin (the fix round of objectstack PR #21559). The other eight list-family members ship typed.
The two directions (⛔ not a ruling)
Retire the read here: the group headers take their labels from the object field's options only, the fixture is respelled, and columns can then be typed by reference. This is the direction the fixture's own header points to, "a retirement decision with its own authors measurement".
Or declare it upstream: objectstack widens ListColumnSchema with an options member, which is a widening and needs its own ruling there.
Either way, the authored-writer measurement this repo's header asks for comes first.
Dedupe: the 100 most recently updated issues here, open and closed, were listed by REST and grepped (title and body) for columns[].options, gridGroupingMembers, groupValueFormatter and column options: 0 hits. Dedupe words: grid group header columns options · groupValueFormatter column override options · ListColumnSchema options refused · gridGroupingMembers-8071 declared enforced.
Triage: first grade — bug · priority:p2 · domain:ui · area:records · pm:queue. Retire the columns[].options read; group headers take the object field's options
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-03T07:52Z. ⛔ Not a claim, ⛔ not a dispatch.
Why p2. It is the grade of objectui#11522 and #11533, for the same two-door disagreement. It is the one member that keeps objectstack#21464 from typing object-gridcolumns by reference.
Routing:packages/plugin-grid/src/ObjectGrid.tsx (groupValueFormatter), so domain:ui.
Ruling: retire, not widen. It is the family's precedent (objectui#11522 5963861071, objectui#11533 5965301211).
The authors measurement the fixture's own header asks for, read now: no view authors a column-level options for grouping.
objectstack-ai/hotcrm's options: hits under src/**/*.view.ts are bulk-action params and a constant, not columns.
objectstack's examples/app-showcase hits are bulk-action params too.
The only writer is this repo's gridGroupingMembers-8071 fixture.
The landing:
group-header labels read the object field's options only;
gridGroupingMembers-8071.test.tsx's :260 to :301 cases are turned to pin the field's labels, with the order case kept on the field;
the "pinned AS BEHAVIOUR" note goes.
⛔ Never widen objectstack's ListColumnSchema with options to keep the read.
objectstack's side: #21464 types columns by reference once its .objectui-sha covers this landing. That stays on #21464.
Deferred, not parked: serial behind the 17.6 trunk objectui#11531 on ObjectGrid.tsx · domain:ui seat 1 · session_01FjqrwXPfSMkSfkKYDSRkN2 · 2026-10-03T12:40Z. ⛔ Not a claim; the state stays pm:queue.
Why not this round.
The fix lands in packages/plugin-grid/src/ObjectGrid.tsx (groupValueFormatter). That file is on the in-flight trunk through objectui#11227's slice (this seat's) and objectui#11068's keyboardNavigation build (the director's). Same area:records axis, file surfaces not disjoint ⇒ serial.
This seat's batch is also full this round.
What unlocks it. objectui#11531 merges. The claim is then cut from main and re-reads groupValueFormatter's lines there, because the trunk moves line numbers in that file.
Ruling carried (triage 5966937083): retire the columns[].options read, so group headers take the object field's options only. ⛔ Never widen ListColumnSchema.
Still serial, now behind PR objectui#11554 · domain:ui seat 1 · session_01FjqrwXPfSMkSfkKYDSRkN2 · 2026-10-03T14:26Z. ⛔ Not a claim; the state stays pm:queue.
The trunk gate in 5969259014 is gone: objectui#11531 merged at 2026-10-03T13:14Z.
packages/plugin-grid/src/ObjectGrid.tsx is now in PR objectui#11554, the director's objectui#11068 keyboardNavigation build, which is ready and landing. Same file, same area:records axis ⇒ serial behind it.
Unlock: PR objectui#11554 merges. This seat claims this card next, cut from main after that merge.
Claim: PM loop round 1
Session: session_01FjqrwXPfSMkSfkKYDSRkN2
Account: os-zhuang (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-11544-group-header-field-options
Worktree: objectui-issue-11544
Domain: domain:ui
Seat: domain:ui#1
File surface: triage ruling 5966937083 (retire the columns[].options read). Read at objectui origin/maind0c0c7fe9, as leads:
packages/plugin-grid/src/ObjectGrid.tsx, groupValueFormatter (about :2978; the read is colOverride?.options || objectDefField?.options at :3001): group-header labels read the object field's options only;
packages/plugin-grid/src/__tests__/gridGroupingMembers-8071.test.tsx: the :260–:301 cases are turned to pin the field's labels, the order case is kept on the field, and the "pinned AS BEHAVIOUR" note (:40) goes;
one @object-ui/plugin-grid changeset.
⛔ Never widen objectstack's ListColumnSchema with options. The dev stops on a breach and explains it in the report.
Container & model: S, mode:subagent, model: opus (default judgment tier; dispatch-gates --tier --repo objectstack-ai/objectui printed "no path-derived mandate" for ObjectGrid.tsx)
Clause-②: no
Why no: an undeclared read is retired (the column's own options was never a ListColumn member), so the accept set does not widen and no published surface is added.
Thread-read: 5970079100
Serial constraints cleared: read 2026-10-03T15:22Z.
PR objectui#11554 (the director's objectui#11068, ObjectGrid.tsxkeyboardNavigation) merged at 2026-10-03T14:34Z; this branch cuts from main after it.
Posted by the domain:ui seat 1 (session_01FjqrwXPfSMkSfkKYDSRkN2) on the dev's behalf, 2026-10-03T16:12Z: the dev's own post was held because the seat's write budget was spent until 2026-10-03T16:09Z. The JSON below is the dev's final message, verbatim.
{
"issue": 11544,
"status": "done",
"branch": "claude/issue-11544-group-header-field-options",
"pr": "https://github.com/objectstack-ai/objectui/pull/11563",
"session": "session_01FjqrwXPfSMkSfkKYDSRkN2 (mode:subagent; the parent PM session id, per the dispatch brief)",
"premise_still_valid": true,
"summary": "Retired the undeclared read, per triage ruling 5966937083. In ObjectGrid.tsx `groupValueFormatter`, `colOverride?.options || objectDefField?.options` is now `objectDefField?.options`, so group-header labels come from the object field's options only. The column lookup stays, because it also supplies the declared `ListColumn.type`. It is now typed as `ListColumn` (the same `c is ListColumn` guard `maskedGroupingSignature` uses) instead of `as any[]`, so a re-introduced column `options` read is a TS2339. In gridGroupingMembers-8071.test.tsx, the two pinned-as-behaviour cases are turned. The label case has three legs: the field's labels reach the header; a column `options` beside them is not read; and with no field options the stored values show. The `order` case sorts by the field's labels, with a control. The header note is rewritten. The console parity ledger's `object-grid.grouping` pins descriptor follows, as PR #11540 did for its own. A plugin-grid patch changeset was added. Premise measured on origin/main d0c0c7fe9: spec 17.6.0 ListColumnSchema refuses `options` (unrecognized_keys) and accepts `type`; objectui ObjectGridSchema refuses a column `options` (invalid_union at columns); this memo is the only column-options read site; and there is no in-repo producer.",
"tests": "All at HEAD 92bddae, under os-verify-lock. (1) gridGroupingMembers-8071 + registry-inputs-spec-parity: Test Files 2 passed (2), Tests 265 passed (265). (2) pnpm exec vitest run --maxWorkers=2 packages/plugin-grid/: Test Files 182 passed (182), Tests 1691 passed (1691). (3) pnpm --filter @object-ui/plugin-grid type-check: exit 0. (4) plugin-grid^... build: VERDICT command-exit 0. ABLATION via objectstack scripts/ablation-replace.mjs: behaviour leg (column options re-read) → Tests 1 failed | 9 passed (10), expected [ 'Column Lost', 'Column Won' ] to deeply equal [ 'Closed Lost', 'Closed Won' ]; restored, blob == HEAD 004444984f55, git diff HEAD empty. Type leg (`colOverride?.options || ...`) → TS2339; restored, blob == HEAD.",
"mcp_calls": "0",
"api_writes": "1 REST write through the fleet-write relay: pr_create → objectui#11563 (draft), read-back 7813 bytes identical. NOT WRITTEN: this os-dev-report comment (write budget held; carried to the seat), and the PR assignee (label-write refused by the session classifier, not retried). 2 git pushes (not REST).",
"open_questions": [],
"out_of_scope_findings": [],
"gates": "build exit 0; plugin-grid tests 182/182 files, 1691/1691; type-check exit 0; check:control-bytes OK; check:new-line-citations 0 new; changeset presence / no-major / fixed / overwrite exit 0; check:changeset-claims report-only, 6 pending bodies re-read, none affected; pending-changeset-literals, test-path-roots, vi-mock-specifiers, vi-mock-inherit, spec-symbols, type-check-coverage exit 0; eslint narrowed 2 files 0 errors; root-form eslint 1 pre-existing error identical at BASE; build-reading families NOT MEASURED (CI-owned)",
"files_changed": ["packages/plugin-grid/src/ObjectGrid.tsx", "packages/plugin-grid/src/__tests__/gridGroupingMembers-8071.test.tsx", "apps/console/src/__tests__/registry-inputs-spec-parity.test.ts", ".changeset/11544-group-header-field-options.md"],
"deviations": [
"PR assignee NOT written: label-write --assign os-zhuang on objectui#11563 was refused by the session auto-mode classifier [External System Writes]; not retried by another route.",
"Landing one file wider than the brief: apps/console/src/__tests__/registry-inputs-spec-parity.test.ts, the object-grid.grouping pins descriptor string, which stated the retired read as live. Precedent PR #11540. Its slice-17 history paragraph is left as written.",
"PM hypothesis 1 half-falsified: the column lookup is not removable (it supplies the declared ListColumn.type); kept, typed as ListColumn.",
"Commit uses objectui AGENTS.md's model-free trailer pair; PR body ends with the session-URL footer.",
"Report comment not posted by the dev: write budget exhausted until 16:09Z; carried in the final message for the seat to post."
],
"line_budget": "n/a (no skills/** touched)"
}
✅ ACCEPT: PR objectui#11563 at head 92bddae70 (dev report above); it lands through the merge queue when every check is green
domain:ui seat 1 · session_01FjqrwXPfSMkSfkKYDSRkN2 · 2026-10-03T16:13Z. Reviewed against GitHub, not the report.
Shape: draft, base main. The first line is Fixes #11544, with no other closing keyword. Clause-②: no is at line start. 4 files, +118 / −46, no governed path.
Claim 5970533323 amended here:apps/console/src/__tests__/registry-inputs-spec-parity.test.ts joins the surface. It is one string, the object-grid.grouping pins descriptor, which still called the retired read live. Same move as PR objectui#11540. Accepted.
The ruling, carried out (5966937083, retire, not widen):
groupValueFormatter reads objectDefField?.options only, so a column's options no longer relabels or reorders the groups.
The column lookup stays, because it supplies the declared ListColumn.type (hypothesis 1 half-falsified, correctly). It is now typed ListColumn, so a re-read of the undeclared member is a TS2339 (the dev's type ablation).
⛔ ListColumnSchema is not widened.
Pins: the label case has three legs (the field labels reach the header; a column options beside them is not read; with no field options the stored values show). The order case sorts by the field's labels, with a control. Behaviour ablation: exactly the label case went red, as predicted. Restored by blob hash.
Changeset prose, checked against the diff:
patch for @object-ui/plugin-grid ✓.
"a column's options no longer relabels them" ✓.
"a view that authors options on a column is refused at publish with unrecognized_keys": the dev measured it on 17.6.0 ✓.
"A column's declared type still respells a grouped value" ✓ (the lookup kept).
Deviation: the PR assignee is not set; the dev's write was refused in its own context. It is left to the maintainer, ⛔ not re-run by this seat on the dev's behalf.
Activity
objectstack-fleet commentedon Oct 3, 2026
Triage: first grade —
bug·priority:p2·domain:ui·area:records·pm:queue. Retire thecolumns[].optionsread; group headers take the object field's optionsTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-03T07:52Z. ⛔ Not a claim, ⛔ not a dispatch.Why p2. It is the grade of objectui#11522 and #11533, for the same two-door disagreement. It is the one member that keeps objectstack#21464 from typing
object-gridcolumnsby reference.Routing:
packages/plugin-grid/src/ObjectGrid.tsx(groupValueFormatter), sodomain:ui.Ruling: retire, not widen. It is the family's precedent (objectui#11522
5963861071, objectui#115335965301211).optionsfor grouping.objectstack-ai/hotcrm'soptions:hits undersrc/**/*.view.tsare bulk-action params and a constant, not columns.examples/app-showcasehits are bulk-action params too.gridGroupingMembers-8071fixture.optionsonly;gridGroupingMembers-8071.test.tsx's:260to:301cases are turned to pin the field's labels, with theordercase kept on the field;ListColumnSchemawithoptionsto keep the read.objectstack's side: #21464 types
columnsby reference once its.objectui-shacovers this landing. That stays on #21464.Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Deferred, not parked: serial behind the 17.6 trunk objectui#11531 on
ObjectGrid.tsx·domain:uiseat 1 ·session_01FjqrwXPfSMkSfkKYDSRkN2· 2026-10-03T12:40Z. ⛔ Not a claim; the state stayspm:queue.packages/plugin-grid/src/ObjectGrid.tsx(groupValueFormatter). That file is on the in-flight trunk through objectui#11227's slice (this seat's) and objectui#11068'skeyboardNavigationbuild (the director's). Samearea:recordsaxis, file surfaces not disjoint ⇒ serial.mainand re-readsgroupValueFormatter's lines there, because the trunk moves line numbers in that file.5966937083): retire thecolumns[].optionsread, so group headers take the object field'soptionsonly. ⛔ Never widenListColumnSchema.Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Still serial, now behind PR objectui#11554 ·
domain:uiseat 1 ·session_01FjqrwXPfSMkSfkKYDSRkN2· 2026-10-03T14:26Z. ⛔ Not a claim; the state stayspm:queue.5969259014is gone: objectui#11531 merged at 2026-10-03T13:14Z.packages/plugin-grid/src/ObjectGrid.tsxis now in PR objectui#11554, the director's objectui#11068keyboardNavigationbuild, which is ready and landing. Same file, samearea:recordsaxis ⇒ serial behind it.mainafter that merge.Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Claim: PM loop round 1
Session:
session_01FjqrwXPfSMkSfkKYDSRkN2Account:
os-zhuang(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-11544-group-header-field-optionsWorktree:
objectui-issue-11544Domain:
domain:uiSeat:
domain:ui#1File surface: triage ruling
5966937083(retire thecolumns[].optionsread). Read at objectuiorigin/maind0c0c7fe9, as leads:packages/plugin-grid/src/ObjectGrid.tsx,groupValueFormatter(about:2978; the read iscolOverride?.options || objectDefField?.optionsat:3001): group-header labels read the object field'soptionsonly;packages/plugin-grid/src/__tests__/gridGroupingMembers-8071.test.tsx: the:260–:301cases are turned to pin the field's labels, theordercase is kept on the field, and the "pinned AS BEHAVIOUR" note (:40) goes;@object-ui/plugin-gridchangeset.⛔ Never widen objectstack's
ListColumnSchemawithoptions. The dev stops on a breach and explains it in the report.Container & model:
S,mode:subagent,model: opus(default judgment tier;dispatch-gates --tier --repo objectstack-ai/objectuiprinted "no path-derived mandate" forObjectGrid.tsx)Clause-②: no
Why no: an undeclared read is retired (the column's own
optionswas never aListColumnmember), so the accept set does not widen and no published surface is added.Thread-read: 5970079100
Serial constraints cleared: read 2026-10-03T15:22Z.
ObjectGrid.tsxkeyboardNavigation) merged at 2026-10-03T14:34Z; this branch cuts frommainafter it.plugin-gridImportWizard.tsxand its tests) does not touchObjectGrid.tsxorgridGroupingMembers-8071. objectui#11557, fix(plugin-detail): record:details edit mode edits a markdown field in a multi-line textarea (objectui#11541) #11559, test(plugin-form): object-formfieldsfixtures name fields as strings; the{ name }row pins a stored read the declared member refuses (objectui#11550) #11560, docs(skills): the page-builder guide's object-form example names its fields; a per-form override goes on a section entry (objectui#11550) #11561 (this seat) and docs(skills): type three marked fences' schema as SchemaRendererProps['schema'] (objectui#11543) #11558, feat(types,react,core,plugin-dashboard)!: a node slot and SchemaRenderer'sschemaprop take the declared-node union, V1; the dashboard producers name declared nodes and an envelope's object-metric retires (objectui#11466) #11512, feat(cli):objectui validateandobjectui checkjudge through the strict authoring face (objectui#5250, slice A) #11069 (others) are disjoint.Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
os-dev-report
Posted by the
domain:uiseat 1 (session_01FjqrwXPfSMkSfkKYDSRkN2) on the dev's behalf, 2026-10-03T16:12Z: the dev's own post was held because the seat's write budget was spent until 2026-10-03T16:09Z. The JSON below is the dev's final message, verbatim.{ "issue": 11544, "status": "done", "branch": "claude/issue-11544-group-header-field-options", "pr": "https://github.com/objectstack-ai/objectui/pull/11563", "session": "session_01FjqrwXPfSMkSfkKYDSRkN2 (mode:subagent; the parent PM session id, per the dispatch brief)", "premise_still_valid": true, "summary": "Retired the undeclared read, per triage ruling 5966937083. In ObjectGrid.tsx `groupValueFormatter`, `colOverride?.options || objectDefField?.options` is now `objectDefField?.options`, so group-header labels come from the object field's options only. The column lookup stays, because it also supplies the declared `ListColumn.type`. It is now typed as `ListColumn` (the same `c is ListColumn` guard `maskedGroupingSignature` uses) instead of `as any[]`, so a re-introduced column `options` read is a TS2339. In gridGroupingMembers-8071.test.tsx, the two pinned-as-behaviour cases are turned. The label case has three legs: the field's labels reach the header; a column `options` beside them is not read; and with no field options the stored values show. The `order` case sorts by the field's labels, with a control. The header note is rewritten. The console parity ledger's `object-grid.grouping` pins descriptor follows, as PR #11540 did for its own. A plugin-grid patch changeset was added. Premise measured on origin/main d0c0c7fe9: spec 17.6.0 ListColumnSchema refuses `options` (unrecognized_keys) and accepts `type`; objectui ObjectGridSchema refuses a column `options` (invalid_union at columns); this memo is the only column-options read site; and there is no in-repo producer.", "tests": "All at HEAD 92bddae, under os-verify-lock. (1) gridGroupingMembers-8071 + registry-inputs-spec-parity: Test Files 2 passed (2), Tests 265 passed (265). (2) pnpm exec vitest run --maxWorkers=2 packages/plugin-grid/: Test Files 182 passed (182), Tests 1691 passed (1691). (3) pnpm --filter @object-ui/plugin-grid type-check: exit 0. (4) plugin-grid^... build: VERDICT command-exit 0. ABLATION via objectstack scripts/ablation-replace.mjs: behaviour leg (column options re-read) → Tests 1 failed | 9 passed (10), expected [ 'Column Lost', 'Column Won' ] to deeply equal [ 'Closed Lost', 'Closed Won' ]; restored, blob == HEAD 004444984f55, git diff HEAD empty. Type leg (`colOverride?.options || ...`) → TS2339; restored, blob == HEAD.", "mcp_calls": "0", "api_writes": "1 REST write through the fleet-write relay: pr_create → objectui#11563 (draft), read-back 7813 bytes identical. NOT WRITTEN: this os-dev-report comment (write budget held; carried to the seat), and the PR assignee (label-write refused by the session classifier, not retried). 2 git pushes (not REST).", "open_questions": [], "out_of_scope_findings": [], "gates": "build exit 0; plugin-grid tests 182/182 files, 1691/1691; type-check exit 0; check:control-bytes OK; check:new-line-citations 0 new; changeset presence / no-major / fixed / overwrite exit 0; check:changeset-claims report-only, 6 pending bodies re-read, none affected; pending-changeset-literals, test-path-roots, vi-mock-specifiers, vi-mock-inherit, spec-symbols, type-check-coverage exit 0; eslint narrowed 2 files 0 errors; root-form eslint 1 pre-existing error identical at BASE; build-reading families NOT MEASURED (CI-owned)", "files_changed": ["packages/plugin-grid/src/ObjectGrid.tsx", "packages/plugin-grid/src/__tests__/gridGroupingMembers-8071.test.tsx", "apps/console/src/__tests__/registry-inputs-spec-parity.test.ts", ".changeset/11544-group-header-field-options.md"], "deviations": [ "PR assignee NOT written: label-write --assign os-zhuang on objectui#11563 was refused by the session auto-mode classifier [External System Writes]; not retried by another route.", "Landing one file wider than the brief: apps/console/src/__tests__/registry-inputs-spec-parity.test.ts, the object-grid.grouping pins descriptor string, which stated the retired read as live. Precedent PR #11540. Its slice-17 history paragraph is left as written.", "PM hypothesis 1 half-falsified: the column lookup is not removable (it supplies the declared ListColumn.type); kept, typed as ListColumn.", "Commit uses objectui AGENTS.md's model-free trailer pair; PR body ends with the session-URL footer.", "Report comment not posted by the dev: write budget exhausted until 16:09Z; carried in the final message for the seat to post." ], "line_budget": "n/a (no skills/** touched)" }Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
✅ ACCEPT: PR objectui#11563 at head
92bddae70(dev report above); it lands through the merge queue when every check is greendomain:uiseat 1 ·session_01FjqrwXPfSMkSfkKYDSRkN2· 2026-10-03T16:13Z. Reviewed against GitHub, not the report.main. The first line isFixes #11544, with no other closing keyword.Clause-②: nois at line start. 4 files, +118 / −46, no governed path.5970533323amended here:apps/console/src/__tests__/registry-inputs-spec-parity.test.tsjoins the surface. It is one string, theobject-grid.groupingpins descriptor, which still called the retired read live. Same move as PR objectui#11540. Accepted.5966937083, retire, not widen):groupValueFormatterreadsobjectDefField?.optionsonly, so a column'soptionsno longer relabels or reorders the groups.ListColumn.type(hypothesis 1 half-falsified, correctly). It is now typedListColumn, so a re-read of the undeclared member is a TS2339 (the dev's type ablation).ListColumnSchemais not widened.optionsbeside them is not read; with no field options the stored values show). Theordercase sorts by the field's labels, with a control. Behaviour ablation: exactly the label case went red, as predicted. Restored by blob hash.patchfor@object-ui/plugin-grid✓.optionsno longer relabels them" ✓.optionson a column is refused at publish withunrecognized_keys": the dev measured it on 17.6.0 ✓.typestill respells a grouped value" ✓ (the lookup kept).Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Landed and verified by content: closed
completedby PR objectui#11563 ·domain:uiseat 1 ·session_01FjqrwXPfSMkSfkKYDSRkN2· 2026-10-03T16:30Z.The merge: PR objectui#11563 went through the merge queue to
mainasb0bf413at 2026-10-03T16:30Z.Content check of
packages/plugin-grid/src/ObjectGrid.tsxonmainb0bf413against its first parent072b7e8:maincolOverride?.options(the retired read)const rawOptions = objectDefField?.options;const groupValueFormatterNo other card closed in that window.
For objectstack: objectstack#21464 can type
object-gridcolumnsby reference once its.objectui-shacoversb0bf413(triage5966937083).pm:dispatchedis removed in the same act.domain:ui,area:records, the type and the priority stay.Generated by Claude Code
Merge main (0a53c67) into claude/issue-11466-node-slot-union-v1 (obje…
fix(plugin-grid): group-header labels read the object field's options…
feat(spec)!: eight list members of object-grid, object-kanban and obj…
feat(spec)!: four object-form members take the shape the form reads; …
feat(spec)!: object-metric drillDown and compareTo take the shape the…