Skip to content

console: the sharing-rule object picker lists only shareable objects, business objects first #31217

Open

Description

@objectstack-fleet

domain:server#3 · marchtian · session_017ihL2dFb2QdZEHEJ83cR2B

Filing gate: ② missing capability, the console half of #30209 row 5 (option B). The server half is PR #31207, GET /api/v1/sharing/shareable-objects. ⛔ Not a claim. Triage sets the grade and the lane.
Reader: the ui seat for console field widgets (ui/packages/fields), plus a one-line object edit in packages/plugins/plugin-sharing (the sys_sharing_rule.object_name widget hint).
Dedupe (open AND closed): sharing rule object picker → 106 hits, shareable objects → 12; the only open match is #30209 (the source card). #30621 (closed) is the save-time refusal this list mirrors.
reach: the console's 共享规则 new form, object field; read from the code on main and PR #31207, not run.
type: Enhancement

维护者速读

新建共享规则时,对象下拉框列出 86 个对象,大多是 sys_*,业务对象埋在里面,而且有些对象选了也存不进去。服务器已经有(或即将有,PR #31207)一个只列「规则能生效的对象」的接口,业务对象在前。本卡让下拉框改读这个接口。

What to build

  • A console picker widget that reads GET /api/v1/sharing/shareable-objects (admin-only; same admission as the rule doors) and shows its order as given: business objects, then platform objects, each by label.
  • Flip the widget hint on sys_sharing_rule.object_name to the new widget in the same PR that registers it. Today the field uses object-ref, which works; an unregistered hint degrades to a text box, so the hint must not move before the widget exists (feat(plugin-sharing): list the objects a sharing rule can take effect on #31207 deliberately left it).
  • Behaviour on refusal: 403/501 from the endpoint falls back to today's object-ref list rather than an empty picker.

Acceptance

  • The picker lists no object that a save would refuse with SHARING_NOT_ENABLED, and no credential or session object (sys_session, sys_account, sys_api_key, sys_secret, …).
  • Business objects come first.
  • CONTROL: an object that is shareable on main stays selectable and saves.

Depends on: PR #31207 merged.
Suggested-grade: p3 · from a Setup walkthrough (#30209).

Activity

  1. added
    enhancementNew feature or request
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 7, 2026
  2. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:ui · 2026-11-07T18:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 7, 2026
  4. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · os-project-manager · session_01FEkQ5nLA7wiVY5YWjT9Svr

    Claim: PM loop round 2 · 2026-11-07T19:20Z
    Session: session_01FEkQ5ntiCZev2cDL6r5VLw (card thread, dev) · seat session_01FEkQ5nLA7wiVY5YWjT9Svr
    Account: os-project-manager
    Branch: claude/project-thread-vxpifh
    Worktree: objectstack-issue-31217
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: a new sharing-rule object picker widget in ui/packages/fields/** (and its registration), the sys_sharing_rule.object_name widget hint in packages/plugins/plugin-sharing/src/objects/** with its pin, their tests, root .changeset/
    Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (missing capability, #30209 row 5 option B)
    Thread-read: 6711639855
    Premise: holds: the door GET /api/v1/sharing/shareable-objects is on main (PR #31207 merged 2026-11-07T18:57Z, shareable-objects-routes.ts), and sys_sharing_rule.object_name still hints object-ref (sys-sharing-rule.by-object.test.ts:80)
    Serial constraints cleared: none — no other domain:ui card is pm:dispatched on ui/packages/fields or plugin-sharing

    Scope: the card as written, one PR, Fixes #31217; the declaration lines start at no / none and the dev measures them on the diff (an added i18n key or a new published export or widget name ⇒ yes (widening)), and the seat amends this claim. Order: /mnt/project-files/pm-orders/ui/order-31217.md. Summons: the maintainer's 「开一个 devx 席位,开一个 spec 席位,开一个 ui 席位」 (this project, 2026-11-07).

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

Metadata

Metadata

Labels

domain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions