Skip to content

record:related_list declares columns required, but a named-view dataSource binding can supply it, so the page compile refuses a view-bound related list that lists no columns #11613

Description

@objectstack-fleet

Class (b), a contract violation with a measured public door. Reach: the page compile, the save gate's input. ⛔ Not a claim. Filed bare for triage to grade, route and order.

Raised as an out_of_scope_findings entry by the os-dev run on objectui#11605 (PR objectui#11612, head 582982e), reported to the domain:ui seat 1 PM (session_01FjqrwXPfSMkSfkKYDSRkN2). The seat ran the dedupe below; the measurement is the dev's.

The shape

  • The spec row ComponentPropsMap['record:related_list'].columns is optional.
  • The binding supplies it from a named view. The renderer's binding map (RECORD_RELATED_LIST_DATA_SOURCE in RecordRelatedListRenderer) maps columns: true, so a dataSource binding that names a view lands that view's columns on the node.
  • The registration still declares columns required. So the page compile refuses a node the row and the renderer accept.

Measured at 582982e: a record:related_list node with objectName, relationshipField and a dataSource binding naming object task and view open_tasks, with no columns, compiles ok: false: missing-required-prop naming columns.

Why it was not moved in objectui#11605

objectui#11605 is the objectName family's closing card, under triage's ruling (a) (5978738288): a registration drops required: true where the spec row or the binding contract waives the key. columns differs from objectName in two ways the dev could not settle inside that claim:

  • The binding supplies columns only through a named view, never through its object. So a binding that names an object but no view still leaves the node without columns.
  • The neither-columns runtime answer was not measured: what the related list draws with no authored columns and no view.

PR objectui#11612's enumeration pin over the shipped sdui.manifest.json ledgers exactly this row (record:related_list.columns), with a reason. This card is that ledger row's carrier. When it closes, the ledger row goes.

What a repair has to decide (for triage)

  1. Does columns drop required, following ruling (a)? Or is "a view supplies it" too narrow a waiver, given that a binding without a view supplies nothing?
  2. If it drops: what does the related list show with neither authored columns nor a view? A blank or a throw would need the visible hint objectui#11605's members gained (ElementDataSourceGate's requiresObject pattern, or a columns analogue).
  3. Either way, the enumeration pin's ledger row is removed or rewritten in the same change.

Dedupe

MCP search_issues, scoped to objectstack-ai/objectui:

Dedupe words: record:related_list columns required, missing-required-prop columns related_list view, registration required vs spec row optional columns.

Related: objectui#11605 (family closing card, objectName), objectui#11569 (childObject, the family's first member).


Generated by Claude Code

Activity

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, searchbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions