Skip to content

Commit 5370b6b

Browse files
committed
feat(platform-objects)!: retire the sys_scim_provider platform object
Remove the rc.1-era @better-auth/scim connection-row object and every in-repo reader, plus its registry line in packages/spec/src/system/constants/platform-object-names.ts (one PR, both halves — the registry conformance test asserts the set bidirectionally). Stable @better-auth/scim 1.7.x derives no scimProvider model (#3653 landed in PR #12726), so the object backed nothing. No data migration by ruling. The ADR-0066 D3 capability-gate pin moves from the retired object to the surviving sibling SysSsoProvider so the gate cannot be dropped silently. Translation bundles regenerated (pnpm i18n:extract). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LpRNHxWZgSUgVnFT9mQQo4
1 parent 8beb3de commit 5370b6b

24 files changed

Lines changed: 27 additions & 387 deletions

content/docs/permissions/authorization.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,8 @@ The complete, prioritized gap map lives in issue **#2561** (the production
528528
`sys_verification`, `sys_oauth_access_token`, `sys_oauth_refresh_token`,
529529
`sys_device_code`) declare `access: { default: 'private' }` — no wildcard
530530
grant reaches them; platform admins retain access via the posture-gated
531-
superuser bypass. `sys_scim_provider` is capability-gated like
532-
`sys_sso_provider`. Member self-service objects (`sys_session`,
531+
superuser bypass. `sys_sso_provider` is capability-gated
532+
(`manage_platform_settings`). Member self-service objects (`sys_session`,
533533
`sys_api_key`, `sys_oauth_application`, `sys_two_factor`) deliberately stay
534534
public-posture (the Account app reads them as the member; row scoping is
535535
their guard). Still open: Studio posture surfacing (objectui).

packages/objectql/src/registry-tenant-index-follows-wall.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,7 @@ describe('[#8608] the tenant index follows the wall’s derivation', () => {
195195
// being dialect-dependent). It is the ONE shipped platform object whose
196196
// answer this card changes; every other table that would qualify already
197197
// declares its own single-column tenant index (`sys_invitation`,
198-
// `sys_team`, `sys_scim_provider`) or is tenancy-disabled
199-
// (`sys_sso_provider`).
198+
// `sys_team`) or is tenancy-disabled (`sys_sso_provider`).
200199
const out: any = applySystemFields(leadWith({ managedBy: 'better-auth' }), {
201200
multiTenant: true,
202201
});

packages/objectql/src/registry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ function provisionTenantScopeIndex(
846846
* (`sys_member`) is walled on that column and is now indexed on it. Re-adding
847847
* an exclusion the wall does not have is precisely the drift this rebinding
848848
* closes — and `declaresTenantIndex` already covers the tables that declare
849-
* their own tenant index (`sys_invitation`, `sys_team`, `sys_scim_provider`).
849+
* their own tenant index (`sys_invitation`, `sys_team`).
850850
*
851851
* ⚠️ The clause-1 rows are NOT a leftover of the condition #8459 lifted: an
852852
* object that declares itself non-tenant-scoped is one the wall composes NO

packages/platform-objects/scripts/i18n-extract.config.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ import {
103103
SysOauthClientAssertion,
104104
SysJwks,
105105
SysSsoProvider,
106-
SysScimProvider,
107106
SysScimConnectionBinding,
108107
SysScimConnectionCredential,
109108
SysScimGroup,
@@ -248,9 +247,9 @@ const config: ObjectStackDefinition = defineStack({
248247
SysOauthClientAssertion,
249248
SysJwks,
250249
SysSsoProvider,
251-
SysScimProvider,
252250
// Stable @better-auth/scim 1.7.x model set + the ObjectStack-owned
253-
// credential store (#3653). SysScimProvider above retires under #11757.
251+
// credential store (#3653). The rc.1-era SysScimProvider retired under
252+
// #11757.
254253
SysScimConnectionBinding,
255254
SysScimConnectionCredential,
256255
SysScimGroup,

packages/platform-objects/src/apps/translations/bundle-ownership.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ const OWNED_OBJECTS = new Set([
2424
'sys_user_preference', 'sys_oauth_application', 'sys_oauth_access_token',
2525
'sys_oauth_refresh_token', 'sys_oauth_consent', 'sys_oauth_resource',
2626
'sys_oauth_client_resource', 'sys_oauth_client_assertion', 'sys_jwks',
27-
// identity — external SSO / SCIM providers (admin-facing, better-auth-managed)
28-
'sys_sso_provider', 'sys_scim_provider',
27+
// identity — external SSO provider (admin-facing, better-auth-managed)
28+
'sys_sso_provider',
2929
// identity — stable @better-auth/scim 1.7.x model set + the ObjectStack-owned
30-
// credential store (#3653; sys_scim_provider above retires under #11757)
30+
// credential store (#3653; the rc.1-era sys_scim_provider retired under #11757)
3131
'sys_scim_connection_binding', 'sys_scim_connection_credential', 'sys_scim_group',
3232
'sys_scim_group_member', 'sys_scim_identity_tombstone', 'sys_scim_projection_grant',
3333
'sys_scim_subject', 'sys_scim_user',

packages/platform-objects/src/apps/translations/en.objects.generated.ts

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,47 +1894,6 @@ export const enObjects: NonNullable<TranslationData['objects']> = {
18941894
}
18951895
}
18961896
},
1897-
sys_scim_provider: {
1898-
label: "SCIM Provider",
1899-
pluralLabel: "SCIM Providers",
1900-
description: "SCIM 2.0 connections (bearer tokens) external IdPs use to provision/deprovision this environment's users",
1901-
fields: {
1902-
id: {
1903-
label: "ID"
1904-
},
1905-
provider_id: {
1906-
label: "Provider ID",
1907-
help: "Stable SCIM provider identifier (e.g. \"okta-scim\")"
1908-
},
1909-
provider_key: {
1910-
label: "Provider Key",
1911-
help: "Derived <organization>:<provider_id> uniqueness key maintained by @better-auth/scim; do not write directly."
1912-
},
1913-
scim_token: {
1914-
label: "SCIM Token (hash)",
1915-
help: "Hashed bearer credential for this SCIM connection — the plaintext is shown once at generate-token. Sensitive; do not expose."
1916-
},
1917-
organization_id: {
1918-
label: "Organization",
1919-
help: "Organization scope of this token (org-scoped tokens restrict provisioning to that org)"
1920-
},
1921-
user_id: {
1922-
label: "Owned By",
1923-
help: "User who generated this token (when provider-ownership is enabled)"
1924-
},
1925-
created_at: {
1926-
label: "Created At"
1927-
},
1928-
updated_at: {
1929-
label: "Updated At"
1930-
}
1931-
},
1932-
_views: {
1933-
all: {
1934-
label: "All"
1935-
}
1936-
}
1937-
},
19381897
sys_scim_connection_binding: {
19391898
label: "SCIM Connection Binding",
19401899
pluralLabel: "SCIM Connection Bindings",

packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,47 +1894,6 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
18941894
}
18951895
}
18961896
},
1897-
sys_scim_provider: {
1898-
label: "Proveedor SCIM",
1899-
pluralLabel: "Proveedores SCIM",
1900-
description: "Conexiones SCIM 2.0 (tokens bearer) que los IdP externos usan para aprovisionar/desaprovisionar los usuarios de este entorno",
1901-
fields: {
1902-
id: {
1903-
label: "ID"
1904-
},
1905-
provider_id: {
1906-
label: "ID de proveedor",
1907-
help: "Identificador de proveedor SCIM estable (p. ej. «okta-scim»)"
1908-
},
1909-
provider_key: {
1910-
label: "Provider Key",
1911-
help: "Derived <organization>:<provider_id> uniqueness key maintained by @better-auth/scim; do not write directly."
1912-
},
1913-
scim_token: {
1914-
label: "Token SCIM (hash)",
1915-
help: "Credencial bearer con hash de esta conexión SCIM: el texto plano se muestra una sola vez al generar el token. Sensible; no lo exponga."
1916-
},
1917-
organization_id: {
1918-
label: "Organización",
1919-
help: "Ámbito de organización de este token (los tokens por organización limitan el aprovisionamiento a esa organización)"
1920-
},
1921-
user_id: {
1922-
label: "Propiedad de",
1923-
help: "Usuario que generó este token (cuando la propiedad de proveedor está habilitada)"
1924-
},
1925-
created_at: {
1926-
label: "Creado el"
1927-
},
1928-
updated_at: {
1929-
label: "Actualizado el"
1930-
}
1931-
},
1932-
_views: {
1933-
all: {
1934-
label: "Todos"
1935-
}
1936-
}
1937-
},
19381897
sys_scim_connection_binding: {
19391898
label: "SCIM Connection Binding",
19401899
pluralLabel: "SCIM Connection Bindings",

packages/platform-objects/src/apps/translations/es-ES.source-hashes.generated.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -499,9 +499,6 @@ export const esESGeneratedSourceHashes: Readonly<Record<string, string>> = {
499499
"objects.sys_scim_projection_grant.fields.user_id.label": "6c0d22a931e235bd",
500500
"objects.sys_scim_projection_grant.label": "fbf273320dc0e8cb",
501501
"objects.sys_scim_projection_grant.pluralLabel": "b8bb5769deedfbe3",
502-
"objects.sys_scim_provider.fields.id.label": "00b0385c9c152888",
503-
"objects.sys_scim_provider.fields.provider_key.help": "6eba9e41bfb954ab",
504-
"objects.sys_scim_provider.fields.provider_key.label": "fbc96a8b3ed4709d",
505502
"objects.sys_scim_subject._views.all.label": "6d6f653f8264ab17",
506503
"objects.sys_scim_subject.description": "8fc839e493ef3e75",
507504
"objects.sys_scim_subject.fields.created_at.label": "1f02d416befb595b",

packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,47 +1894,6 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
18941894
}
18951895
}
18961896
},
1897-
sys_scim_provider: {
1898-
label: "SCIM プロバイダー",
1899-
pluralLabel: "SCIM プロバイダー",
1900-
description: "外部 IdP がこの環境のユーザーをプロビジョニング/デプロビジョニングするために使用する SCIM 2.0 接続(ベアラートークン)",
1901-
fields: {
1902-
id: {
1903-
label: "ID"
1904-
},
1905-
provider_id: {
1906-
label: "プロバイダー ID",
1907-
help: "安定した SCIM プロバイダー識別子(例: 「okta-scim」)"
1908-
},
1909-
provider_key: {
1910-
label: "Provider Key",
1911-
help: "Derived <organization>:<provider_id> uniqueness key maintained by @better-auth/scim; do not write directly."
1912-
},
1913-
scim_token: {
1914-
label: "SCIM トークン(ハッシュ)",
1915-
help: "この SCIM 接続のハッシュ化されたベアラー資格情報——平文はトークン生成時に一度だけ表示されます。機密情報のため、公開しないでください。"
1916-
},
1917-
organization_id: {
1918-
label: "組織",
1919-
help: "このトークンの組織スコープ(組織スコープのトークンはプロビジョニングをその組織に限定します)"
1920-
},
1921-
user_id: {
1922-
label: "所有者",
1923-
help: "このトークンを生成したユーザー(プロバイダー所有権が有効な場合)"
1924-
},
1925-
created_at: {
1926-
label: "作成日時"
1927-
},
1928-
updated_at: {
1929-
label: "更新日時"
1930-
}
1931-
},
1932-
_views: {
1933-
all: {
1934-
label: "すべて"
1935-
}
1936-
}
1937-
},
19381897
sys_scim_connection_binding: {
19391898
label: "SCIM Connection Binding",
19401899
pluralLabel: "SCIM Connection Bindings",

packages/platform-objects/src/apps/translations/ja-JP.source-hashes.generated.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,9 +492,6 @@ export const jaJPGeneratedSourceHashes: Readonly<Record<string, string>> = {
492492
"objects.sys_scim_projection_grant.fields.user_id.label": "6c0d22a931e235bd",
493493
"objects.sys_scim_projection_grant.label": "fbf273320dc0e8cb",
494494
"objects.sys_scim_projection_grant.pluralLabel": "b8bb5769deedfbe3",
495-
"objects.sys_scim_provider.fields.id.label": "00b0385c9c152888",
496-
"objects.sys_scim_provider.fields.provider_key.help": "6eba9e41bfb954ab",
497-
"objects.sys_scim_provider.fields.provider_key.label": "fbc96a8b3ed4709d",
498495
"objects.sys_scim_subject._views.all.label": "6d6f653f8264ab17",
499496
"objects.sys_scim_subject.description": "8fc839e493ef3e75",
500497
"objects.sys_scim_subject.fields.created_at.label": "1f02d416befb595b",

0 commit comments

Comments
 (0)