Skip to content

metadata: resetting a published overlay on a packaged view answers reset:true, but the view LIST reads and the end-user list keep serving the overlay's expanded view items until restart #23149

Open

Description

@objectstack-fleet

Filing-gate category ① (product defect, named landing point) and ③ — the maintainer's order in the dispatching session, verbatim: 「测试遇到的问题,可以提交issue」.

QA-source: #23104 · studio-authoring.packaged-display-class-direct-edit · A3 (and its negative N1, the same defect)

Reader who acts: the seat owning packages/metadata-protocol (triage routes). Dedupe: semantic issue search on this repo, closed included, "view overlay reset delete stale expanded view items list endpoint still serves overlay until restart registry heal" — 5 hits, all closed and none this shape; the nearest family members are #5079 (a deleted overlay lingering in the /meta listing) and #6853 (the heal not re-registering a packaged contributor definition).

Environment

objectstack 36b2889c with the console built from objectui 1fb1ced36243 (the pin hop of #23104, since landed as f451a5964), stock examples/app-showcase, admin persona. Reproduced twice — once driven through the Studio designer, once by API on a fresh DB; held for more than 3 minutes, for two personas, in a fresh browser context; a server restart clears it. The dashboard leg of the same item resets cleanly. No console code is involved.

Reproduction (admin bearer, fresh boot)

  1. GET /api/v1/meta/view/showcase_task → take the item (strip the _-prefixed keys), set list.label to All Tasks (X) and drop the progress column; PUT /api/v1/meta/view/showcase_task?mode=draft with that body → 200; POST /api/v1/meta/view/showcase_task/publish {} → 200.
  2. GET /api/v1/meta/view → showcase_task.default reads All Tasks (X), 6 columns — expected.
  3. DELETE /api/v1/meta/view/showcase_task → 200 {success: true, reset: true}.
  4. GET /api/v1/meta/view/showcase_task.default → All Tasks, 7 columns (correct), but GET /api/v1/meta/view and GET /api/v1/meta/view?object=showcase_task still serve showcase_task.default as All Tasks (X) with 6 columns (stamped _provenance: package), unchanged after 30 s; the end-user task list's first tab still reads All Tasks (X) without the Progress column.

Expected: after a 200 reset: true, every read — the item reads, the list reads and the rendered list — serves the packaged base again.

Likely mechanism (objectstack main, to be confirmed by the fixing seat)

On publish, hydrateExpandedViewItems (packages/metadata-protocol/src/protocol.ts) registers the container's expanded view items (OBJECT.VIEWKEY, here showcase_task.default) in the process registry. The delete path's registry heal is (type, name)-addressed by its own docblock — "Every tier above is (type, name)-addressed: removeRuntimeShadow drops the PLAIN key, the layer-2 re-register writes the PLAIN key, and removeOverlayEntry retires the PLAIN key" — so it restores the bare showcase_task entry and leaves the overlay's expansion entries in place for the list doors to read until the process restarts.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, bug · priority:p2 · domain:engine · area:studio, into pm:queue. A reset retires what the publish registered

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-13T04:02Z. ⛔ Not a claim, ⛔ not a dispatch.

  2. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-13T05:47Z
    Session: session_01P88ehrZ6hM19hBzdpsQTTo
    Account: os-support-ai
    Branch: claude/issue-23149-reset-retires-view-expansions
    Worktree: objectstack-issue-23149
    Domain: domain:engine
    Seat: domain:engine#1 (seat post #6367)
    File surface: packages/metadata-protocol/src/protocol.ts, region level: the delete path's registry heal (restoreArtifactRegistryView and the walk over removeRuntimeShadow / registerItem / removeOverlayEntry), read against its counterpart hydrateExpandedViewItems. Plus packages/objectql/src/registry.ts, only if the heal needs a registry entry point it lacks. Tests go beside them in packages/metadata-protocol/src/, with a changeset .changeset/23149-*.md. The dev stops on a breach and explains it in the report.
    Container & model: M, mode:subagent, model: default (dispatch-gates --tier at e540e7ffb: no path-derived mandate)
    Clause-②: no
    Responsibility: the delete heal of ObjectStackProtocolImplementation in packages/metadata-protocol/src/protocol.ts (this lane) | none: only a process restart clears the stale entries | any admin who resets a published overlay on a packaged view, from Studio or with DELETE /api/v1/meta/view/NAME. Measured twice on examples/app-showcase by the QA run behind #23104.
    Thread-read: 6137957465
    Serial constraints cleared: PR #23167 (#23119, engine seat 2) edits the imports, the helpers beside withoutProtectionBlock and saveMetaItem's author arm, so it is disjoint from the heal. #23015 (domain:spec seat 1, branch tip 1a6e24c99) adds a helper before saveMetaItem, one check inside it, and page registration in objectql/src/registry.ts. Those regions are disjoint, and the later lander merges main. #23056 S8 (engine seat 2, branch tip 34f4f777c) touches packaged-base-regime.ts and three tests, also disjoint. PR #22962 (S8-T) touches test files only. #23165 (queued, saveMetaItem's direct-save arm) is not this card's region. No path here is a SINGLE_CLAIM_PATHS entry. Read against origin/main e540e7ffb, from each neighbour's diff.

    On Clause-②: no: it is read from the card. The fix makes a reset do what its reset: true answer already says, and it accepts no new key. If the fix adds a member to a published declaration (for example a new public SchemaRegistry method), the dev measures the built .d.ts closure and reports it. That measurement decides.


    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

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:enginepm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions