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
spec(ui): the bulk-action JSDoc, refusal prescription and view.json liveness row still say the bulk path drops a lookup param's lookupFilters / lookupColumns / lookupPageSize / descriptionField #27050
Filing gate ① a defect with a named location: shipped spec prose that teaches the wrong behaviour. This is follow-up owed by landed work: the spec half of #26951, split off by ui seat 2 because a packages/spec/src/** diff sits behind the Clause-② queue gate's path limb.
finding class b · reach: named producer. PR #27049 (Refs #26951, ui seat 2 ACCEPT) changes ui/packages/plugin-grid/src/resolveBulkActions.tstoBulkParam to forward the four lookup settings, so each sentence below becomes false once it merges.
What is wrong (read at origin/maincb8988ee; the os-dev report on #26951, comment 6459668393, out_of_scope_findings)
packages/spec/src/ui/bulk-action.zod.ts ≈L161–163, the JSDoc above BULK_PARAM_WIDGET_CONFIG_KEYS: "The lookup settings lookupFilters / lookupColumns / lookupPageSize / descriptionField are resolved and then dropped by the bulk adapter" (and "From THIS list only accept and maxSize make the trip").
packages/spec/src/ui/bulk-action.zod.ts ≈L260–262, the refusal prescription: "So of these keys only accept / maxSize arrive that way: the picker settings lookupFilters / lookupColumns / lookupPageSize / descriptionField are dropped on the bulk path".
packages/spec/liveness/view.json ≈L198, row list.bulkActionDefs: "... #toBulkParam, which carries ... and drops the lookup settings."
Expected
All three say that a promoted bulk action's field-backed lookup param carries the field's lookupFilters, lookupColumns, lookupPageSize and descriptionField to the selection bar's picker, the same as the single-record dialog. idField / titleFormat are still not carried, so keep any sentence about those. The refusal prescription's accept set does not change: this is prose, not schema.
Business reason
App authors read this JSDoc and its refusal text, through the skills and the metadata form help, to decide whether a bulk action's lookup is narrowed. Once #27049 lands, the spec would tell them to work around a drop that no longer happens. Without this fix the published @objectstack/spec contradicts the console.
Reader who acts
The domain:spec seat, in one PR touching those two files, after PR #27049 merges. Re-read the line numbers then.
Dedupe
Listed domain:spec issues (state all, newest 300) and checked titles and leads for bulk / lookupFilters: 0 hits on this prose. The related closed cards #25205 and #24798 are about confirmText, not lookup settings.
Claim: PM loop round 3 · 2026-10-28T12:13Z
Session: session_01WGufzgbJhFoXYsLSe5WSPP
Account: os-support-ai
Branch: claude/project-thread-4yt16g (card thread; the platform assigns the thread's branch and it can push only that one, written as measured instead of claude/issue-27050-<slug>)
Worktree: objectstack-27050
Domain: domain:spec
Seat: domain:spec#3
Ruling-ref: none (triage 6460237597)
File surface: packages/spec/src/ui/bulk-action.zod.ts (prose only), packages/spec/liveness/view.json (row list.bulkActionDefs), any other prose copy PR #27049 made false, the regenerated references / metadata forms / form translations, one changeset per touched published package (stop on breach; explain in the report)
Container & model: XS, mode:thread, model: TIER_DEFAULT — --tier: no path-derived mandate (prose; the accept set does not move), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: a p3 domain:spec card, the queue holding no unclaimed p1/p2 domain:spec card free of a serial constraint
Thread-read: 6460237597
Premise: holds on origin/maind745bb5e: PR #27049 merged, so toBulkParam forwards the four lookup settings while the spec prose still says they are dropped
Serial constraints cleared: no open PR on these files that the seat knows of; the dev re-checks before editing
{
"issue": 27050,
"status": "done",
"branch": "claude/project-thread-4yt16g",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27255",
"session": "session_01WGufzh5MQsqK7dBe3KZ9Aa",
"premise_still_valid": true,
"summary": "Prose only, accept set unchanged. toBulkParam on main d745bb5e forwards descriptionField, lookupColumns, lookupFilters and lookupPageSize (PR #27049, c4ad55ca, ancestor exit 0) and carries no idField or titleFormat. The BULK_PARAM_WIDGET_CONFIG_KEYS JSDoc, its refusal prescription, the list.bulkActionDefs liveness row, and the v18 semantic migration entry ui-bulk-action-param-unknown-keys-refused (replacement and reason, a copy the merge made false and that os migrate meta prints) now say a promoted bulk lookup param carries those four to the selection bar's picker like the single-record dialog; the idField sentence is kept. One test comment in bulk-action.test.ts updated, assertions unchanged. No skills/** edit (not governed); no generated output reads these strings, so nothing regenerated. Changeset: @objectstack/spec patch.",
"tests": "head 0b20e1f14: os-verify-lock pnpm --filter @objectstack/spec build -> exit 0; os-verify-lock 'pnpm --filter @objectstack/spec test && pnpm --filter @objectstack/spec typecheck' -> VERDICT command-exit 0, Test Files 743 passed (743), Tests 22263 passed, 1 todo, check:test-typecheck OK. test:repo not run locally (no repo-project test edited, not derived); CI Test Core runs it. No ablation: no tested behaviour changed.",
"gates": "head 0b20e1f14: dispatch-gates --commands --repo objectstack-ai/objectstack -> 83 commands run serially; 81 exit 0 (incl. check-adr-0087-registration --base origin/main, check:liveness); check-plugin-teardown-shape --self-test and check:doc-formula-expressions first exit 3 (prereq), re-run after fetching the pinned fixture commit and building formula+lint -> exit 0; check:dual-build-cjs-loads and check:lean-entry-closure exit 3 PREREQUISITE NOT MET (need a full build) -> NOT MEASURED, CI Build Core runs them. dispatch-gates --ran -> 83 accounted, 81 run, 2 NOT-MEASURED, exit 0. check-changeset-no-major with the PR body as a pull_request event -> exit 0. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "3 — git push (claude/project-thread-4yt16g); fleet-write pr_create (#27255, assignee os-support-ai, read back byte-identical); fleet-write comment on #27050 (this report)",
"open_questions": [],
"out_of_scope_findings": []
}
merged through the queue at 2026-10-28T14:07Z, merge commit c082af625e
origin/main
contains the merge commit (git merge-base --is-ancestor)
Delivered: the bulk-action JSDoc, its refusal prescription, the v18 migration entry and the list.bulkActionDefs liveness row now say that a promoted bulk action's lookup param carries lookupFilters, lookupColumns, lookupPageSize and descriptionField to the selection bar's picker, and that idField / titleFormat still do not travel. The accept set is unchanged. pm:dispatched is removed here.
Activity
objectstack-fleet commentedon Oct 28, 2026
Triage: p3 ·
domain:spec·area:records· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-28T03:54Z⛔ Not a claim.
lookupFilters, so the selection-toolbar picker offers records the row-menu picker hides #26951. Three spec sentences (the JSDoc, the refusal prescription and theview.jsonliveness row) say the bulk path drops the lookup settings, and PR fix(plugin-grid): keep a field-backed bulk lookup param's lookupFilters and picker settings #27049 makes them carry. The accept set is unchanged.documentationandpm:queueadded.Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Claim: PM loop round 3 · 2026-10-28T12:13Z
Session:
session_01WGufzgbJhFoXYsLSe5WSPPAccount:
os-support-aiBranch:
claude/project-thread-4yt16g(card thread; the platform assigns the thread's branch and it can push only that one, written as measured instead ofclaude/issue-27050-<slug>)Worktree:
objectstack-27050Domain:
domain:specSeat:
domain:spec#3Ruling-ref: none (triage 6460237597)
File surface:
packages/spec/src/ui/bulk-action.zod.ts(prose only),packages/spec/liveness/view.json(rowlist.bulkActionDefs), any other prose copy PR #27049 made false, the regenerated references / metadata forms / form translations, one changeset per touched published package (stop on breach; explain in the report)Container & model:
XS,mode:thread,model: TIER_DEFAULT — --tier: no path-derived mandate (prose; the accept set does not move),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: a p3
domain:speccard, the queue holding no unclaimed p1/p2domain:speccard free of a serial constraintThread-read: 6460237597
Premise: holds on
origin/maind745bb5e: PR #27049 merged, sotoBulkParamforwards the four lookup settings while the spec prose still says they are droppedSerial constraints cleared: no open PR on these files that the seat knows of; the dev re-checks before editing
objectstack-fleet commentedon Oct 28, 2026
os-dev-report
{ "issue": 27050, "status": "done", "branch": "claude/project-thread-4yt16g", "pr": "https://github.com/objectstack-ai/objectstack/pull/27255", "session": "session_01WGufzh5MQsqK7dBe3KZ9Aa", "premise_still_valid": true, "summary": "Prose only, accept set unchanged. toBulkParam on main d745bb5e forwards descriptionField, lookupColumns, lookupFilters and lookupPageSize (PR #27049, c4ad55ca, ancestor exit 0) and carries no idField or titleFormat. The BULK_PARAM_WIDGET_CONFIG_KEYS JSDoc, its refusal prescription, the list.bulkActionDefs liveness row, and the v18 semantic migration entry ui-bulk-action-param-unknown-keys-refused (replacement and reason, a copy the merge made false and that os migrate meta prints) now say a promoted bulk lookup param carries those four to the selection bar's picker like the single-record dialog; the idField sentence is kept. One test comment in bulk-action.test.ts updated, assertions unchanged. No skills/** edit (not governed); no generated output reads these strings, so nothing regenerated. Changeset: @objectstack/spec patch.", "tests": "head 0b20e1f14: os-verify-lock pnpm --filter @objectstack/spec build -> exit 0; os-verify-lock 'pnpm --filter @objectstack/spec test && pnpm --filter @objectstack/spec typecheck' -> VERDICT command-exit 0, Test Files 743 passed (743), Tests 22263 passed, 1 todo, check:test-typecheck OK. test:repo not run locally (no repo-project test edited, not derived); CI Test Core runs it. No ablation: no tested behaviour changed.", "gates": "head 0b20e1f14: dispatch-gates --commands --repo objectstack-ai/objectstack -> 83 commands run serially; 81 exit 0 (incl. check-adr-0087-registration --base origin/main, check:liveness); check-plugin-teardown-shape --self-test and check:doc-formula-expressions first exit 3 (prereq), re-run after fetching the pinned fixture commit and building formula+lint -> exit 0; check:dual-build-cjs-loads and check:lean-entry-closure exit 3 PREREQUISITE NOT MET (need a full build) -> NOT MEASURED, CI Build Core runs them. dispatch-gates --ran -> 83 accounted, 81 run, 2 NOT-MEASURED, exit 0. check-changeset-no-major with the PR body as a pull_request event -> exit 0. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "3 — git push (claude/project-thread-4yt16g); fleet-write pr_create (#27255, assignee os-support-ai, read back byte-identical); fleet-write comment on #27050 (this report)", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
ACCEPT → PR #27255 comment 6470389927
objectstack-fleet commentedon Oct 28, 2026
Landed ·
domain:specseat 3 ·os-support-ai· 2026-10-28T14:11Zc082af625eorigin/maingit merge-base --is-ancestor)Delivered: the bulk-action JSDoc, its refusal prescription, the v18 migration entry and the
list.bulkActionDefsliveness row now say that a promoted bulk action's lookup param carrieslookupFilters,lookupColumns,lookupPageSizeanddescriptionFieldto the selection bar's picker, and thatidField/titleFormatstill do not travel. The accept set is unchanged.pm:dispatchedis removed here.