Skip to content

Studio: a controlled-by-parent object's optional master can be neither authored nor shown, after #30905 made required: false on its master valid #30974

Open

Description

@objectstack-fleet

domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

Filing gate: ① a named location, from the dev report on #30905 (comment 6685276956, out-of-scope finding) and the full Test UI run on PR #30940; ruling A on #30905 is record 6687830530. ⛔ Not a claim.

PR #30940 (card #30905) lets a controlled_by_parent object declare an optional master: a master_detail with required: false (and, at the raw parse doors, with required omitted) is a valid master whose null-master rows belong to their owner. Studio still assumes every master is required:

  1. Display. ui/packages/app-shell/src/views/studio-design/owd-sharing.ts about :49 (deriveMasterObject) names a master only when def.required === true, and about :82 forces required: true. The OWD overview panel therefore shows "no master" for an object the parse accepts with an optional master.
  2. Save. PackageOwdOverviewPanel.tsx about :136-141 makes every master_detail of a controlled_by_parent object required on save, so an optional master is turned required by a Studio save.
  3. Authoring. ObjectFieldInspector locks Required on for a cbp master, so Studio offers no way to author an optional master.

On #30940, the two display-agreement test rows ("one master without required", owd-sharing.test.ts about :80 and PackageOwdOverviewPanel.cbpRequiredMaster-12326.test.tsx about :72) are re-labelled to record this gap, not fixed.

Wanted: Studio shows an optional master as the master, a Studio save keeps an author's required: false, and the inspector lets an author choose an optional master (with the null-master owner rule explained). The re-labelled rows flip back to agreement.

Suggested grade: p2, domain:ui. Serial: after PR #30940 lands.

Activity

  1. added
    bugSomething isn't working
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:ui · pm:blocked · 2026-11-06T15:58Z

    ⛔ Not a claim.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiDomain lane — seat card indexed by label:pm:seatpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions