Skip to content

Object-extension overlay fields are missing from GET /meta/object/:name (present in the list route) — the overlay's fields can never be set through the UI #7556

Description

@huangyiirene

Symptom

The showcase account extension contributes 3 fields. Where they show up:

Surface Extension fields present?
GET /meta/object (list) yes
GET /meta/object/showcase_account (by name) no
GET /meta/object/showcase_account?layers=true no — absent from both layers
GET /api/v1/data/... round-trip yes — they are real columns, values persist
Read-only record detail page yes — they render

Expected: the by-name response composes the same contributors the list response does, so an object's resolved schema is identical whichever way it is fetched.

Consequence, and why this is not cosmetic: the edit and new forms derive from the by-name response, so the three overlay fields are absent from every writable form. They can be read, and they can be written through the data API, but they can never be set through the UI.

Root cause

Not located by the report. What the evidence constrains:

  • The contribution is registered and is materialised — the columns exist and round-trip through /api/v1/data, and the list route composes them.
  • So the fault is on the by-name read path, not in registration: the by-name handler resolves the object from a source that omits extension contributors, and the ?layers=true projection omits them too (they are in neither layer, not merely folded into the wrong one).

Whether the omission sits in the REST /meta/object/:name handler or in the metadata read path it calls needs to be measured; the ?layers=true behaviour points at the layer-resolution side rather than at REST plumbing, which is why this card is filed domain:metadata — re-route if the fix turns out to land in packages/rest.

Timing note for whoever picks this up: #7306 (ADR-0029 D9, "register a tenant object overlay as its own contributor layer") merged 2026-08-10T09:34Z, around when this run's framework commit was cut, and it changes layer classification and the getArtifactItem read. It targets tenant (_provenance:'org') overlays rather than a code-declared extension, so it is not expected to fix this — but re-measure on current main before starting.

Reproduction

  1. Boot the showcase (it declares the account extension with its 3 extra fields).
  2. GET /meta/object — the extension fields are in the listed showcase_account entry.
  3. GET /meta/object/showcase_account — they are gone.
  4. GET /meta/object/showcase_account?layers=true — still gone, in both layers.
  5. Open the record's edit/new form in the console — no inputs for those 3 fields; open the read-only detail page — they render, with values written through /api/v1/data.

Source

Extracted from the QA run #7514 (framework a86db17, console 09987b68).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions