Skip to content

metadata-admin permission matrix still authors the retired allowRestore / allowPurge bits — spec now rejects them at publish #6595

Description

@os-zhuang

Found while executing the spec-side retirement in objectstack-ai/objectstack#12497 (maintainer ruling 2026-08-26 accepting objectstack-ai/objectstack#1883 recommendation B — ADR-0049 enforce-or-remove; the keys return with the M2 lifecycle initiative). Recording only — deliberately unassigned; out of that card's repo scope.

What changed upstream

@objectstack/spec retired the object-permission bits allowRestore and allowPurge: both are now retiredKey() tombstones (authoring either key, with ANY value, is a tsc error and a loud parse error carrying the migration prescription). The restore/purge ObjectQL operations they claimed to gate have never existed; a dispatched restore/purge is denied unconditionally by the evaluator's fail-closed destructive-operation backstop. allowTransfer is enforced (#3004 upstream) and stays.

What objectui still does (measured at current main)

  • packages/app-shell/src/views/metadata-admin/PermissionMatrixEditor.tsx:180-181 — renders authoring columns Re (allowRestore) and Pu (allowPurge). A checkbox an admin ticks here produces a permission-set body the spec schema now REFUSES at publish, with the retirement prescription as the error — the editor offers a control whose save cannot succeed.
  • packages/app-shell/src/views/metadata-admin/permission-slice.ts:27-28 — types both keys.
  • packages/app-shell/src/views/metadata-admin/previews/PermissionPreview.tsx:59-60,86 — renders both columns and carries a lint ("Purge (hard delete) granted without Delete") over a key that can no longer be granted.

Suggested fix

Drop the two columns/types/preview rows (they come back with M2 together with the keys — the upstream schema comments and objectstack-ai/objectstack#1883 carry the restart), and let a stored legacy value render as an unknown/stale key rather than an authorable column. Lands naturally with the next @objectstack/spec bump that carries the retirement.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queue

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions