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 }}
Repository navigation
Studio list-view panel: edit a chart view's dataset binding (dataset, measures, dimensions) #27933
Filing gate: ③ triage-directed. #27895's order said: "if all types do not fit one PR, list the rest with a ready-to-file title". PR #27931's report (6514901941, out_of_scope_findings) left chart out by name.
Reach: Studio › Interfaces › list-view panel of a chart view, after "Add view" (PR #27870) makes one.
Reader who acts: domain:ui (Studio).
Duplicate search: dedupe words below; #27895 and #27896 are the sibling cards (other types' settings, view switcher), not this.
Observed
Since #27895 the list-view panel edits every non-grid type's block except chart. ListChartConfigSchema is { chartType, dataset, values, dimensions }, an ADR-0021 dataset plus measure and dimension names. The generic form would draw dataset and values as free text, so the section leaves chart out.
Wanted
A chart section that reuses the Create View dialog's useDatasetCatalog (datasets whose base object is this object) and useDatasetSemantics (that dataset's measures and dimensions), picking each by label and writing config.chart. Landing: ui/packages/app-shell/src/views/studio-design/.
Dedupe words: studio list view chart dataset measure binding inspector.
Claim: PM loop round 1
Session: session_01Utp6CaJoinvGQSbHeDaWBe
Account: os-bill
Branch: claude/project-thread-8n0aof (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-27933
Domain: domain:ui
Seat: domain:ui#3
File surface: ui/packages/app-shell/src/views/studio-design/**, ui/packages/app-shell/src/views/CreateViewDialog.tsx (shared binding piece only), studio/engine i18n, tests beside, root changeset (stop on breach; explain in the report)
Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier on 178b5238: no path-derived mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: PR #27870, #27931 and #27988 on the same panel are merged
Scope of this claim: the chart section of the Studio list-view panel (config.chart dataset, measures, dimensions), reusing the Create View dialog's dataset readers. Seat 4's in-flight PR files (#27893, #27907, #27912, #27793) and seat 2's record page v4 PRs are off limits.
Dispatched 2026-10-30T07:43Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Activity
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
Claim: PM loop round 1
Session:
session_01Utp6CaJoinvGQSbHeDaWBeAccount:
os-billBranch:
claude/project-thread-8n0aof(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-27933Domain:
domain:uiSeat:
domain:ui#3File surface:
ui/packages/app-shell/src/views/studio-design/**,ui/packages/app-shell/src/views/CreateViewDialog.tsx(shared binding piece only), studio/engine i18n, tests beside, root changeset (stop on breach; explain in the report)Container & model:
M,mode:thread,model: TIER_DEFAULT(dispatch-gates --tieron178b5238: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
Thread-read: none
Premise: holds
Serial constraints cleared: PR #27870, #27931 and #27988 on the same panel are merged
Scope of this claim: the chart section of the Studio list-view panel (
config.chartdataset, measures, dimensions), reusing the Create View dialog's dataset readers. Seat 4's in-flight PR files (#27893, #27907, #27912, #27793) and seat 2's record page v4 PRs are off limits.Dispatched 2026-10-30T07:43Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CXJbywVb2s7U66hkac
os-dev-report
{ "issue": 27933, "status": "done", "branch": "claude/project-thread-8n0aof", "pr": "https://github.com/objectstack-ai/objectstack/pull/28025", "session": "session_01Utp6CXJbywVb2s7U66hkac", "premise_still_valid": true, "summary": "A chart view's list-view panel gains a Chart data section (ListViewChartSection) that edits config.chart through the same useObjectListViewDraft autosave: the datasets whose base object is this object by label, then that dataset's measures (values) and dimensions by label, stored by name, plus chartType from the spec enum. Switching dataset keeps only the members the new dataset also declares; no measure left removes the values key so listViewTypeHeldEdit (new chart arm, objectHeldInput on ListViewSchema) holds the edit instead of sending a 422. Stale names are marked, a failed read shows the stored binding as saved with the reason, an object with no dataset says so with no picker. The Create View dialog's dataset reading moved unchanged into a shared hook (studio-design/objectDatasets.ts, useObjectDatasetBinding) that both call; the dialog's single-choice pickers stay its own. Head bab6d6ec.", "tests": "head bab6d6ec. New ObjectListViewInspector.chartBinding-27933.test.tsx: Tests 9 passed (9). Neighbours under os-verify-lock (VERDICT command-exit 0): six CreateViewDialog suites incl. chartBinding-11576, ObjectView.createChartView-11576, twelve ObjectListViewInspector suites, three StudioDesignSurface.listView suites, kanbanCardSelection-12725, datasetCreate, metadataError suites, i18n studio-namespace, block-config-i18n, product-neutral-renderer.ratchet: Test Files 35 passed (35), Tests 428 passed (428). type-check @object-ui/app-shell + @object-ui/i18n: VERDICT command-exit 0. Ablations via scripts/ablation-replace.mjs (src-resolved suite, no dist): (1) ListViewChartSection.tsx keep filter anchor 1 to 0, blob 582ee537 to fb31716c, Tests 2 failed 7 passed, restored blob == HEAD 582ee537, git diff HEAD empty; (2) ListViewTypeSection.tsx chart arm anchor 1 to 0, blob 17ad0ee5 to adefb06e, Tests 1 failed 8 passed, restored blob == HEAD 17ad0ee5, git diff HEAD empty.", "gates": { "head": "bab6d6ec", "derived_local": [ "node scripts/check-adr-0087-registration.mjs --base origin/main :: exit 0", "node scripts/check-adr-0087-registration.mjs --self-test :: exit 0", "node scripts/check-changeset-no-major.mjs --base origin/main :: exit 0", "node scripts/check-closing-keyword-parity.mjs :: exit 0", "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0", "node scripts/check-comment-mask-corpus.mjs :: exit 0", "node scripts/check-empty-changeset.mjs --base origin/main :: exit 0", "node scripts/check-empty-changeset.mjs --self-test :: exit 0", "node scripts/check-sdui-manifest.mjs :: exit 0", "node scripts/check-sdui-manifest.mjs --self-test :: exit 0", "node scripts/pm/release-rehearsal-clone.mjs --self-test :: exit 0", "node scripts/release-pending-publish.mjs --self-test :: exit 0", "pnpm --dir ui exec vitest run scripts/ :: exit 0", "pnpm --filter @objectstack/spec run check:duration-unit-keys :: exit 0", "pnpm check:changeset-gate-self-tests :: exit 0", "pnpm check:closed-ceremony-text :: exit 0", "pnpm check:cross-package-test-inputs :: exit 0", "pnpm check:dispatcher-error-vocabulary :: exit 0", "pnpm check:driver-memory-census :: exit 0", "pnpm check:engine-double-contract :: exit 0", "pnpm check:gitlink-declared :: exit 0", "pnpm check:nul-bytes :: exit 0", "pnpm check:pm-changeset-deadline-census :: exit 0", "pnpm check:published-files :: exit 0", "pnpm check:query-options-erasure :: exit 0", "pnpm check:refd-timer-probe :: exit 0", "pnpm check:skill-identifier-liveness :: exit 0", "pnpm check:test-source-alias :: exit 0", "pnpm check:tier-file-adoption :: exit 0", "pnpm check:type-check-coverage :: exit 0", "pnpm check:type-check-debt :: exit 0", "pnpm check:undeclared-dep-imports :: exit 0", "pnpm check:watch-hint-literal :: exit 0", "pnpm check:where-matcher :: exit 0" ], "reconcile": "dispatch-gates --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN, exit 0", "extra_local": [ "node ui/scripts/check-i18n-call-site-keys.mjs :: exit 0", "node ui/scripts/check-i18n-dead-keys.mjs :: exit 0 (no new key listed)", "pnpm --dir ui check:i18n-drift :: exit 0", "pnpm --dir ui check:new-line-citations :: exit 0", "pnpm --filter @object-ui/app-shell --filter @object-ui/i18n run type-check :: exit 0", "eslint --no-inline-config over 8 changed source files :: exit 0 (0 errors)" ], "ci": "in_progress — PR check-runs not read at report time" }, "line_budget": "10 files, +926 / -41 at derivation (under the 3000 human-merge threshold)", "files_changed": [ ".changeset/27933-studio-list-view-chart-binding.md", "ui/packages/app-shell/src/views/CreateViewDialog.tsx", "ui/packages/app-shell/src/views/studio-design/ListViewChartSection.tsx", "ui/packages/app-shell/src/views/studio-design/ListViewTypeSection.tsx", "ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.tsx", "ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.chartBinding-27933.test.tsx", "ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.typeSettings-27895.test.tsx", "ui/packages/app-shell/src/views/studio-design/objectDatasets.ts", "ui/packages/i18n/src/namespaces/studio/en.ts", "ui/packages/i18n/src/namespaces/studio/zh.ts" ], "deviations": [ "Commits a39e3a62 and ebfd480d carry the seat's session id in their Claude-Session trailer instead of this thread's (session_01Utp6CXJbywVb2s7U66hkac); bab6d6ec carries the right one. The branch is not claude/issue-*, so history is not rewritten; a squash merge replaces them.", "The harness's after-PR assign and review-request step was skipped, per the order (no assignees, no review request).", "Whole-tree Test UI, repo lint and the type-check lanes are left to CI." ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0 GitHub MCP calls", "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches (relay pr_create, PR #28025); POST /repos/objectstack-ai/objectstack/issues/27933/comments (this report, post-stamped)", "open_questions": [], "out_of_scope_findings": [ "none" ] }Report taken 2026-10-30T08:42Z.
objectstack-fleet commentedon Oct 30, 2026
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe
ACCEPT → PR #28025 comment 6519120377 · 2026-10-30T09:07Z
Generated by Claude Code