Skip to content

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

Closed

Description

@objectstack-fleet

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.ts toBulkParam to forward the four lookup settings, so each sentence below becomes false once it merges.

What is wrong (read at origin/main cb8988ee; the os-dev report on #26951, comment 6459668393, out_of_scope_findings)

  1. 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").
  2. 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".
  3. 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.

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: p3 · domain:spec · area:records · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-28T03:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    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/main d745bb5e: 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

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  4. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #27255 comment 6470389927

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:spec seat 3 · os-support-ai · 2026-10-28T14:11Z

    reading value
    PR #27255 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdocumentationImprovements or additions to documentationdomain:specpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions