Skip to content

Studio: retire the permission set's two delegated-admin switches (manageBindings, authorEnvironmentSets) that objectstack#23488 retires from the spec #12406

Closed

Description

@objectstack-fleet

Filing gate ③ the maintainer's ruling, on objectstack-ai/objectstack#23488 (6181988435; the maintainer said 「同意」 to letter A). Item 4, verbatim: "objectui: Studio's two switches, the help strings, the i18n keys and the pin test retire in an objectui p1 follow-up on objectui#12334, landed before or with the .objectui-sha move that carries the tombstoned type."

Reader who acts: the objectui domain:ui seat, in one PR, once an @objectstack/spec release that carries the two tombstones is installable here. That is the cross-repo unlock criterion, not the merge of the upstream PR.

Landing (read on objectui origin/main dbc8c1169)

  • packages/app-shell/src/views/metadata-admin/PermissionAdvancedFacets.tsx:662-663: the two switch rows. The docblock at :49 names the keys.
  • packages/app-shell/src/views/metadata-admin/i18n.ts:2475-2476 and :5764-5765: the four strings.
  • packages/app-shell/src/views/metadata-admin/PermissionAdvancedFacets.adminScopeAnchor.test.tsx:110-111: the pin.
  • docs/adr/0056-permission-editing-studio.md:142 also names the keys. It is governed text, so it is out of this card unless the seat decides otherwise.

Done

Studio offers neither switch and writes neither key. manageAssignments stays as the control.

Dedupe

Two semantic search_issues queries in objectui, all states:


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade · enhancement · priority:p1 + target:v18 · domain:ui · area:studio · stays pm:blocked · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T01:59Z

    Read fresh. Ruling A on objectstack-ai/objectstack#23488 (6181988435) retires AdminScope.manageBindings and authorEnvironmentSets. Its item 4 puts Studio's two switches, their strings, the i18n keys and the pin into an objectui p1 follow-up on #12334.

  2. added
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    enhancementNew feature or request
    and removed on Oct 15, 2026
  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    State: pm:blocked → pm:on-hold · domain:ui seat 1 · session_01JZnppgHRp4sREcouhkQYDB · 2026-10-16T01:46Z

    This is the seat's unlock scan on its routine fire. The upstream closed, but the fix is not installable here yet. Per the cross-repo unlock rule (SKILL.md 〈状态模型〉, 「未发版 ⇒ 转 pm:on-hold + Restart-when:」), the card moves to on-hold. ⛔ It does not go back to pm:queue.

    Restart-when: objectui main's pnpm-lock.yaml resolves an @objectstack/spec release later than 18.0.0-next.1 whose AdminScope refuses manageBindings and authorEnvironmentSets (the two tombstones of objectstack-ai/objectstack#23488)

    Dispatch shape on wake (domain:ui, S, mode:subagent, Clause-②: no):

    • Studio's two switch rows in PermissionAdvancedFacets.tsx retire, with their help strings, their four i18n entries in metadata-admin/i18n.ts, and the anchor pin PermissionAdvancedFacets.adminScopeAnchor.test.tsx. Re-read every location on the main of that day; the body's line numbers are from dbc8c1169.
    • The ADR-0056 line stays out, as the card says (docs/adr/** is governed). If the seat folds it in, the PR is Tier H.
    • One installable-surface probe comes first: the installed spec's AdminScope refuses both keys.

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock: pm:on-hold → pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T04:03Z

    • The condition: the body's Blocked-by: objectstack-ai/objectstack#23488 (closed 2026-10-15T05:33Z) needed an installable @objectstack/spec. npm @objectstack/spec@next is 18.0.0-next.2 (published 2026-10-16T03:11Z, built from e5136ff10f, which carries it), read in this act.
    • objectui's range ^18.0.0-next.1 resolves 18.0.0-next.2.
    • Grade, lane and scope are unchanged.

    ⛔ Not a claim.

  5. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Back to pm:blocked, now on #12629 (the next.2 bump) · correcting this seat's R433 unlock · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T06:55Z

    ⛔ Not a claim.

  6. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Blocked-by: re-pointed: #12629 (closed, a duplicate) → #12626, the next.2 bump in flight · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T07:54Z

    ⛔ Not a claim.

  7. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 3 (priority:p1; item 4 of the maintainer's letter A on objectstack-ai/objectstack#23488), unlocked in this claim: both body blockers are closed (objectui#12626 landed as main f62b6ff4e1; objectstack-ai/objectstack#23488 closed completed), and no new blocker is derived: main installs @objectstack/spec@18.0.0-next.2, whose AdminScopeSchema refuses both keys (measured in #12626's landing commit message)
    Session: session_011K9g23W67dy2zwnyzaoB6o
    Account: os-tesla
    Branch: claude/issue-12406-retire-admin-switches
    Worktree: objectui-issue-12406
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: packages/app-shell/src/views/metadata-admin/PermissionAdvancedFacets.tsx (the two switch rows, its docblock at :49, and any save path that would still send either key), packages/app-shell/src/views/metadata-admin/i18n.ts (the four perm.admin.manageBindings / perm.admin.authorEnvironmentSets strings), PermissionAdvancedFacets.adminScopeAnchor.test.tsx and new tests beside, and one .changeset/12406-*.md (stop on breach; explain in the report). Outside: docs/adr/0056-permission-editing-studio.md:142 (governed text; reported, not edited) and any objectstack file.
    Container & model: S, mode:subagent, model: opus (default tier, not the floor: whether a stored permission set that already carries either key is cleaned on save is a judgment call; dispatch-gates --tier --repo objectstack-ai/objectui over the 4 planned paths: no path-derived mandate)
    Clause-②: no
    Clause-② reason: neither PermissionAdvancedFacets nor the metadata-admin dictionary is exported from @object-ui/app-shell's entry, and the change removes what Studio writes to match a key the spec already refuses. No published type, prop, export or pack key changes.
    Responsibility: n/a — not a defect card
    Thread-read: 6210817094
    Serial constraints cleared: read at objectui main f62b6ff4e1. No open PR or in-flight claim names metadata-admin/PermissionAdvancedFacets* or metadata-admin/i18n.ts. This seat's in-flight objectui#12642 and #12489 edit packages/fields, plugin-detail and record-preview, all disjoint.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 12406,
      "status": "done",
      "branch": "claude/issue-12406-retire-admin-switches",
      "pr": "https://github.com/objectstack-ai/objectui/pull/12659",
      "session": "session_011K9g23W67dy2zwnyzaoB6o — the dispatching seat's id (mode:subagent runs inside it)",
      "premise_still_valid": true,
      "summary": "Studio's Delegated Admin Scope facet no longer draws the Manage bindings and Author env sets switches. Their four i18n strings (perm.admin.manageBindings / perm.admin.authorEnvironmentSets, English and Chinese) are gone, and perm.admin.help no longer offers to 'manage bindings' in either language. That help text is the ruling's 'help strings': same file, and named here because the claim's parenthetical listed only the four strings. Manage assignments stays and now writes its key by name, setScopeDetail({ manageAssignments: !!v }), with no cast. The cast was the only reason the old tuple-list write compiled against next.2's tombstone type (H4). H1 and H2 held. H3 measured: the facet round-trips the stored scope verbatim, and the host's whole-record Save sends draft.adminScope untouched. But the objectstack server (read at 0af559e) serves overlay and draft rows through convertStoredItem and applyConversionsToStoredItem, which drop both keys before Studio sees them. That strip was measured here with the installed spec. Decision B, on the four axes: Studio strips neither key. The strip has no input on an 18 server, it would be a second client-side copy of the spec's D2 retirement list, it would replace a loud 422 with silent client tolerance, and it adds code with no pull. The RLS priority precedent differs, because Studio itself seeded that key. Draft PR #12659 is assigned to os-tesla and carries Fixes #12406 and Clause-②: no. The worktree was removed after the push was confirmed (local head equals remote head 165e820). Commits carry the model-free trailer pair per AGENTS.md, which takes precedence over the harness's model-named attribution reminder.",
      "tests": "All on head 165e820 (the final commit); exit codes captured before any pipe. (1) pnpm exec vitest run packages/app-shell/src/views/metadata-admin/ under os-verify-lock: VERDICT command-exit 0, 'Test Files 509 passed (509)', 'Tests 5742 passed | 1 skipped (5743)'; it held the lock 940s on a shared box, the dispatch-prescribed scope. (2) New describe 'PermissionAdvancedFacets · the retired delegated-admin keys (objectui#12406)', 3 cases: a CONTROL that the installed spec refuses each key at its own path, false included; the facet draws exactly the includeSubtree and manageAssignments switches; flipping every switch it draws writes a scope the spec accepts, with neither retired key. The old 'three manage-* switches are inert' case now covers manageAssignments only. (3) Ablation, wrap mode, objectstack scripts/ablation-replace.mjs: the two retired rows were restored exactly as on main (tuple list plus cast). The run read 'Tests 2 failed | 10 passed (12)', with both new pins red: 'expected [ perm.admin.includeSubtree, …(3) ] to deeply equal [ …(1) ]' and 'expected [ manageBindings, …(1) ] to deeply equal []'. Restore was proven: blob after restore 9636eb58469d equals blob at HEAD, and git diff HEAD is empty. The test imports the component from source, so no build is needed. (4) Type reverse check (H4): setScopeDetail({ manageBindings: !!v }) was written at the switch, and tsc --noEmit gave exit 2 with TS2322 'Type boolean is not assignable to type' the '[REMOVED] Key retired' mark. Restored the same way, blob == HEAD. (5) Probes, not committed: node against @objectstack/spec 18.0.0-next.2 showed AdminScopeSchema refusing manageBindings and authorEnvironmentSets with invalid_type at each key, for true and false, while the control scope with the live keys parsed. applyConversionsToStoredItem('permission', …) turned the stored scope into {businessUnit, manageAssignments} with 2 notices from permission-admin-scope-binding-authoring-removed. A throwaway facet mount showed one Include-subtree flip keeping manageBindings:true and authorEnvironmentSets:false in the written scope. The probe file was deleted before the commit.",
      "gates": "Local, all exit 0 on 165e820: turbo build --filter='@object-ui/app-shell^...' --concurrency=2 ('Tasks: 28 successful, 28 total', lock 200s); pnpm --filter @object-ui/app-shell type-check (echoes 'tsc --noEmit && tsc -p tsconfig.test.json'; tsconfig.test.json includes src/**/*.test.tsx); pnpm check:changeset-claims; pnpm changeset:check; pnpm check:test-path-roots; pnpm check:spec-symbols; node scripts/check-changeset-presence.mjs ('3 source file(s) of 1 released package(s) changed, and this change declares 1 changeset(s)'); pnpm check:new-line-citations ('0 new citation(s)'); check-governed-queue-guard --test over the 4 paths ('NOT GOVERNED'); eslint on the 3 changed source files (0 errors, 3 warnings, all on lines this diff does not touch). objectui has no dispatch-gates --ran reconciliation; the list was hand-derived from the dispatch. The repo-wide lint and the whole app-shell suite are left to CI. PR check-runs at report time (35 total): completed success = Build Docs, Changeset Bump Policy, Changeset Fixed Group Check, label; completed skipped = Test (coverage), the Test (coverage shard) matrix, dependabot; in_progress = Build & E2E, Bundle Analysis, Changeset Claim Re-read, Changeset Declaration, Changeset Overwrite Report, Governed Surface Queue Guard, Line Citation Gate, Lint, Live E2E (informational), Repo Gates, Test (dist pins), Test (shard 1/16 to 16/16), Type Check. NOT MEASURED for the in_progress families, because CI convergence belongs to the seat. Note: os-verify-lock printed its long-holder warning for the 940s metadata-admin directory run. That run is the dispatch's prescribed scope, not a one-off.",
      "mcp_calls": "0 — no MCP GitHub tool used",
      "api_writes": "2 — two POST /repos/objectstack-ai/objectstack/dispatches (fleet-write relay, executed as objectstack-fleet[bot]): stroke 1 = pr_create, which became POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos/objectstack-ai/objectui/issues/12659/assignees (os-tesla); stroke 2 = comment, which became POST /repos/objectstack-ai/objectui/issues/12406/comments (this report). git push (2) is not REST. Zero label writes: the dispatch named no labels, and labeler.yml applied 'tests' and 'package: app-shell'.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none (承接者:无) · noted, not filed — docs/adr/0056-permission-editing-studio.md, the AdminScopeSchema bullet ('the exact target shape for the admin_scope editor'), still lists manageBindings and authorEnvironmentSets. It is governed text (docs/adr/**, Tier H if edited), so it is not edited here. The ruling's item 5 Tier H docs PR covers ADR-0090 and ADR-0086 in objectstack, not this objectui ADR. In PR #12659's Acceptance notes · dedupe words: ADR-0056 AdminScopeSchema manageBindings authorEnvironmentSets retired",
        "carrier: none (承接者:无) · noted, not filed — packages/app-shell/src/__tests__/spec-symbol-parity.test.ts has a comment, '…and the other five are defaulted', and two of those five are now tombstones. It is a comment only, the assertions still hold, and the file is outside this card's surface. In PR #12659's Acceptance notes."
      ]
    }

    Generated by Claude Code

  9. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #12659 comment 6215739642 · Clause-②: no (no contract review owed) · domain:ui seat 1 · session_011K9g23W67dy2zwnyzaoB6o · 2026-10-16T12:42Z


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 1 · session_011K9g23W67dy2zwnyzaoB6o · 2026-10-16T12:57Z

    • Merged: PR feat(app-shell): Studio retires the two delegated-admin switches the spec retired (objectui#12406) #12659 landed through the merge queue as main a98a23c787, with one parent, f78efdd1e3. It is an ancestor of origin/main.
    • Verified by content: the merge commit's own diff equals the PR's diff from its merge-base to the reviewed head 165e82050d, line for line: 4 files, +115/−38. Positive control at the merge commit: perm.admin.manageBindings has 0 hits in metadata-admin/i18n.ts, and PermissionAdvancedFacets.tsx names manageBindings only in the docblock that records its retirement.
    • Card: closed completed by Fixes #12406. This note precedes the strip of pm:dispatched.
    • Carried, not this card's: ADR-0056's stale bullet is objectui#12660.

    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 portaldomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p1target:v18

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions