A view authored at runtime and stored as an aggregated container (no top-level viewKind) is not returned by GET /api/v1/meta/view?object=<obj> / getViewsByObject, so a "live-in-app authored view" never reaches the object's consumer read door. This is the live recurrence of the closed #7163 ("the nested-plugin seam does not expand an aggregated views container … getViewsByObject() answers with the container alone") and #7736 ("the documented view-container authoring path is inert at runtime — the container is stored but never served") — the expansion fix does not cover a runtime-authored container's object derivation.
This is NOT an org-scoping defect (a sibling finding on the same item first read it that way; corrected on verify). The door IS org-aware: org-scoped views authored as expanded ViewItems ARE returned to their own org and hidden cross-org. The discriminator is container-vs-expanded, org-independent.
Reproduction (×2, verify-pass confirmed)
- As a signed-in user with an active org,
PUT /api/v1/meta/view/<name> a view bound to object note. Tried both the aggregated-container shape and the canonical {list:{type,data:{provider:'object',object:'note'},columns}} shape; both land in pg as active rows.
GET /api/v1/meta/view?object=note → the authored view is absent.
- Positive control: other views already stored as expanded ViewItems (top-level
viewKind:"list") bound to note ARE returned — so the door works, the filter just requires viewKind.
Mechanism (source-confirmed)
- The route filter (
rest-server.ts:4404) and getViewsByObject (metadata-manager.ts:1592) both require v.viewKind.
getMetaItems explicitly drops aggregated containers (protocol.ts:6358).
#7163's hydrateExpandedViewItems (protocol.ts:12483) is meant to surface a container's expanded twin, but its object-derivation walks list.data.object → form.data.object → name and never the container's top-level object, so a runtime-authored org-scoped container yields no surfacing item.
Fix direction
Extend the expansion/hydration so a runtime-authored view container is surfaced by getViewsByObject with its object binding derived from the container's own object field (or reject the container shape at author time so the inert-write is loud rather than silent). Reconcile with #7163/#7736 to confirm which authoring paths the earlier fix was scoped to.
Discovered on a live multi-node EE deployment (records-forms/studio-authoring view-authoring items).
QA-source: #13404 · studio-authoring.view-authoring-live · consumer-read
QA-source: #13404 · records-forms.saved-view-management · getViewsByObject
A view authored at runtime and stored as an aggregated container (no top-level
viewKind) is not returned byGET /api/v1/meta/view?object=<obj>/getViewsByObject, so a "live-in-app authored view" never reaches the object's consumer read door. This is the live recurrence of the closed #7163 ("the nested-plugin seam does not expand an aggregatedviewscontainer …getViewsByObject()answers with the container alone") and #7736 ("the documented view-container authoring path is inert at runtime — the container is stored but never served") — the expansion fix does not cover a runtime-authored container's object derivation.This is NOT an org-scoping defect (a sibling finding on the same item first read it that way; corrected on verify). The door IS org-aware: org-scoped views authored as expanded ViewItems ARE returned to their own org and hidden cross-org. The discriminator is container-vs-expanded, org-independent.
Reproduction (×2, verify-pass confirmed)
PUT /api/v1/meta/view/<name>a view bound to objectnote. Tried both the aggregated-container shape and the canonical{list:{type,data:{provider:'object',object:'note'},columns}}shape; both land in pg asactiverows.GET /api/v1/meta/view?object=note→ the authored view is absent.viewKind:"list") bound tonoteARE returned — so the door works, the filter just requiresviewKind.Mechanism (source-confirmed)
rest-server.ts:4404) andgetViewsByObject(metadata-manager.ts:1592) both requirev.viewKind.getMetaItemsexplicitly drops aggregated containers (protocol.ts:6358).#7163'shydrateExpandedViewItems(protocol.ts:12483) is meant to surface a container's expanded twin, but its object-derivation walkslist.data.object → form.data.object → nameand never the container's top-levelobject, so a runtime-authored org-scoped container yields no surfacing item.Fix direction
Extend the expansion/hydration so a runtime-authored view container is surfaced by
getViewsByObjectwith its object binding derived from the container's ownobjectfield (or reject the container shape at author time so the inert-write is loud rather than silent). Reconcile with #7163/#7736 to confirm which authoring paths the earlier fix was scoped to.Discovered on a live multi-node EE deployment (
records-forms/studio-authoringview-authoring items).QA-source: #13404 · studio-authoring.view-authoring-live · consumer-read
QA-source: #13404 · records-forms.saved-view-management · getViewsByObject