Skip to content

Commit 5647006

Browse files
os-zhuangclaude
andauthored
feat(spec)!: 删除 ./system 的 declared-only tenant-provisioning 家族 —— C16 双源清账,TenantPlan 唯一真源在 ./cloud (#4739) (#4752)
`TenantPlan(Schema)` 曾由 `./cloud` 与 `./system` 各自导出一个声明:cloud 侧 5 值(free/starter/pro/enterprise/custom)嵌 `EnvironmentSchema.plan` / `TenantContextSchema.plan` / `ProvisionTenantRequestSchema.plan`,cloud 仓 service-tenant 实际消费;system 侧 3 值子集只嵌 `TenantProvisioningRequest/ Result`,而该 provisioning 协议(连同 contracts 的 `IProvisioningService` / `ITenantRouter`)objectstack / cloud / objectui 三仓 import 语句级实测零实现 零调用 —— declared-only,已被 cloud 的 `Provision*` 家族整体取代。按维护者 裁决(#4739,路线 B)删 system 侧全家族,cloud 侧一字未动。 - 删 system/provisioning.zod.ts(+测试):TenantPlan / TenantRegion / TenantProvisioningStatus / ProvisioningStep / TenantProvisioningRequest / TenantProvisioningResult 六 def 全家 - 删 contracts/provisioning-service.ts、contracts/tenant-router.ts(+测试): 两文件除三个 declared-only 接口外无他物,整文件退役;两 index 留 #4739 指路注释(#4212/#4451 同款) - dual-source-exports.baseline.json:删 TenantPlan / TenantPlanSchema 两行 (12 → 10,rebase 携带 C6 #4745 落地后的起点) - authorable-surface.json:21 行随三个整 def 出账(#4650 门禁判定三组 「def no longer emitted」自证路径,输出见 PR) - json-schema.manifest.json:删六 def 键(#2978 蓄意移除通道) - api-surface.json:恰好 15 行删除(./system 12 + ./contracts 3),零新增 - docs:system/provisioning.mdx 与幽灵页 cloud/provisioning.mdx 随生成器 消失,cloud/TenantPlan 文档回到真家 cloud/tenant.mdx(#4696 病灶随重名 根因消除);docs-import-surface.baseline.json 经生成器收缩一行 - 回归 pin(cloud/tenant.test.ts):compiler-API 断言全入口(package.json exports 枚举)任何叫 TenantPlan(Schema) 的导出唯一解析到 cloud 声明、 ./system 不再命名之、三个契约接口全包消失,防空转守卫;S1(重加声明)/ S2(禁止的 re-export 路线)sabotage 均红 - changeset:@objectstack/spec major(移除 15 个已发布导出名,TS2305), 零元数据迁移;strictness-ledger 实跑零变化(该文件不在台账辖区) Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 65f184b commit 5647006

21 files changed

Lines changed: 271 additions & 939 deletions
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
"@objectstack/spec": major
3+
---
4+
5+
BREAKING(spec): 删除 `@objectstack/spec/system` 的整个 tenant-provisioning 家族(`TenantPlan(Schema)` / `TenantRegion(Schema)` / `TenantProvisioningStatus(Enum)` / `ProvisioningStep(Schema)` / `TenantProvisioningRequest(Schema)` / `TenantProvisioningResult(Schema)`)及 `@objectstack/spec/contracts``IProvisioningService` / `ITenantRouter` / `ResolvedTenantContext` —— `TenantPlan(Schema)` 现在全包唯一地指 `@objectstack/spec/cloud` 的 5 值声明 (#4739, #4535 C16)
6+
7+
`TenantPlan` + `TenantPlanSchema` 过去被两个入口导出,但**不是同一个声明**,拿到哪个词表只取决于 import 路径 —— #4411 陷阱:
8+
9+
| 入口 | 声明位置 | 词表 | 状态 |
10+
|:--|:--|:--|:--|
11+
| `@objectstack/spec/cloud`(**不变,唯一真源**) | `cloud/tenant.zod.ts` | `free / starter / pro / enterprise / custom`(5 值) | ****:嵌入 `EnvironmentSchema.plan``TenantContextSchema.plan``ProvisionTenantRequestSchema.plan`,cloud 仓 service-tenant 经这些 schema 实际消费 |
12+
| `@objectstack/spec/system`(**本次删除**) | `system/provisioning.zod.ts` | `free / pro / enterprise`(3 值子集) | **declared-only**:仅嵌入 `TenantProvisioningRequest/Result`,该 provisioning 协议三仓(objectstack / cloud / objectui)零实现零调用 |
13+
14+
system 侧不是孤立的一个枚举,而是一整套从未实现的 provisioning 协议:`TenantProvisioningRequest/Result` 加上 `contracts` 里的 `IProvisioningService` / `ITenantRouter` 契约,import 语句级三仓实测**零实现、零调用、零 importer**(cloud 仓 `service-tenant``TenantProvisioningService` 是重名的本地类,消费的是 `@objectstack/spec/cloud``ProvisionTenantRequest`,与被删家族无关)。它已被 cloud 入口的 `Provision*` 家族整体取代,故按维护者裁决(#4739,路线 B)删除 system 侧全家族,cloud 侧一字未动。
15+
16+
## FROM → TO
17+
18+
```ts
19+
// FROM —— 编译期起将以 TS2305 失败(实测三仓零命中,预期无人受影响)
20+
import { TenantPlanSchema, type TenantPlan } from '@objectstack/spec/system';
21+
// TO —— 唯一声明(注意词表从 3 值子集变为 5 值全集:多出 starter / custom)
22+
import { TenantPlanSchema, type TenantPlan } from '@objectstack/spec/cloud';
23+
```
24+
25+
```ts
26+
// FROM —— TS2305
27+
import type { TenantProvisioningRequest, TenantProvisioningResult } from '@objectstack/spec/system';
28+
import type { IProvisioningService, ITenantRouter, ResolvedTenantContext } from '@objectstack/spec/contracts';
29+
// TO —— 活的 provisioning 协议在 cloud 入口
30+
import type { ProvisionTenantRequest, ProvisionTenantResponse, TenantContext } from '@objectstack/spec/cloud';
31+
```
32+
33+
- `TenantRegion(Schema)` / `TenantProvisioningStatus(Enum)` / `ProvisioningStep(Schema)`:无同名替代物。region 与 step 追踪从未接入任何运行时;租户生命周期状态的活表面是 `@objectstack/spec/cloud``TenantDatabaseStatusSchema``EnvironmentSchema.status`
34+
- 类型收窄注意:改从 `./cloud` import 后,`TenantPlan` 联合类型从 3 值**变宽**为 5 值 —— 对 plan 做穷举 switch 的代码要补 `starter` / `custom` 两个分支(这正是双源曾经隐藏的漂移)。
35+
36+
## 定级理由(逐条自证,未照抄前例)
37+
38+
**major**,因为这是**已发布导出名的移除**:外部对上述 15 个导出名(`./system` 12 个 + `./contracts` 3 个)的 import 会以 TS2305 编译失败(与 C14 / C6 同形)。
39+
40+
同时它是**零元数据迁移**:
41+
42+
- 被删 6 个 def(`system/ProvisioningStep` / `system/TenantPlan` / `system/TenantProvisioningRequest` / `system/TenantProvisioningResult` / `system/TenantProvisioningStatusEnum` / `system/TenantRegion`)均不从 `BUILTIN_METADATA_TYPE_SCHEMAS` 元数据根可达 —— #4650 门禁对 `authorable-surface.json` 被删 21 行的实跑判定是三组「def no longer emitted by this build」自证路径(输出见 PR),**无 tombstone、无 ADR-0087 conversion / migration**(`spec-changes.json` / upgrade-guide 两 gate 零变化)。
43+
- 已存 `sys_metadata` 数据、运行时校验行为全部不受影响;`cloud/tenant.zod.ts``system/tenant.zod.ts`(`system/Tenant` 行级租户记录,自带内联枚举、不引用被删文件)一字未动。
44+
- JSON Schema 产物中上述 6 个 def 停止发布(`json-schema.manifest.json` 同步删键,#2978 蓄意移除通道)。
45+
46+
## 基线 12 → 10
47+
48+
`dual-source-exports.baseline.json` 删掉 `TenantPlan — [./cloud (type)] ≠ [./system (type)]``TenantPlanSchema — [./cloud (const)] ≠ [./system (const)]` 两行,其余行一字未动。

content/docs/references/cloud/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
"environment-package",
88
"package",
99
"package-version",
10-
"provisioning",
1110
"template-manifest",
1211
"---Marketplace & Distribution---",
1312
"app-store",

content/docs/references/cloud/provisioning.mdx

Lines changed: 0 additions & 32 deletions
This file was deleted.

content/docs/references/cloud/tenant.mdx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ Design decisions:
2828
## TypeScript Usage
2929

3030
```typescript
31-
import { PackageInstallationSchema, PackageInstallationStatusSchema, ProvisionTenantRequestSchema, ProvisionTenantResponseSchema, TenantContextSchema, TenantDatabaseSchema, TenantDatabaseStatusSchema, TenantIdentificationSourceSchema, TenantRoutingConfigSchema } from '@objectstack/spec/cloud';
32-
import type { PackageInstallation, PackageInstallationStatus, ProvisionTenantRequest, ProvisionTenantResponse, TenantContext, TenantDatabase, TenantDatabaseStatus, TenantIdentificationSource, TenantRoutingConfig } from '@objectstack/spec/cloud';
31+
import { PackageInstallationSchema, PackageInstallationStatusSchema, ProvisionTenantRequestSchema, ProvisionTenantResponseSchema, TenantContextSchema, TenantDatabaseSchema, TenantDatabaseStatusSchema, TenantIdentificationSourceSchema, TenantPlanSchema, TenantRoutingConfigSchema } from '@objectstack/spec/cloud';
32+
import type { PackageInstallation, PackageInstallationStatus, ProvisionTenantRequest, ProvisionTenantResponse, TenantContext, TenantDatabase, TenantDatabaseStatus, TenantIdentificationSource, TenantPlan, TenantRoutingConfig } from '@objectstack/spec/cloud';
3333

3434
// Validate data
3535
const result = PackageInstallationSchema.parse(data);
@@ -161,6 +161,19 @@ const result = PackageInstallationSchema.parse(data);
161161
* `default`
162162

163163

164+
---
165+
166+
## TenantPlan
167+
168+
### Allowed Values
169+
170+
* `free`
171+
* `starter`
172+
* `pro`
173+
* `enterprise`
174+
* `custom`
175+
176+
164177
---
165178

166179
## TenantRoutingConfig

content/docs/references/system/index.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ This section contains all protocol schemas for the system layer of ObjectStack.
3131
<Card href="/docs/references/system/migration" title="Migration" description="Source: packages/spec/src/system/migration.zod.ts" />
3232
<Card href="/docs/references/system/notification" title="Notification" description="Source: packages/spec/src/system/notification.zod.ts" />
3333
<Card href="/docs/references/system/object-storage" title="Object Storage" description="Source: packages/spec/src/system/object-storage.zod.ts" />
34-
<Card href="/docs/references/system/provisioning" title="Provisioning" description="Source: packages/spec/src/system/provisioning.zod.ts" />
3534
<Card href="/docs/references/system/registry-config" title="Registry Config" description="Source: packages/spec/src/system/registry-config.zod.ts" />
3635
<Card href="/docs/references/system/search-engine" title="Search Engine" description="Source: packages/spec/src/system/search-engine.zod.ts" />
3736
<Card href="/docs/references/system/security-context" title="Security Context" description="Source: packages/spec/src/system/security-context.zod.ts" />

content/docs/references/system/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"environment-artifact",
1111
"license",
1212
"migration",
13-
"provisioning",
1413
"registry-config",
1514
"settings-client",
1615
"settings-manifest",

content/docs/references/system/provisioning.mdx

Lines changed: 0 additions & 142 deletions
This file was deleted.

packages/spec/api-surface.json

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,8 +1162,6 @@
11621162
"PlanSchema (const)",
11631163
"PresignedUrlConfig (type)",
11641164
"PresignedUrlConfigSchema (const)",
1165-
"ProvisioningStep (type)",
1166-
"ProvisioningStepSchema (const)",
11671165
"PushNotification (type)",
11681166
"PushNotificationSchema (const)",
11691167
"QueueConfig (type)",
@@ -1324,18 +1322,8 @@
13241322
"TenantIsolationConfig (type)",
13251323
"TenantIsolationConfigSchema (const)",
13261324
"TenantIsolationLevel (type)",
1327-
"TenantPlan (type)",
1328-
"TenantPlanSchema (const)",
1329-
"TenantProvisioningRequest (type)",
1330-
"TenantProvisioningRequestSchema (const)",
1331-
"TenantProvisioningResult (type)",
1332-
"TenantProvisioningResultSchema (const)",
1333-
"TenantProvisioningStatus (type)",
1334-
"TenantProvisioningStatusEnum (const)",
13351325
"TenantQuota (type)",
13361326
"TenantQuotaSchema (const)",
1337-
"TenantRegion (type)",
1338-
"TenantRegionSchema (const)",
13391327
"TenantSchema (const)",
13401328
"TenantSecurityPolicy (type)",
13411329
"TenantSecurityPolicyInput (type)",
@@ -3752,7 +3740,6 @@
37523740
"IPackageService (interface)",
37533741
"IPluginLifecycleEvents (interface)",
37543742
"IPluginValidator (interface)",
3755-
"IProvisioningService (interface)",
37563743
"IPubSub (interface)",
37573744
"IQueueService (interface)",
37583745
"IRealtimeService (interface)",
@@ -3772,7 +3759,6 @@
37723759
"IStartupOrchestrator (interface)",
37733760
"IStorageService (interface)",
37743761
"ITeamGraphService (interface)",
3775-
"ITenantRouter (interface)",
37763762
"ImportObjectOpts (interface)",
37773763
"ImportObjectResult (interface)",
37783764
"InboxListResult (interface)",
@@ -3853,7 +3839,6 @@
38533839
"ReportSchedule (interface)",
38543840
"ResolveDependenciesInput (interface)",
38553841
"ResolveShareLinkResult (interface)",
3856-
"ResolvedTenantContext (interface)",
38573842
"ResumeSignal (interface)",
38583843
"RlsMembershipContext (interface)",
38593844
"RollbackInput (interface)",

packages/spec/authorable-surface.json

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6569,12 +6569,6 @@
65696569
"system/PresignedUrlConfig:operation",
65706570
"system/PresignedUrlConfig:responseContentDisposition",
65716571
"system/PresignedUrlConfig:responseContentType",
6572-
"system/ProvisioningStep:completedAt",
6573-
"system/ProvisioningStep:durationMs",
6574-
"system/ProvisioningStep:error",
6575-
"system/ProvisioningStep:name",
6576-
"system/ProvisioningStep:startedAt",
6577-
"system/ProvisioningStep:status",
65786572
"system/PushNotification:actions",
65796573
"system/PushNotification:badge",
65806574
"system/PushNotification:body",
@@ -6887,21 +6881,6 @@
68876881
"system/TenantConnectionConfig:authToken",
68886882
"system/TenantConnectionConfig:group",
68896883
"system/TenantConnectionConfig:url",
6890-
"system/TenantProvisioningRequest:adminEmail",
6891-
"system/TenantProvisioningRequest:displayName",
6892-
"system/TenantProvisioningRequest:metadata",
6893-
"system/TenantProvisioningRequest:orgId",
6894-
"system/TenantProvisioningRequest:plan",
6895-
"system/TenantProvisioningRequest:region",
6896-
"system/TenantProvisioningResult:connectionUrl",
6897-
"system/TenantProvisioningResult:error",
6898-
"system/TenantProvisioningResult:plan",
6899-
"system/TenantProvisioningResult:provisionedAt",
6900-
"system/TenantProvisioningResult:region",
6901-
"system/TenantProvisioningResult:status",
6902-
"system/TenantProvisioningResult:steps",
6903-
"system/TenantProvisioningResult:tenantId",
6904-
"system/TenantProvisioningResult:totalDurationMs",
69056884
"system/TenantQuota:apiRateLimit",
69066885
"system/TenantQuota:maxDeploymentsPerDay",
69076886
"system/TenantQuota:maxObjects",

packages/spec/docs-import-surface.baseline.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
"system/ServiceConfig — no type export",
104104
"system/ServiceCriticality — no type export",
105105
"system/ServiceStatus — no type export",
106-
"system/TenantProvisioningStatusEnum — no type export",
107106
"ui/AIChatWindowProps — no type export",
108107
"ui/ActionType — no type export",
109108
"ui/BreakpointColumnMap — no type export",

0 commit comments

Comments
 (0)