Skip to content

os migrate organization-ownership: shipped permission sets stored with managed_by NULL (seeded before the column was written) are refused as authored; extend #23873's ruling A to NULL #24089

Closed as not planned

Description

@hotlong

Filing-gate category ① (a defect with a measured reach) and ③ (a maintainer direct order). Verbatim, 2026-10-16, the option 「框架沿用裁决A (推荐)」, which reads: "给 objectstack 立 p0 卡:沿用 #23873 已经裁决的 A(按平台镜像接管,平台定义生效,旧行改写验证后删除),把识别条件从「只认 admin」扩大到「admin 或空值」". Standing order: 「相关任务都提到最高优先级」.

Reader: triage routes it; expected route domain:cli (organization-ownership inventory/apply). The executing lane seat claims it. Downstream, cloud's next framework pin carries it (objectstack-ai/cloud#2868).

Dedupe (gh api search/issues total_count, closed included):

What happens

#23906 (cdf37771d0) adopts the shipped permission sets that a pre-2026-08-15 seeder stored as managed_by = 'admin'. Its LEGACY_SHIPPED_SET_SEEDS matches managed_by = 'admin' and a name in SHIPPED_PERMISSION_SET_NAMES.

Older installs carry the same shipped rows with managed_by NULL, created before the column was written at all. Measured on cloud staging: rows created 2026-06-23, re-seeded 2026-10-10, created_by NULL. The inventory's AUTHORED predicate (managed_by notIn [package, platform, system]) treats them as Setup-authored. When the stored body differs from the shipped definition, authored-conversion refuses:

The authored permission admin_full_access differs from the definition the catalog already holds under that name. The catalog's definition stays; rename the authored row (and the grants that name it), then re-run.

This is the wrong remedy, as #23873 established: the admins' grants hang on these names.

Reach, measured on cloud staging with read-only reads of each tenant ledger and sys_permission_set, cloud#2868, 2026-10-16:

Wanted

Acceptance:

Related: #23873, #23906, #23874, objectstack-ai/cloud#2868, objectstack-ai/cloud#2899.

Activity

  1. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade, priority:p0 (the filer's) · domain:cli · area:access · pm:queue · target:v18 · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-17T00:58Z

    Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.

    • Why p0 stands: a maintainer direct order, with measured reach. Two cloud staging environments (os-58ptra, os-75621z) are refused at authored-conversion today, and three more hold the same NULL rows. The v18 move (objectstack-ai/cloud#2868, p0) cannot finish on them.
    • Why domain:cli: the predicate and the apply are packages/cli/src/utils/organization-ownership-inventory.ts (LEGACY_SHIPPED_SET_SEEDS, :230) and organization-ownership-apply.ts (:834). Read on origin/main be076dad28. area:access follows [Decision] The ownership ceremony classes the 8 shipped permission sets an old seeder stored as managed_by='admin' as authored and says to rename them: mirror them, keep blocking with the true remedy, or ask per row? #23873.
    • The premise holds on main: LEGACY_SHIPPED_SET_SEEDS matches only managed_by equals 'admin', and AUTHORED is managed_by notIn [package, platform, system]. No arm names NULL.
    • Scope is the card's own: an admin or NULL arm on the legacy predicate, the category label and citation naming both provenances, and the acceptance list as written. ⛔ A row with any other value stays authored.
    • No open PR names this card (repos/…/pulls?state=open, read in this act).

    Downstream: cloud's next framework pin carries it (objectstack-ai/cloud#2868). The domain:cli seat claims it.


    Generated by Claude Code

  2. hotlong commented on Oct 17, 2026

    @hotlong
    ContributorAuthor

    Withdrawn by the filer (cloud#2868 PM, the maintainer's local session), 2026-10-17. ⛔ Not a claim; nobody had claimed this card.

    Maintainer's ruling, verbatim: 「历史数据用升级脚本处理」. This historical data is handled by an upgrade script. The framework does not change. The NULL-managed_by shipped permission sets exist only in hosted environments created on or before about 2026-07-09. Cloud's tenant upgrade sequence will handle them in objectstack-ai/cloud#2868 round 14: before the ceremony, cloud re-stamps them as admin, after exporting them, so that #23906's legacy-seed adoption applies unchanged.

    No framework change is wanted. Closing as not planned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:clipriority:p0Critical: blocker, must ship before MVPtarget:v18

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions