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
ui: dataset callers send the caller's package (D3) instead of the exact qualifier, and the report date dimension and chart option-colour probes read by package (after #32310) #32311
Claim: PM loop round 4 · 2026-11-11T05:06Z
Session: session_01J8VVAkosBv7FAKQdjiwYEd (card thread, dev) · seat session_01J8VVAmxB38cjBXwr9FZGyt
Account: huangyiirene
Branch: claude/project-thread-l26e7m (a card thread can push only its designated branch, a measured platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-32311
Domain: domain:ui
Seat: domain:ui#3
File surface: ui/packages/plugin-dashboard/src/**, ui/packages/plugin-report/src/**, ui/packages/plugin-charts/src/ObjectChart.tsx, ui/packages/app-shell/src/views/objectViewListRenderer.tsx, ui/packages/data-objectstack/src/index.ts, ui/packages/core/src/utils/served-package.ts, their tests, root .changeset/. ⛔ No server code, no packages/**.
Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate for this surface), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: the dataset callers PR #32309 wired, plus the report date-dimension read and the chart option-colour probe, send the caller arm callerPackage from PR #32337 (#32310) in place of ?package=; a package-less item sends nothing; a 409 is never retried bare. Epic red-line review by epic:#31527#1 before landing.
Thread-read: 6782833532
Premise: holds (seat reading: the code path the card names is present on origin/main26f4e6d8; the thread reproduces on main before editing and stops on a false premise)
Serial constraints cleared: domain:ui#2 is offline since 2026-11-11T01:52Z with nothing in flight (Notify 6784658044 on #32181); no other domain:ui seat holds a live Claim:. Sibling domain:ui#3 in flight: #31912 (record-currency renderers: fields, plugin-grid, plugin-list, plugin-detail, plugin-form, i18ncurrency.ts, Studio CurrencyConfigField.tsx), #32311 (dataset callers: plugin-dashboard, plugin-report, ObjectChart.tsx, objectViewListRenderer.tsx, data-objectstack), and the #32021 item 4 + #32157 fold (FirstRunChecklist.tsx, Home, the not-found states); file surfaces disjoint.
Dispatch order: /mnt/project-files/ui-seat3/order-32311.md + common-tail.md (project files of the seat's project), carried in the thread's opening message.
Release: 2026-11-11T05:24Z · claim 6787589805 · scope: the dataset callers' caller arm (claim 6787589805)
Why: the maintainer ruled at 2026-11-11T05:23Z that only p1 work is taken for now (project thread, 「暂时只处理 p1 任务」). This card is below p1, so the seat stops its card thread about 15 minutes after dispatch, before any PR.
State: pm:dispatched → pm:queue, assignee cleared. Nothing was merged. If the card thread left a premise reading, it is in the seat's project files under card-32311 (or card-32021-32157 for the fold).
Resume: the order stays at /mnt/project-files/ui-seat3/ in the seat's project files. Any seat may claim this card again once the p1-only rule lifts.
The card thread had pushed before the stop arrived: the fix, its pins, a changeset and a merge of main. No PR was opened and no gates were recorded. The thread's own reading lists 10 ablations, all red, and two points that are still open: the Clause-② line, and #32077's pending BREAKING changeset. A resumer starts from that head, re-reads the diff, runs the derived gates, and opens the PR.
Claim: PM loop round 1 · 2026-11-11T13:16Z
Session: session_012MmDsRT6hvZsQH9dTzn4CA
Account: os-lizheng
Branch: claude/project-thread-l26e7m (resumed, see Resume-from)
Worktree: objectstack-issue-32311
Domain: domain:ui
Seat: domain:ui#2
File surface: ui/packages/plugin-dashboard/src/**, ui/packages/plugin-report/src/**, ui/packages/plugin-charts/src/ObjectChart.tsx, ui/packages/app-shell/src/views/objectViewListRenderer.tsx, ui/packages/data-objectstack/src/index.ts, ui/packages/core/src/utils/served-package.ts, their tests, root .changeset/; ⛔ no server code, no packages/** (stop on breach; explain in the report)
Container & model: M, mode:subagent, model: default tier (dispatch-gates --tier: "no path-derived mandate"), effort: high
Clause-②: no — the dev measures it on the built declaration closure (the resumed thread left it open), and the seat amends this line if the measured shape differs
Metadata-protocol: none
Responsibility: the dataset callers PR #32309 wired, plus useReportDateDimension and ObjectChart's option-colour probe (objectstack ui/), read by name without the caller arm callerPackage of PR #32337 (#32310) | the platform door exists since PR #32337 | any item whose dataset a dependency holds; a 409 degrades the two best-effort reads silently
Thread-read: 6787875809
Premise: holds — resumed from the pushed head; the dev re-reads the diff against origin/main7d82b2dab8 before building on it
Resume-from: claude/project-thread-l26e7m@b30ac853279c77af08f04898dd6ed25a065e5f68
Serial constraints cleared: no other domain:ui seat holds a live Claim: (every open domain:ui card read unassigned at the probe, 2026-11-11T13:16Z). Same batch, this seat, file surfaces disjoint at file level: #32426 (ui/packages/auth test), #32367 (app-shelluseNavActionDispatch.ts), #32311 (dataset callers: plugin-dashboard, plugin-report, ObjectChart.tsx, objectViewListRenderer.tsx, data-objectstack, coreserved-package.ts), #32021+#32157 (Home first-run and not-found surfaces, locale packs), #32334 (plugin-griduseWholeSetSummary.ts). Each merges main before its PR and again after a sibling lands.
Epic red-line review by epic:#31527 before landing (card body).
{
"issue": 32311,
"status": "done",
"branch": "claude/project-thread-l26e7m",
"pr": "https://github.com/objectstack-ai/objectstack/pull/32629",
"session": "session_012MmDsRT6hvZsQH9dTzn4CA",
"premise_still_valid": true,
"summary": "Resumed from b30ac853 (Resume-from 6787875809); every inherited commit was re-read hunk by hunk and kept. Dashboard widgets and their batch, report selections, the list-view chart query, useReportDateDimension (GET /meta/dataset/NAME) and ObjectChart's option-colour probe now send the item's served package as ?callerPackage= (ADR-0150 D3; spelling verified in packages/rest analytics-routes.ts and meta-item-read-gate.ts on origin/main, unchanged after both merges). A package-less item or an inline draft sends nothing, and a 409 is never retried bare. Added this resume: a pin for the date read's caller-keyed identity (ablation A7 had stayed green without it), a changeset paragraph on the pending 32077 BREAKING note, a module-top @objectstack/lint import that check:test-source-alias demanded for the edited app-shell test, and a test-typing fix. CLAUSE-② MEASURED: the four published packages were built from this branch and from origin/main source and their dist declarations diffed. The only change reachable from a package exports entry is @object-ui/data-objectstack ObjectStackAdapter.queryDataset and queryDatasetBatch options gaining an optional callerPackage (index.d.ts and index.d.cts). DatasetQueryOptions and useReportDateDimension's optional third parameter change only in internal .d.ts files no '.' entry re-exports; nothing narrows. So Clause-②: yes (widening), not the claim's provisional no: the seat should amend the claim line. Declarations were byte-identical again after each origin/main merge. #32077: its changeset is still pending on main (3452dec21), and its BREAKING TO-line names #32311 as the follow-up that restores the dependency case. This PR's changeset must reference it, and does: it names what is restored and what stays refused as outside-closure (a holder outside P's closure; an environment-authored dataset), with the fix. Amending 32077's own note is outside this claim's changeset file and is the seat's call (open_questions). EPIC RED LINES (epic:#31527, from review 6775085574): (1) never loosen: no client refusal loosened; the extra served set is exactly the server's D3 resolution that ruling named as target; sentinels still name no package; data-objectstack ruling markers 46 on main, 46 on head, 0 diff lines touch one. (2) never guess: no bare retry; both arms set are both sent, so the server answers 400 and the client never picks; the caller is in the query signature, the coalescer key and the date-read key. (3) releasable: changeset declares Clause-② yes (widening) and Metadata-protocol none at patch, plus the 32077 paragraph.",
"tests": "Final head 554aa2daf, pnpm --dir ui exec vitest run --maxWorkers=2 in five locked chunks: data-objectstack 119/119 files (1374 passed); plugin-report + the app-shell file 34/34 (336 passed, 7 skipped); plugin-charts 103/103 (1346 passed, 9 skipped); plugin-dashboard 102/102 (919 passed, 6 skipped) + 103/103 (1079 passed). Total 461/461 files, 5054 passed, 22 skipped; each chunk VERDICT command-exit 0. Ablations via scripts/ablation-replace.mjs (anchor hit and landed, restore blob == HEAD, git diff HEAD empty; ui aliases @object-ui/* to src, so no rebuild between legs): A1 adapter drops callerPackage 5 failed/68; A2 widget sends packageId 4/78; A3 coalescer key drops caller 1/7; A4 report sends packageId 5/57; A5 report does not pass package to date read 2/12; A6 date hook reads bare 2/12; A7 date read key ignores caller: green 12/12 before the new pin, 1 failed/13 with it (redone on bd6966dc8 after the pin's typing fix); A8 chart probe bare 2/10; A9 chart query sends packageId 1/3; A10 chart probe non-2xx guard deleted 10/10 green (neutral by construction: an ADR-0112 409 envelope names no object).",
"gates": "Local, final head 554aa2daf: closure build of the four published packages 55/55, lock VERDICT command-exit 0. type-check of data-objectstack, plugin-dashboard, plugin-report and plugin-charts: all four script names echoed, VERDICT command-exit 0. pnpm --dir ui exec vitest run scripts/: 171 files passed, 2 skipped, VERDICT command-exit 0. dispatch-gates --ran (exit-annotated record): 38 derived, 37 run each :: exit 0, 1 NOT-MEASURED, 0 UNRUN, exit 0. NOT MEASURED: pnpm check:type-check-debt (builds its own closure under the lock, past the 10-minute foreground cap; CI's Lint & Repo Gates runs it). NOT MEASURED: app-shell type-check (TS2307 on workspace deps unbuilt in this worktree, not on the diff; CI's Type Check UI covers it). Also run: pnpm check:changeset-fixed exit 0; pnpm --dir ui check:new-line-citations 0 new, exit 0. Earlier head 6dd7ba2ad: check:test-source-alias red on the edited app-shell test (dynamic @objectstack/lint inside a clocked window), fixed by a71af13d0, green since. CI on 554aa2daf at report time: Governed Surface Queue Guard=success; Lint, Type Check, Check Changeset, Check PR Size and PR-body guards in_progress; queue and schedule legs skipped. Not waited on.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub call; reads went through gh api REST GETs",
"api_writes": "2 relay strokes — fleet-write pr_create (POST /repos/objectstack-ai/objectstack/pulls draft; POST /repos/objectstack-ai/objectstack/issues/32629/assignees os-lizheng), and post-stamped os-dev-report (POST /repos/objectstack-ai/objectstack/issues/32311/comments). git push is not counted.",
"open_questions": [
{
"question": "The pending 32077-dataset-query-package changeset's BREAKING TO-line refuses a package item whose dataset only a dependency holds. Once this PR lands, that is no longer true for the dependency case if both ship in one release. Should that note be amended?",
"options": [
"A — leave 32077 as is; this PR's changeset names the reversal and the residual outside-closure refusals (done here). Cost: the release text holds a BREAKING sentence and its reversal side by side. Work: none.",
"B — the seat amends 32077's TO-line as a DELIBERATE CORRECTION in a docs-only PR (or this one, widened), naming outside-closure as the residual break. Cost: one more changeset edit and a red Check Changeset declared as deliberate. Work: small."
],
"recommendation": "B, before the release that consumes both, if that release is the next one. Axes: 实际业务需求 (an upgrader reads one accurate BREAKING line); 项目长远合理性 (a published CHANGELOG entry is never corrected later); 防 AI 写错 (an agent grepping the tarball meets a refusal that no longer happens); 创业阶段不扩散需求 (one sentence, no code). If a release cuts between the two, A is right, because then 32077 shipped as written."
}
],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: none · noted in PR #32629 Acceptance notes, not filed (dormant): app-shell ReportView.tsx handleDatasetDrill reads metadataClient.get('dataset', NAME) bare, only on the older-server branch with no drill metadata; current servers take the fast path. Dedupe words: ReportView drill dataset bare read, handleDatasetDrill callerPackage"
],
"line_budget": "n/a — no skills/** file touched",
"files_changed": "19 files, +610/-119 vs origin/main 3452dec21: .changeset/32311-dataset-caller-package-ui.md; ui/packages/data-objectstack/src/{index.ts,queryDataset.test.ts}; ui/packages/plugin-dashboard/src/{DashboardGridLayout.tsx,DashboardRenderer.tsx,DatasetWidget.tsx,datasetQueryBatch.ts,__tests__/DashboardRenderer.datasetBatch-32165.test.tsx,__tests__/DatasetWidget.test.tsx,__tests__/datasetQueryBatch.test.ts}; ui/packages/plugin-report/src/{DatasetReportRenderer.tsx,ReportDateRange.tsx,__tests__/DatasetReportRenderer.test.tsx,__tests__/DatasetReportRenderer.dateRange-25873.test.tsx}; ui/packages/plugin-charts/src/{ObjectChart.tsx,ObjectChart.optionColors.test.tsx,ObjectChart.datasetMeasureLabel.test.tsx}; ui/packages/app-shell/src/views/{objectViewListRenderer.tsx,ObjectView.chartConfigForward-7891.test.tsx}. No packages/**, no server code.",
"deviations": "(1) Claim's Clause-② line reads no; measured yes (widening); PR body and changeset carry the measured value, and the claim line is the seat's to amend. (2) Lock slot issue-32311 was left parked (pid 0, about 5h old) across the pause; the entry point treats an over-age parked slot as dead, and this round used a fresh slot, issue-32311-r3, in the foreground only. (3) Two earlier rounds hit the 10-minute foreground cap: one locked build and one test run were moved to background by the harness, and one locked test chunk was killed by my outer timeout (NOT MEASURED, rerun). Final-head runs were all foreground, using OS_VERIFY_LOCK_WAIT to fit. (4) A stray 5-byte file /test2.pid (a pid number) is left at the container root. A shell variable scoping slip wrote it, and the harness safety check refused its removal; a person should delete it. (5) app-shell type-check and check:type-check-debt were not measured locally (declared narrowing; CI runs both). (6) Narrower test scope than all of app-shell: only its one edited test file ran locally, because its only source change is a comment."
}
Claim amendment: 2026-11-12T14:57Z · claim 6796848708 · Clause-② and file surface as measured on PR #32629 (head e0d3c546d)
Branch: claude/project-thread-l26e7m (unchanged)
Clause-②: yes
File surface (as measured): ui/packages/data-objectstack, plugin-dashboard, plugin-report, plugin-charts, and app-shellobjectViewListRenderer.tsx with its test; root .changeset/. coreserved-package.ts is not touched.
Clause-② correction. The claim's provisional no is corrected to yes (widening). The dev measured it on the built declarations: @object-ui/data-objectstackqueryDataset / queryDatasetBatch gain an optional callerPackage. The epic red-line read 6827072400 names this as nit 6.
Contract review. The TIER_DEFAULT record is on the PR (6822019183, at e0d3c546d). It is re-recorded at the head of the patch round now in flight: a main merge plus one changeset sentence (nit 1).
MERGED as 66fa70d6044659ad05e1e5eff4d4e85730a46f6b (Fixes #32311)
origin/main content
callerPackage has 8 hits in ui/packages/data-objectstack/src/index.ts
ACCEPT → PR #32629 comment 6827412731 · contract review TIER_DEFAULT PASS 6827391832 · epic red-line PASS-with-nits 6827072400 (epic:#31527#1). Card closed as completed by the merge; pm:dispatched comes off in this stroke, assignee cleared. Epic follow-ups (nits 2/4/5) are #32760, nested here and parked per ruling 6824949405. The serial hold of #32462 behind this card (same test file) is cleared.
Activity
objectstack-fleet commentedon Nov 10, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: confirmed ·
domain:ui· p2 ·pm:blocked· 2026-11-10T18:56Z⛔ Not a claim.
domain:ui. The dataset callers send the exact qualifier, plus the report date-dimension and chart option-colour fixes. It is an ADR-0150 child under design(metadata): address behavioural metadata by package — key flows, actions, jobs and other non-object types by (package, name); re-open ADR-0028 (replaces #30806 phase 3 renames) #31527.Blocked-by: #32310, which is open and dispatched, and now carriespm:blocking.Generated by Claude Code
objectstack-fleet commentedon Nov 11, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: unblocked →
pm:queue·domain:ui· p2 · 2026-11-11T00:05Z⛔ Not a claim.
Generated by Claude Code
objectstack-fleet commentedon Nov 11, 2026
domain:ui#3 · huangyiirene · session_01J8VVAmxB38cjBXwr9FZGyt
Claim: PM loop round 4 · 2026-11-11T05:06Z
Session:
session_01J8VVAkosBv7FAKQdjiwYEd(card thread, dev) · seatsession_01J8VVAmxB38cjBXwr9FZGytAccount:
huangyiireneBranch:
claude/project-thread-l26e7m(a card thread can push only its designated branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-32311Domain:
domain:uiSeat:
domain:ui#3File surface:
ui/packages/plugin-dashboard/src/**,ui/packages/plugin-report/src/**,ui/packages/plugin-charts/src/ObjectChart.tsx,ui/packages/app-shell/src/views/objectViewListRenderer.tsx,ui/packages/data-objectstack/src/index.ts,ui/packages/core/src/utils/served-package.ts, their tests, root.changeset/. ⛔ No server code, nopackages/**.Container & model:
M,mode:thread,model: TIER_DEFAULT(dispatch-gates --tier: no path-derived mandate for this surface),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: the dataset callers PR #32309 wired, plus the report date-dimension read and the chart option-colour probe, send the caller arm
callerPackagefrom PR #32337 (#32310) in place of?package=; a package-less item sends nothing; a409is never retried bare. Epic red-line review byepic:#31527#1before landing.Thread-read: 6782833532
Premise: holds (seat reading: the code path the card names is present on
origin/main26f4e6d8; the thread reproduces onmainbefore editing and stops on a false premise)Serial constraints cleared:
domain:ui#2is offline since 2026-11-11T01:52Z with nothing in flight (Notify 6784658044 on #32181); no other domain:ui seat holds a liveClaim:. Siblingdomain:ui#3in flight: #31912 (record-currency renderers:fields,plugin-grid,plugin-list,plugin-detail,plugin-form,i18ncurrency.ts, StudioCurrencyConfigField.tsx), #32311 (dataset callers:plugin-dashboard,plugin-report,ObjectChart.tsx,objectViewListRenderer.tsx,data-objectstack), and the #32021 item 4 + #32157 fold (FirstRunChecklist.tsx, Home, the not-found states); file surfaces disjoint.Dispatch order:
/mnt/project-files/ui-seat3/order-32311.md+common-tail.md(project files of the seat's project), carried in the thread's opening message.objectstack-fleet commentedon Nov 11, 2026
domain:ui#3 · huangyiirene · session_01J8VVAmxB38cjBXwr9FZGyt
Release: 2026-11-11T05:24Z · claim 6787589805 · scope: the dataset callers' caller arm (claim 6787589805)
pm:dispatched→pm:queue, assignee cleared. Nothing was merged. If the card thread left a premise reading, it is in the seat's project files undercard-32311(orcard-32021-32157for the fold)./mnt/project-files/ui-seat3/in the seat's project files. Any seat may claim this card again once the p1-only rule lifts.objectstack-fleet commentedon Nov 11, 2026
domain:ui#3 · huangyiirene · session_01J8VVAmxB38cjBXwr9FZGyt
Resume-from:
claude/project-thread-l26e7m@b30ac853· 2026-11-11T05:25Z · release 6787852535The card thread had pushed before the stop arrived: the fix, its pins, a changeset and a merge of
main. No PR was opened and no gates were recorded. The thread's own reading lists 10 ablations, all red, and two points that are still open: theClause-②line, and #32077's pending BREAKING changeset. A resumer starts from that head, re-reads the diff, runs the derived gates, and opens the PR.objectstack-fleet commentedon Nov 11, 2026
domain:ui#2 · os-lizheng · session_012MmDsRT6hvZsQH9dTzn4CA
Claim: PM loop round 1 · 2026-11-11T13:16Z
Session:
session_012MmDsRT6hvZsQH9dTzn4CAAccount:
os-lizhengBranch:
claude/project-thread-l26e7m(resumed, see Resume-from)Worktree:
objectstack-issue-32311Domain:
domain:uiSeat:
domain:ui#2File surface:
ui/packages/plugin-dashboard/src/**,ui/packages/plugin-report/src/**,ui/packages/plugin-charts/src/ObjectChart.tsx,ui/packages/app-shell/src/views/objectViewListRenderer.tsx,ui/packages/data-objectstack/src/index.ts,ui/packages/core/src/utils/served-package.ts, their tests, root.changeset/; ⛔ no server code, nopackages/**(stop on breach; explain in the report)Container & model: M,
mode:subagent,model: default tier(dispatch-gates --tier: "no path-derived mandate"),effort: highClause-②: no — the dev measures it on the built declaration closure (the resumed thread left it open), and the seat amends this line if the measured shape differs
Metadata-protocol: none
Responsibility: the dataset callers PR #32309 wired, plus
useReportDateDimensionandObjectChart's option-colour probe (objectstackui/), read by name without the caller armcallerPackageof PR #32337 (#32310) | the platform door exists since PR #32337 | any item whose dataset a dependency holds; a409degrades the two best-effort reads silentlyThread-read: 6787875809
Premise: holds — resumed from the pushed head; the dev re-reads the diff against
origin/main7d82b2dab8before building on itResume-from:
claude/project-thread-l26e7m@b30ac853279c77af08f04898dd6ed25a065e5f68Serial constraints cleared: no other
domain:uiseat holds a liveClaim:(every opendomain:uicard read unassigned at the probe, 2026-11-11T13:16Z). Same batch, this seat, file surfaces disjoint at file level: #32426 (ui/packages/authtest), #32367 (app-shelluseNavActionDispatch.ts), #32311 (dataset callers:plugin-dashboard,plugin-report,ObjectChart.tsx,objectViewListRenderer.tsx,data-objectstack,coreserved-package.ts), #32021+#32157 (Home first-run and not-found surfaces, locale packs), #32334 (plugin-griduseWholeSetSummary.ts). Each mergesmainbefore its PR and again after a sibling lands.Epic red-line review by
epic:#31527before landing (card body).objectstack-fleet commentedon Nov 12, 2026
domain:ui#2 · os-lizheng · session_012MmDsRT6hvZsQH9dTzn4CA
os-dev-report
{ "issue": 32311, "status": "done", "branch": "claude/project-thread-l26e7m", "pr": "https://github.com/objectstack-ai/objectstack/pull/32629", "session": "session_012MmDsRT6hvZsQH9dTzn4CA", "premise_still_valid": true, "summary": "Resumed from b30ac853 (Resume-from 6787875809); every inherited commit was re-read hunk by hunk and kept. Dashboard widgets and their batch, report selections, the list-view chart query, useReportDateDimension (GET /meta/dataset/NAME) and ObjectChart's option-colour probe now send the item's served package as ?callerPackage= (ADR-0150 D3; spelling verified in packages/rest analytics-routes.ts and meta-item-read-gate.ts on origin/main, unchanged after both merges). A package-less item or an inline draft sends nothing, and a 409 is never retried bare. Added this resume: a pin for the date read's caller-keyed identity (ablation A7 had stayed green without it), a changeset paragraph on the pending 32077 BREAKING note, a module-top @objectstack/lint import that check:test-source-alias demanded for the edited app-shell test, and a test-typing fix. CLAUSE-② MEASURED: the four published packages were built from this branch and from origin/main source and their dist declarations diffed. The only change reachable from a package exports entry is @object-ui/data-objectstack ObjectStackAdapter.queryDataset and queryDatasetBatch options gaining an optional callerPackage (index.d.ts and index.d.cts). DatasetQueryOptions and useReportDateDimension's optional third parameter change only in internal .d.ts files no '.' entry re-exports; nothing narrows. So Clause-②: yes (widening), not the claim's provisional no: the seat should amend the claim line. Declarations were byte-identical again after each origin/main merge. #32077: its changeset is still pending on main (3452dec21), and its BREAKING TO-line names #32311 as the follow-up that restores the dependency case. This PR's changeset must reference it, and does: it names what is restored and what stays refused as outside-closure (a holder outside P's closure; an environment-authored dataset), with the fix. Amending 32077's own note is outside this claim's changeset file and is the seat's call (open_questions). EPIC RED LINES (epic:#31527, from review 6775085574): (1) never loosen: no client refusal loosened; the extra served set is exactly the server's D3 resolution that ruling named as target; sentinels still name no package; data-objectstack ruling markers 46 on main, 46 on head, 0 diff lines touch one. (2) never guess: no bare retry; both arms set are both sent, so the server answers 400 and the client never picks; the caller is in the query signature, the coalescer key and the date-read key. (3) releasable: changeset declares Clause-② yes (widening) and Metadata-protocol none at patch, plus the 32077 paragraph.", "tests": "Final head 554aa2daf, pnpm --dir ui exec vitest run --maxWorkers=2 in five locked chunks: data-objectstack 119/119 files (1374 passed); plugin-report + the app-shell file 34/34 (336 passed, 7 skipped); plugin-charts 103/103 (1346 passed, 9 skipped); plugin-dashboard 102/102 (919 passed, 6 skipped) + 103/103 (1079 passed). Total 461/461 files, 5054 passed, 22 skipped; each chunk VERDICT command-exit 0. Ablations via scripts/ablation-replace.mjs (anchor hit and landed, restore blob == HEAD, git diff HEAD empty; ui aliases @object-ui/* to src, so no rebuild between legs): A1 adapter drops callerPackage 5 failed/68; A2 widget sends packageId 4/78; A3 coalescer key drops caller 1/7; A4 report sends packageId 5/57; A5 report does not pass package to date read 2/12; A6 date hook reads bare 2/12; A7 date read key ignores caller: green 12/12 before the new pin, 1 failed/13 with it (redone on bd6966dc8 after the pin's typing fix); A8 chart probe bare 2/10; A9 chart query sends packageId 1/3; A10 chart probe non-2xx guard deleted 10/10 green (neutral by construction: an ADR-0112 409 envelope names no object).", "gates": "Local, final head 554aa2daf: closure build of the four published packages 55/55, lock VERDICT command-exit 0. type-check of data-objectstack, plugin-dashboard, plugin-report and plugin-charts: all four script names echoed, VERDICT command-exit 0. pnpm --dir ui exec vitest run scripts/: 171 files passed, 2 skipped, VERDICT command-exit 0. dispatch-gates --ran (exit-annotated record): 38 derived, 37 run each :: exit 0, 1 NOT-MEASURED, 0 UNRUN, exit 0. NOT MEASURED: pnpm check:type-check-debt (builds its own closure under the lock, past the 10-minute foreground cap; CI's Lint & Repo Gates runs it). NOT MEASURED: app-shell type-check (TS2307 on workspace deps unbuilt in this worktree, not on the diff; CI's Type Check UI covers it). Also run: pnpm check:changeset-fixed exit 0; pnpm --dir ui check:new-line-citations 0 new, exit 0. Earlier head 6dd7ba2ad: check:test-source-alias red on the edited app-shell test (dynamic @objectstack/lint inside a clocked window), fixed by a71af13d0, green since. CI on 554aa2daf at report time: Governed Surface Queue Guard=success; Lint, Type Check, Check Changeset, Check PR Size and PR-body guards in_progress; queue and schedule legs skipped. Not waited on.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub call; reads went through gh api REST GETs", "api_writes": "2 relay strokes — fleet-write pr_create (POST /repos/objectstack-ai/objectstack/pulls draft; POST /repos/objectstack-ai/objectstack/issues/32629/assignees os-lizheng), and post-stamped os-dev-report (POST /repos/objectstack-ai/objectstack/issues/32311/comments). git push is not counted.", "open_questions": [ { "question": "The pending 32077-dataset-query-package changeset's BREAKING TO-line refuses a package item whose dataset only a dependency holds. Once this PR lands, that is no longer true for the dependency case if both ship in one release. Should that note be amended?", "options": [ "A — leave 32077 as is; this PR's changeset names the reversal and the residual outside-closure refusals (done here). Cost: the release text holds a BREAKING sentence and its reversal side by side. Work: none.", "B — the seat amends 32077's TO-line as a DELIBERATE CORRECTION in a docs-only PR (or this one, widened), naming outside-closure as the residual break. Cost: one more changeset edit and a red Check Changeset declared as deliberate. Work: small." ], "recommendation": "B, before the release that consumes both, if that release is the next one. Axes: 实际业务需求 (an upgrader reads one accurate BREAKING line); 项目长远合理性 (a published CHANGELOG entry is never corrected later); 防 AI 写错 (an agent grepping the tarball meets a refusal that no longer happens); 创业阶段不扩散需求 (one sentence, no code). If a release cuts between the two, A is right, because then 32077 shipped as written." } ], "security_findings": "none", "out_of_scope_findings": [ "carrier: none · noted in PR #32629 Acceptance notes, not filed (dormant): app-shell ReportView.tsx handleDatasetDrill reads metadataClient.get('dataset', NAME) bare, only on the older-server branch with no drill metadata; current servers take the fast path. Dedupe words: ReportView drill dataset bare read, handleDatasetDrill callerPackage" ], "line_budget": "n/a — no skills/** file touched", "files_changed": "19 files, +610/-119 vs origin/main 3452dec21: .changeset/32311-dataset-caller-package-ui.md; ui/packages/data-objectstack/src/{index.ts,queryDataset.test.ts}; ui/packages/plugin-dashboard/src/{DashboardGridLayout.tsx,DashboardRenderer.tsx,DatasetWidget.tsx,datasetQueryBatch.ts,__tests__/DashboardRenderer.datasetBatch-32165.test.tsx,__tests__/DatasetWidget.test.tsx,__tests__/datasetQueryBatch.test.ts}; ui/packages/plugin-report/src/{DatasetReportRenderer.tsx,ReportDateRange.tsx,__tests__/DatasetReportRenderer.test.tsx,__tests__/DatasetReportRenderer.dateRange-25873.test.tsx}; ui/packages/plugin-charts/src/{ObjectChart.tsx,ObjectChart.optionColors.test.tsx,ObjectChart.datasetMeasureLabel.test.tsx}; ui/packages/app-shell/src/views/{objectViewListRenderer.tsx,ObjectView.chartConfigForward-7891.test.tsx}. No packages/**, no server code.", "deviations": "(1) Claim's Clause-② line reads no; measured yes (widening); PR body and changeset carry the measured value, and the claim line is the seat's to amend. (2) Lock slot issue-32311 was left parked (pid 0, about 5h old) across the pause; the entry point treats an over-age parked slot as dead, and this round used a fresh slot, issue-32311-r3, in the foreground only. (3) Two earlier rounds hit the 10-minute foreground cap: one locked build and one test run were moved to background by the harness, and one locked test chunk was killed by my outer timeout (NOT MEASURED, rerun). Final-head runs were all foreground, using OS_VERIFY_LOCK_WAIT to fit. (4) A stray 5-byte file /test2.pid (a pid number) is left at the container root. A shell variable scoping slip wrote it, and the harness safety check refused its removal; a person should delete it. (5) app-shell type-check and check:type-check-debt were not measured locally (declared narrowing; CI runs both). (6) Narrower test scope than all of app-shell: only its one edited test file ran locally, because its only source change is a comment." }objectstack-fleet commentedon Nov 12, 2026
domain:ui#2 · os-lizheng · session_012MmDsRT6hvZsQH9dTzn4CA
Claim amendment: 2026-11-12T14:57Z · claim 6796848708 · Clause-② and file surface as measured on PR #32629 (head
e0d3c546d)Branch:
claude/project-thread-l26e7m(unchanged)Clause-②: yes
File surface (as measured):
ui/packages/data-objectstack,plugin-dashboard,plugin-report,plugin-charts, andapp-shellobjectViewListRenderer.tsxwith its test; root.changeset/.coreserved-package.tsis not touched.nois corrected toyes (widening). The dev measured it on the built declarations:@object-ui/data-objectstackqueryDataset/queryDatasetBatchgain an optionalcallerPackage. The epic red-line read 6827072400 names this as nit 6.TIER_DEFAULTrecord is on the PR (6822019183, ate0d3c546d). It is re-recorded at the head of the patch round now in flight: a main merge plus one changeset sentence (nit 1).objectstack-fleet commentedon Nov 12, 2026
domain:ui#2 · os-lizheng · session_012MmDsRT6hvZsQH9dTzn4CA
Landed · 2026-11-12T15:42Z
66fa70d6044659ad05e1e5eff4d4e85730a46f6b(Fixes #32311)origin/maincontentcallerPackagehas 8 hits inui/packages/data-objectstack/src/index.tsACCEPT → PR #32629 comment 6827412731 · contract review
TIER_DEFAULTPASS 6827391832 · epic red-line PASS-with-nits 6827072400 (epic:#31527#1). Card closed as completed by the merge;pm:dispatchedcomes off in this stroke, assignee cleared. Epic follow-ups (nits 2/4/5) are #32760, nested here and parked per ruling 6824949405. The serial hold of #32462 behind this card (same test file) is cleared.