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 Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
finding(types,plugin-charts): ObjectChartSchema.xAxisField / yAxisFields / aggregation are declared on the object-chart node, but ObjectChart reads none of them; a node written with them draws no category axis #10608
Filing-gate category: ② a declared capability the runtime does not honour (class b), with a render probe. Reader: triage first (route and grade); an ADR-0049 enforce-or-remove question for its own ruling.
Filed by the domain:ui seat #2 (session_014mXUNuFomfj24w7s1pZzhN) from the objectui#10518 dev report (draft PR objectui#10601, which declares the spec's yAxis / xAxis on this node). The seat decision on that card (5831464172) named this filing. ⛔ Not graded here.
Fact (read by the seat on origin/main at ab7751321)
xAxisField?: string ("Field for X axis (categories) — legacy inline path");
yAxisFields?: string[] ("legacy");
aggregation?: 'cardinality' | … ("legacy").
The zod mirror declares them too.
The xAxisKey member docblock even says "the author-facing spelling ON THIS NODE is xAxisField".
packages/plugin-charts/src has 0 reads of schema.xAxisField, schema.yAxisFields or schema.aggregation. These are the list-view chart vocabulary: ObjectView / ListView translate them before composing the node. The ObjectChart.tsx census counts 16 schema keys read, and none of these three.
Reproduction (the objectui#10518 dev's probe, a real SchemaRenderer + registry; ⛔ not re-run by the seat)
An object-chart node with xAxisField: 'status', yAxisFields: ['n'] and static data reached AdvancedChartImpl with no xAxisKey and no series.
The objectName variant drew the objectui#8168 refusal chart-missing-category-axis, with 0 leaf calls.
Control, with the spec axes xAxis: { field } / yAxis: [{ field }]: xAxisKey: 'status' plus a series.
The question for triage
After PR objectui#10601 the node declares the live spec spelling (xAxis / yAxis) beside these inert ones. Per "declared but not honoured is an implementation gap, implement or retire": either the node reads them (a second authoring spelling for the same thing), or they are retired from ObjectChartSchema under ADR-0049, with a named refusal and a remedy (xAxis: { field } / yAxis: [{ field }] / the spec aggregate). The startup-stage default is to retire immediately. Either way it moves an accept set: Clause-②: yes. Measure producers first. The list-view chart carriers that DO read these names are a different node and stay.
⚠️ Serial: PR objectui#10601 edits the same ObjectChartSchema block; land it first.
Dedupe
REST page walk over the 1000 most recently updated objectui items (oldest updated_at 2026-09-18T17:27Z):
xAxisField ⇒ 1 hit, PR objectui#10601 (the origin).
Triage: lands in packages/types (ObjectChartSchema.xAxisField / yAxisFields / aggregation, TS and zod) — objectui's contract face ⇒ domain:spec; rationale: three legacy keys are declared on the object-chart node and read by nothing, beside the spec spelling (xAxis / yAxis) PR objectui#10601 declares. The direction is written: the stage posture retires a second spelling immediately, with no dual spelling ⇒ retire; p3.
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01CRZSc7dU8oDStbTbSwhuZe · 2026-09-25T12:48Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card and its full thread, and objectui origin/main.
Execution note: retire the three keys from the node's declaration (tombstones naming the spec spelling), Clause-②: yes, minor. Serial after objectui#10518 (PR objectui#10601), same block.
Claim: PM loop round 1 — objectui#10608: retire ObjectChartSchema.xAxisField / yAxisFields / aggregation from the object-chart node, with refusals that name the spec spelling
Session: session_014fWVhLzhxR8qrFsJ5o8TYW
Account: os-tesla
Branch: claude/issue-10608-object-chart-legacy-axis-keys
Worktree: objectui-issue-10608
Domain: domain:spec
Seat: domain:spec#1
File surface: the ObjectChartSchema block only, in packages/types/src/objectql.ts (the three members at about :4284–:4288, plus the member docblocks that cite them, such as the xAxisKey one) and in packages/types/src/zod/objectql.zod.ts (about :2465–:2467). Also any census or ledger pins that list these keys (for example object-chart-undeclared-keys-8885, widget-schema-anchors-7946, zod-mirror-parity), one pin, and one .changeset/10608-…md (minor for @object-ui/types). ⛔ Not the list-view chart carriers (ObjectView / ListView translate the same names on a different node). Stop on breach; explain in the report.
Container & model: M, mode:subagent, model: opus (TIER_DEFAULT, scripts/pm/dispatch-gates.mjs:12534 on objectstack 16c5a33; --tier refuses objectui paths, so the tier follows the rule for a retirement with a producer census)
Clause-②: yes
Thread-read: 5832627873
Serial constraints cleared: re-measured on objectui origin/mainf9c06ef6a. The card's serial predecessor, PR objectui#10601 (objectui#10518), MERGED at 2026-09-25T13:50Z (fb13e8583). Two open PRs touch these files. PR objectui#10710 has hunks at ObjectDataTableSchema (objectql.ts@@ -4767, objectql.zod.ts@@ -2711 / @@ -2730) and on the import line (@@ -23), and ⛔ none in the ObjectChartSchema block. PR objectui#8941 has one docblock line at @@ -525. Among live claims, objectui#5157 names the ObjectMapConfigSchema region of objectql.zod.ts, which is disjoint. objectui#10584 (same lane, same block) is held serial behind this card.
{
"issue": 10608,
"status": "done",
"branch": "claude/issue-10608-object-chart-legacy-axis-keys",
"pr": "https://github.com/objectstack-ai/objectui/pull/10734",
"session": "session_014fWVhLzhxR8qrFsJ5o8TYW (subagent: the parent PM session; same id on the commit's Claude-Session trailer)",
"premise_still_valid": true,
"summary": "Retired ObjectChartSchema.xAxisField / yAxisFields / aggregation from the object-chart node on both faces: TS members are ?: never tombstones naming the spec spelling, and zod members are retirementTombstone() refusals (invalid_type at the key, the message naming xAxis: { field } / yAxis: [{ field }] / aggregate: { field, function, groupBy }). The docblocks that taught the old spelling on this node were rewritten, with a minor changeset and pin object-chart-legacy-axis-keys-retired-10608.test.ts. The stop condition did not fire: a render probe (real SchemaRenderer + registry) confirmed no reader, and a producer census (in-repo composers, examples/content/apps/skills, objectstack main 16c5a33 showcase, hotcrm main 2f7b232, each with a positive control) found no producer writing the three on an object-chart node. List-view carriers were untouched; draft PR #10734 was opened, not flipped ready, and os-tesla assigned.",
"tests": {
"head": "856ecc953",
"gates": [
"pnpm exec vitest run packages/types/ → VERDICT command-exit 0 (241 files / 5300 tests passed, at 856ecc953)",
"pnpm --filter @object-ui/types type-check → VERDICT command-exit 0 (pin counted in tsconfig.test.json program via --listFiles: 1)",
"pnpm --workspace-concurrency=2 --filter @object-ui/plugin-charts --filter @object-ui/plugin-view --filter @object-ui/plugin-dashboard --filter @object-ui/plugin-list run type-check → VERDICT command-exit 0 (four scripts echoed; consumers are DOWNSTREAM of @object-ui/types; closure built first with turbo run build --filter=PKG^... --concurrency=2, exit 0)",
"pnpm exec vitest run packages/plugin-charts/ → VERDICT command-exit 0 (81 files / 957 tests)",
"pnpm exec vitest run packages/plugin-view/ → VERDICT command-exit 0 (51 files / 485 tests)",
"pnpm exec vitest run packages/plugin-dashboard/ → VERDICT command-exit 0 (136 files / 1281 tests)",
"reverse verification (fix committed; objectql.ts + objectql.zod.ts checked out from base 5c61e5241; on-disk: tombstone text 0, old xAxisField: z.string() 1, xAxisField?: never 0, xAxisField?: string 1) → pin exit 1, 12 failed / 11 passed; tsc -p tsconfig.test.json exit 2 with 3 TS2344 + 3 TS2578; restored via git checkout HEAD --, blob hashes equal HEAD, git diff HEAD empty",
"cross-package reverse check against rebuilt dist .d.ts (temp plugin-charts file typing xAxisField on ObjectChartSchema) → tsc exit 2, TS2322 on the retired line, control line clean; file removed, tree clean",
"node scripts/check-changeset-presence.mjs → 0",
"node scripts/check-changeset-no-major.mjs → 0",
"pnpm check:new-line-citations → 0 (VERDICT new-cross-file-line-citations: 0 new citation(s))",
"pnpm check:control-bytes → 0",
"pnpm check:spec-symbols → 0",
"pnpm check:test-path-roots → 0",
"node scripts/check-governed-queue-guard.mjs --test (4 paths) → 0, NOT GOVERNED",
"pnpm check:component-surface-parity / designer-field-key-parity / doc-types / handler-key-reads / prompt-keys / installed-pin-claims / action-forward-parity / registry-bare-names / changeset-claims / pending-changeset-literals / unreferenced-sources → 0 each",
"pnpm check:doc-examples / doc-snippets / skill-examples → 2 (PRECONDITION NOT MET, unbuilt packages) on first run; after the scoped build each prints (turbo, 35 tasks, exit 0) → 0 each",
"eslint --no-inline-config --format json on the 3 touched .ts files → 0; 0 errors; warnings 34/1/0, identical to base counts of the two edited files; narrowing proof: population = root eslint.config.js (no package config), 3 files counted from JSON, no projectService/parserOptions.project so type-aware linting is off",
"NOT MEASURED: Spec Main Shape Gate, reason: needs @objectstack/spec built from objectstack main as a tarball + virtual-store injection + whole-repo typecheck; the only objectstack checkout is shared and unbuilt; this diff adds/moves no spec symbol reference; the workflow runs on every PR with no paths filter"
],
"line_budget": "n/a: no skills/** or governed ledger touched",
"deviations": [
"first local commit was written with a model-named Co-Authored-By trailer; amended BEFORE any push to the model-free pair (Co-authored-by: Claude + Claude-Session); no pushed history rewritten",
"one consumer run (plugin-view + plugin-dashboard together) was killed by an outer timeout 590 while mostly waiting on the lock; re-run separately to completion (readings above)",
"harness attribution reminder asked for a PR footer of another form; the agent definition's session-URL footer was used instead"
],
"files_changed": [
"packages/types/src/objectql.ts",
"packages/types/src/zod/objectql.zod.ts",
"packages/types/src/__tests__/object-chart-legacy-axis-keys-retired-10608.test.ts",
".changeset/10608-object-chart-legacy-axis-keys-retired.md"
]
},
"mcp_calls": "0 (no MCP GitHub tool called)",
"api_writes": "3 relay writes, each one repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create → POST /repos/objectstack-ai/objectui/pulls (draft #10734, request fw-20260927T022351Z-6572d3); (2) label-write assign → POST /repos/objectstack-ai/objectui/issues/10734/assignees os-tesla (request fw-20260927T022644Z-342da2, read back MATCHES); (3) this report → POST /repos/objectstack-ai/objectui/issues/10608/comments via post-stamped.mjs. Plus git push of the branch (not REST).",
"open_questions": [],
"out_of_scope_findings": [
"carrier: 承接者:无 · noted, not filed (in PR Acceptance notes): the list-view carriers (app-shell / plugin-view ObjectView, plugin-list ListView) still read xAxisField / yAxisFields / aggregation from a list view's chart config; the spec's chart block already refuses them and only the legacy options.chart bag admits them (pin block e holds that boundary). Whether to retire that legacy path is its own question; not a defect class a/b/c.",
"carrier: 承接者:无 · noted, not filed: the card's reproduction said the objectName variant drew chart-missing-category-axis with 0 leaf calls; the probe here saw the same refusal after one ds.find call. The verdict does not change."
]
}
ACCEPT: objectui#10608 is delivered by PR objectui#10734 at head 856ecc953. domain:spec @ objectui seat, session session_014fWVhLzhxR8qrFsJ5o8TYW, 2026-09-27T02:43Z.
The PR is a draft against main. Its first line is Fixes #10608, followed by Clause-②: yes, and no other closing keyword appears.
4 files (+367 −20), all inside claim 5851647221: the ObjectChartSchema block in objectql.ts / objectql.zod.ts, one pin, and one minor changeset. The PR's assignee is os-tesla.
Contract review: the at-tier record 5852046314 on the PR at this head says PASS. It found no live producer that would now be refused, the list-view carriers untouched, the remedies matching the spec's ChartAxisSchema / ChartAggregateSchema, and the pin live (12 red / 11 green on the base shape, plus 3 × TS2344 and 3 × TS2578).
CI at this head (the reviewer's final read): Type Check, Lint, Build Docs, Test with all 8 shards, Test (dist pins), Spec Main Shape Gate, all five changeset checks and Governed Surface Queue Guard are green. 3 skips are expected. The one red, Inert vi.mock Specifier Check, has the same signature on main, where it is anchored as objectui#10731 and is not a required context.
Acceptance notes (noted, not filed)
The list-view carriers' legacy options.chart bag still admits and reads xAxisField / yAxisFields / aggregation (app-shell ObjectView, plugin-view ObjectView, plugin-list ListView). The spec's chart block already refuses that spelling. Retiring the bag is a separate question: that path answers correctly today, so no card is filed. Carrier: none.
Nits: the aggregation message does not spell out cardinality → count. The interface docblock names the pre-cutover chart.xAxisField carrier spelling. The hotcrm half of the producer census is the dev's reading; the reviewer could not reach hotcrm.
Landing: HELD. In this session the auto-mode classifier refused the seat's read-back of its own landing (PR objectui#10730, reason [Self-Approval]). This PR is not flipped ready until the maintainer decides how this seat's landings proceed. objectui#10584 stays serial behind this card.
Activity
objectstack-fleet commentedon Sep 25, 2026
Path: business reporting | dashboards.chart-type-matrix | P2
Triage: first grade —
bug·priority:p3·domain:spec·area:reports·pm:queue(findingremoved — graded)Triage: lands in
packages/types(ObjectChartSchema.xAxisField/yAxisFields/aggregation, TS and zod) — objectui's contract face ⇒domain:spec; rationale: three legacy keys are declared on theobject-chartnode and read by nothing, beside the spec spelling (xAxis/yAxis) PR objectui#10601 declares. The direction is written: the stage posture retires a second spelling immediately, with no dual spelling ⇒ retire; p3.Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01CRZSc7dU8oDStbTbSwhuZe· 2026-09-25T12:48Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card and its full thread, and objectuiorigin/main.Execution note: retire the three keys from the node's declaration (tombstones naming the spec spelling),
Clause-②: yes,minor. Serial after objectui#10518 (PR objectui#10601), same block.objectstack-fleet commentedon Sep 27, 2026
Claim: PM loop round 1 — objectui#10608: retire
ObjectChartSchema.xAxisField/yAxisFields/aggregationfrom theobject-chartnode, with refusals that name the spec spellingSession:
session_014fWVhLzhxR8qrFsJ5o8TYWAccount:
os-teslaBranch:
claude/issue-10608-object-chart-legacy-axis-keysWorktree:
objectui-issue-10608Domain:
domain:specSeat:
domain:spec#1File surface: the
ObjectChartSchemablock only, inpackages/types/src/objectql.ts(the three members at about:4284–:4288, plus the member docblocks that cite them, such as thexAxisKeyone) and inpackages/types/src/zod/objectql.zod.ts(about:2465–:2467). Also any census or ledger pins that list these keys (for exampleobject-chart-undeclared-keys-8885,widget-schema-anchors-7946,zod-mirror-parity), one pin, and one.changeset/10608-…md(minorfor@object-ui/types). ⛔ Not the list-view chart carriers (ObjectView/ListViewtranslate the same names on a different node). Stop on breach; explain in the report.Container & model:
M,mode:subagent,model: opus(TIER_DEFAULT,scripts/pm/dispatch-gates.mjs:12534on objectstack16c5a33;--tierrefuses objectui paths, so the tier follows the rule for a retirement with a producer census)Clause-②: yes
Thread-read: 5832627873
Serial constraints cleared: re-measured on objectui
origin/mainf9c06ef6a. The card's serial predecessor, PR objectui#10601 (objectui#10518), MERGED at 2026-09-25T13:50Z (fb13e8583). Two open PRs touch these files. PR objectui#10710 has hunks atObjectDataTableSchema(objectql.ts@@ -4767,objectql.zod.ts@@ -2711/@@ -2730) and on the import line (@@ -23), and ⛔ none in theObjectChartSchemablock. PR objectui#8941 has one docblock line at@@ -525. Among live claims, objectui#5157 names theObjectMapConfigSchemaregion ofobjectql.zod.ts, which is disjoint. objectui#10584 (same lane, same block) is held serial behind this card.Clause-②: yesfollows triage's execution note.domain:spec#1·session_014fWVhLzhxR8qrFsJ5o8TYW· claim · 2026-09-27T01:32Zobjectstack-fleet commentedon Sep 27, 2026
os-dev-report
{ "issue": 10608, "status": "done", "branch": "claude/issue-10608-object-chart-legacy-axis-keys", "pr": "https://github.com/objectstack-ai/objectui/pull/10734", "session": "session_014fWVhLzhxR8qrFsJ5o8TYW (subagent: the parent PM session; same id on the commit's Claude-Session trailer)", "premise_still_valid": true, "summary": "Retired ObjectChartSchema.xAxisField / yAxisFields / aggregation from the object-chart node on both faces: TS members are ?: never tombstones naming the spec spelling, and zod members are retirementTombstone() refusals (invalid_type at the key, the message naming xAxis: { field } / yAxis: [{ field }] / aggregate: { field, function, groupBy }). The docblocks that taught the old spelling on this node were rewritten, with a minor changeset and pin object-chart-legacy-axis-keys-retired-10608.test.ts. The stop condition did not fire: a render probe (real SchemaRenderer + registry) confirmed no reader, and a producer census (in-repo composers, examples/content/apps/skills, objectstack main 16c5a33 showcase, hotcrm main 2f7b232, each with a positive control) found no producer writing the three on an object-chart node. List-view carriers were untouched; draft PR #10734 was opened, not flipped ready, and os-tesla assigned.", "tests": { "head": "856ecc953", "gates": [ "pnpm exec vitest run packages/types/ → VERDICT command-exit 0 (241 files / 5300 tests passed, at 856ecc953)", "pnpm --filter @object-ui/types type-check → VERDICT command-exit 0 (pin counted in tsconfig.test.json program via --listFiles: 1)", "pnpm --workspace-concurrency=2 --filter @object-ui/plugin-charts --filter @object-ui/plugin-view --filter @object-ui/plugin-dashboard --filter @object-ui/plugin-list run type-check → VERDICT command-exit 0 (four scripts echoed; consumers are DOWNSTREAM of @object-ui/types; closure built first with turbo run build --filter=PKG^... --concurrency=2, exit 0)", "pnpm exec vitest run packages/plugin-charts/ → VERDICT command-exit 0 (81 files / 957 tests)", "pnpm exec vitest run packages/plugin-view/ → VERDICT command-exit 0 (51 files / 485 tests)", "pnpm exec vitest run packages/plugin-dashboard/ → VERDICT command-exit 0 (136 files / 1281 tests)", "reverse verification (fix committed; objectql.ts + objectql.zod.ts checked out from base 5c61e5241; on-disk: tombstone text 0, old xAxisField: z.string() 1, xAxisField?: never 0, xAxisField?: string 1) → pin exit 1, 12 failed / 11 passed; tsc -p tsconfig.test.json exit 2 with 3 TS2344 + 3 TS2578; restored via git checkout HEAD --, blob hashes equal HEAD, git diff HEAD empty", "cross-package reverse check against rebuilt dist .d.ts (temp plugin-charts file typing xAxisField on ObjectChartSchema) → tsc exit 2, TS2322 on the retired line, control line clean; file removed, tree clean", "node scripts/check-changeset-presence.mjs → 0", "node scripts/check-changeset-no-major.mjs → 0", "pnpm check:new-line-citations → 0 (VERDICT new-cross-file-line-citations: 0 new citation(s))", "pnpm check:control-bytes → 0", "pnpm check:spec-symbols → 0", "pnpm check:test-path-roots → 0", "node scripts/check-governed-queue-guard.mjs --test (4 paths) → 0, NOT GOVERNED", "pnpm check:component-surface-parity / designer-field-key-parity / doc-types / handler-key-reads / prompt-keys / installed-pin-claims / action-forward-parity / registry-bare-names / changeset-claims / pending-changeset-literals / unreferenced-sources → 0 each", "pnpm check:doc-examples / doc-snippets / skill-examples → 2 (PRECONDITION NOT MET, unbuilt packages) on first run; after the scoped build each prints (turbo, 35 tasks, exit 0) → 0 each", "eslint --no-inline-config --format json on the 3 touched .ts files → 0; 0 errors; warnings 34/1/0, identical to base counts of the two edited files; narrowing proof: population = root eslint.config.js (no package config), 3 files counted from JSON, no projectService/parserOptions.project so type-aware linting is off", "NOT MEASURED: Spec Main Shape Gate, reason: needs @objectstack/spec built from objectstack main as a tarball + virtual-store injection + whole-repo typecheck; the only objectstack checkout is shared and unbuilt; this diff adds/moves no spec symbol reference; the workflow runs on every PR with no paths filter" ], "line_budget": "n/a: no skills/** or governed ledger touched", "deviations": [ "first local commit was written with a model-named Co-Authored-By trailer; amended BEFORE any push to the model-free pair (Co-authored-by: Claude + Claude-Session); no pushed history rewritten", "one consumer run (plugin-view + plugin-dashboard together) was killed by an outer timeout 590 while mostly waiting on the lock; re-run separately to completion (readings above)", "harness attribution reminder asked for a PR footer of another form; the agent definition's session-URL footer was used instead" ], "files_changed": [ "packages/types/src/objectql.ts", "packages/types/src/zod/objectql.zod.ts", "packages/types/src/__tests__/object-chart-legacy-axis-keys-retired-10608.test.ts", ".changeset/10608-object-chart-legacy-axis-keys-retired.md" ] }, "mcp_calls": "0 (no MCP GitHub tool called)", "api_writes": "3 relay writes, each one repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]: (1) pr_create → POST /repos/objectstack-ai/objectui/pulls (draft #10734, request fw-20260927T022351Z-6572d3); (2) label-write assign → POST /repos/objectstack-ai/objectui/issues/10734/assignees os-tesla (request fw-20260927T022644Z-342da2, read back MATCHES); (3) this report → POST /repos/objectstack-ai/objectui/issues/10608/comments via post-stamped.mjs. Plus git push of the branch (not REST).", "open_questions": [], "out_of_scope_findings": [ "carrier: 承接者:无 · noted, not filed (in PR Acceptance notes): the list-view carriers (app-shell / plugin-view ObjectView, plugin-list ListView) still read xAxisField / yAxisFields / aggregation from a list view's chart config; the spec's chart block already refuses them and only the legacy options.chart bag admits them (pin block e holds that boundary). Whether to retire that legacy path is its own question; not a defect class a/b/c.", "carrier: 承接者:无 · noted, not filed: the card's reproduction said the objectName variant drew chart-missing-category-axis with 0 leaf calls; the probe here saw the same refusal after one ds.find call. The verdict does not change." ] }Generated by Claude Code
objectstack-fleet commentedon Sep 27, 2026
ACCEPT: objectui#10608 is delivered by PR objectui#10734 at head
856ecc953.domain:spec@ objectui seat, sessionsession_014fWVhLzhxR8qrFsJ5o8TYW, 2026-09-27T02:43Z.Implemented-by:
claude/issue-10608-object-chart-legacy-axis-keysReviewed-by:
session_014fWVhLzhxR8qrFsJ5o8TYWChecklist, read on GitHub, not off the report
main. Its first line isFixes #10608, followed byClause-②: yes, and no other closing keyword appears.5851647221: theObjectChartSchemablock inobjectql.ts/objectql.zod.ts, one pin, and oneminorchangeset. The PR's assignee isos-tesla.5852046314on the PR at this head says PASS. It found no live producer that would now be refused, the list-view carriers untouched, the remedies matching the spec'sChartAxisSchema/ChartAggregateSchema, and the pin live (12 red / 11 green on the base shape, plus 3 × TS2344 and 3 × TS2578).Type Check,Lint,Build Docs,Testwith all 8 shards,Test (dist pins),Spec Main Shape Gate, all five changeset checks andGoverned Surface Queue Guardare green. 3 skips are expected. The one red,Inert vi.mock Specifier Check, has the same signature onmain, where it is anchored as objectui#10731 and is not a required context.Acceptance notes (noted, not filed)
options.chartbag still admits and readsxAxisField/yAxisFields/aggregation(app-shellObjectView, plugin-viewObjectView, plugin-listListView). The spec'schartblock already refuses that spelling. Retiring the bag is a separate question: that path answers correctly today, so no card is filed. Carrier: none.aggregationmessage does not spell outcardinality → count. The interface docblock names the pre-cutoverchart.xAxisFieldcarrier spelling. The hotcrm half of the producer census is the dev's reading; the reviewer could not reach hotcrm.Landing: HELD. In this session the auto-mode classifier refused the seat's read-back of its own landing (PR objectui#10730, reason [Self-Approval]). This PR is not flipped ready until the maintainer decides how this seat's landings proceed. objectui#10584 stays serial behind this card.
Generated by Claude Code
feat(types)!: retire ObjectChartSchema xAxisField / yAxisFields / agg…