Repository navigation
fix(app-shell): the permission set provenance badge reads packageId and the artifact only (spec 18 retired managedBy) (objectui#12753) - #12802
Merged
objectstack-fleet[bot] merged 3 commits intoOct 16, 2026
Conversation
…he artifact only Spec 18 retired the authored `managedBy` on a permission set (objectstack#23891), so no served or saved body carries it. The badge's "Platform" arm could no longer fire, and a stray `managedBy` on an old stored row could still move the answer. Both badge sites (the routed page's badge and the Studio kind chip) now read one derivation, `shippedByPackage = !!packageId || codeIsArtifact`. No served datum names a platform set, so "Platform" goes, with its now-dead `perm.badge.platform` string (en and zh). The local `PermissionSetDraft` type drops its `managedBy` member. Claude-Session: https://claude.ai/code/session_0193EQMEE4tpjYNJen4LAhgR Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193EQMEE4tpjYNJen4LAhgR Co-authored-by: Claude <noreply@anthropic.com>
The removed `perm.badge.platform` lives in metadata-admin's module-local string table, which the package entry does not re-export, and `PermissionSetDraft` is not exported either: no published key, export or type member narrows. The paragraph after the line keeps the reason. Claude-Session: https://claude.ai/code/session_0193EQMEE4tpjYNJen4LAhgR Co-authored-by: Claude <noreply@anthropic.com>
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
Contributor
Author
席位核对 · ACCEPT ·
|
objectstack-fleet
Bot
deleted the
claude/issue-12753-perm-provenance-no-managedby
branch
October 16, 2026 22:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #12753
Clause-②: no
What changed
Spec 18 retired the authored
managedByon a permission set (objectstack-ai/objectstack#23891, landed as objectstack-ai/objectstack#23989). The permission set editor's provenance badge read it for a third answer, "Platform", and as one input to "Package". It now decides frompackageIdand the package artifact only.PermissionMatrixEditor.tsx: one derivation,shippedByPackage = !!packageId || codeIsArtifact, next toartifactTierApplies. Both sites read it: the routed page's badge and the Studio Access pillar's kind chip. They can no longer drift. ThemanagedByread is gone from both.permission-slice.ts: the localPermissionSetDrafttype drops itsmanagedBymember. That type is not exported from the package entry.i18n.ts:perm.badge.platform(en and zh) is removed. Once the read went,check:i18n-dead-keyslisted it with only a CHANGELOG footprint.PermissionMatrixEditor.badge.test.tsxis rewritten. The old suite pinned eachmanagedByarm; the new one pins the two-answer badge at both sites.Why "Platform" goes (no served datum names it)
Measured on a live backend (published
@objectstack/*@18.0.0-next.2, the showcase app). The platform-shipped sets (admin_full_accessand the otherplugin-securitysets) are served as_packageId: com.objectstack.plugin-security,_provenance: package, with nomanagedBy, on both the list read and the layered/layersread the editor uses. The showcase's own sets are served the same way undercom.example.showcase. The layered read'sprovenanceispackageororg; neither names a platform set. So a set the platform ships reads "Package", like any packaged set. Nothing on the client reads a retired key.Clause-② (no)
The metadata-admin string table loses
perm.badge.platform. The table is module-local: it is not exported from the package entry and is not one of thepackages/i18nlocale packs, so no consumer can address the key. The visible change is that a stored row still carryingmanagedBy: 'platform'now reads "Custom" instead of "Platform". No export, prop or exported type member changes.Evidence
managedBy: 'platform'reads Custom; straymanagedBy: 'package'reads Custom). 10 passed. All 35 test files naming the editor, the slice, the clone module or the badge, pluspackages/i18n/src/__tests__: 118 files, 1624 passed, 13 skipped, at head 52f65f3.managedBy === 'platform'at the page badge turns the stray-platform case red (1).managedBy === 'package'at the studio chip turns the stray-package case red (1).claude/issue-12753-evidenceunderevidence/12753/:admin_full_access(shipped by plugin-security)custom_reviewer(authored here)legacy_platform_row(authored withmanagedBy: 'platform')type-check,check:i18n-keys,check:i18n-drift,check:i18n-dead-keys,check:i18n-designer-parity,check:changeset-claims,changeset:check,check:test-path-roots,check:spec-symbols,check:new-line-citations,check-changeset-presence. eslint on the changed files: 0 errors.Acceptance notes
sys_permission_set.managed_bycolumn and what reads it, and the object lifecyclemanagedBy. These are outside the claim.permission-set-clone.tskeepsmanagedByin its comment. That comment describes the server's clone door, which still drops the key at objectstack main.PermissionMatrixEditor.provenanceBadge-7611.test.tsxis unchanged and still green. It drives nomanagedByarm.Provenance: built by the cloud session
session_0193EQMEE4tpjYNJen4LAhgR(claim6224724406) and opened by thedomain:uiseat 1 PM (session_011K9g23W67dy2zwnyzaoB6o) from that session's final message, because a cloud session cannot open a PR from its container. The seat ruled the dev's open question 1 asClause-②: no(the removed key and the narrowed type are both unaddressable outside the package); the dev applied it to the changeset in44d065c, and the seat set line 2 and the section heading here to match. The seat appended(objectui#12753)to the title and replaced the dev's footer line with this paragraph.Generated by Claude Code