Skip to content

Commit e79e2fb

Browse files
committed
Merge origin/main into claude/issue-4616-notification-orphan-schemas
2 parents 0d291d6 + ffab803 commit e79e2fb

20 files changed

Lines changed: 374 additions & 79 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
---
3+
4+
chore(i18n): drop the undeclared `name:` key from all nine `scripts/i18n-extract.config.ts`
5+
6+
Releases nothing — build-time-only extract fixtures (`scripts/` is not in any
7+
package's published `files`), no runtime or published behaviour changes.
8+
9+
Every one of the nine extract configs opened its `defineStack({ … })` with a
10+
`name:` that the stack schema does not declare, so `ObjectStackDefinitionSchema`
11+
dropped the value at load and the #4167 unknown-stack-key lint reported it —
12+
once per package, on every `pnpm check:i18n` run, in a run that was otherwise
13+
fully green:
14+
15+
```
16+
defineStack: stack.name: 'name' is not a declared stack key, so its value is dropped at load — did you mean 'pages'?
17+
```
18+
19+
The lint was right and the configs were wrong: nothing has ever read a stack's
20+
top-level `name``os i18n extract` receives the *parsed* `defineStack` result,
21+
from which the key is already gone — so the nine values were inert. The fix is
22+
at the producer (#4736 decision A: delete the nine keys), not a new authorable
23+
key in `packages/spec` to accommodate one typo copied nine times.
24+
25+
Extraction output is unchanged: after the deletion a full
26+
`node scripts/check-i18n-bundles.mjs --write` regenerates all 40 bundles across
27+
the nine packages with a byte-identical result, and `pnpm check:i18n` stays
28+
green — now without the warning.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
"@objectstack/spec": major
3+
---
4+
5+
BREAKING(spec): `@objectstack/spec/kernel` 改名 `PackageDependencySchema``ResolvedPackageDependencySchema`;裸名 `PackageDependency(Schema)` 现在全包唯一地指 `@objectstack/spec/cloud` 的清单声明形 (#4741, #4535 C7)
6+
7+
`PackageDependency` / `PackageDependencySchema` 曾由 `./cloud``./kernel` 各自导出一个声明 —— 同名、键集**完全不相交(0 个共享属性)****两个概念**(#4411 陷阱):
8+
9+
| 入口 | 键集 | 语义 | 处置 |
10+
|:--|:--|:--|:--|
11+
| `./cloud`(**保名**) | `packageId` / `versionRange` / `optional` | **声明形**:作者写进包清单的依赖行,嵌在 `PackageManifestSchema.dependencies[]``sys_package_version.manifest_json` | 裸名唯一归属 |
12+
| `./kernel`(**改名**) | `name` / `versionConstraint` / `type` / `resolvedVersion` | **解析形**:依赖解析器在图上走的边,嵌在 `DependencyGraphNodeSchema.dependencies[]`,并经 `PluginSecurityProtocol` 发布给 SBOM / 冲突报告 |`ResolvedPackageDependencySchema`,字段与校验逐字不变 |
13+
14+
两边都不是 `.strict()`,所以把一侧的文档粘到另一侧时**不会响亮报错,只会静默剥掉全部外来键**(ADR-0104 silent-strip 类)—— 这正是共用一个名字所掩盖的失败模式,也是本次不留任何别名的原因。
15+
16+
## FROM → TO
17+
18+
```ts
19+
// FROM —— 编译期起以 TS2305 失败
20+
import { PackageDependencySchema, type PackageDependency } from '@objectstack/spec/kernel';
21+
22+
// TO —— 同一声明、同一形状,名字点明它是「解析结果」而非「清单声明」
23+
import {
24+
ResolvedPackageDependencySchema,
25+
type ResolvedPackageDependency,
26+
} from '@objectstack/spec/kernel';
27+
```
28+
29+
运行时命名空间对象同步改键:`PluginSecurityProtocol.PackageDependency``PluginSecurityProtocol.ResolvedPackageDependency`(指向同一 schema)。
30+
31+
**要的是清单里写的依赖声明?** `import { PackageDependencySchema, type PackageDependency } from '@objectstack/spec/cloud'` —— 本次未动其形状,仅补了一段互指 docblock。
32+
33+
**受影响面实测**:`objectstack` / `cloud` / `objectui` 三仓 import 级扫描,`./kernel` 侧零外部 importer(唯一读者是同文件的 `DependencyGraphNodeSchema``PluginSecurityProtocol`),预期无人受影响。零 importer 不等于有死侧可删(#4653 判则),故走改名而非删除。
34+
35+
不保留旧名别名:在 `./kernel` 上 re-export 任何一侧的 `PackageDependencySchema` 都会重开本次关闭的陷阱 —— 要么复活双源,要么把清单声明形谎报成解析器合法输入(承接表不变式 3 会在 build 阶段直接拒绝这条路线)。
36+
37+
## 零元数据迁移、零形状变更
38+
39+
本次只动 TS 导出名与内部 JSON Schema def 名(`kernel/PackageDependency``kernel/ResolvedPackageDependency`,走 `RENAMED_DEFS` 承接表,**4 keys carry**:`name` / `versionConstraint` / `type` / `resolvedVersion` 在新 def 名下逐个健在)。
40+
41+
- **无字段增删、无类型变更、无词表变化** —— 两个 schema 的 body 一字未改(对照 C10 的 checksum 对象→字符串、C16 的 3→5 词表拓宽:本簇均不适用)。`type``.default('required')`、cloud 侧 `optional``.default(false)` 都原样保留,并由新增的 pin 用 `parse` 实测钉住(#4666 默认值盲区的自卫)。
42+
- **无 tombstone**:tombstone 的前提是有 key 退役;本次 4 个 key 全数承接,一个都没离开契约,伪造 tombstone 会污染 ADR-0087 登记(`renamed-defs.ts` 头注明列的第 2 种错误处置)。已按 #4767`retiredKey()` 先例逐条评估后排除,非沉默跳过。
43+
- **无 ADR-0087 conversion**:没有作者路径发生位移,注册迁移等于让消费者跑一次不该跑的转换。
44+
- 发布的 JSON Schema `$id` 随之移动:`…/kernel/PackageDependency.json``…/kernel/ResolvedPackageDependency.json`
45+
46+
⚠️ 同前缀近邻 `PackageDependencyConflict(Schema)``PackageDependencyResolutionResult(Schema)`**不同概念**,一字未动,并由 pin 显式断言健在。

content/docs/references/cloud/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"marketplace",
1515
"marketplace-admin",
1616
"---Tenancy & Security---",
17-
"plugin-security",
1817
"tenant"
1918
]
2019
}

content/docs/references/cloud/package-version.mdx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ See `docs/adr/0003-package-as-first-class-citizen.md` for the full rationale.
3030
## TypeScript Usage
3131

3232
```typescript
33-
import { CreatePackageVersionRequestSchema, PackageManifestSchema, PackageVersionSchema, PackageVersionStatusSchema, PublishPackageVersionRequestSchema, UpdatePackageVersionRequestSchema } from '@objectstack/spec/cloud';
34-
import type { CreatePackageVersionRequest, PackageManifest, PackageVersion, PackageVersionStatus, PublishPackageVersionRequest, UpdatePackageVersionRequest } from '@objectstack/spec/cloud';
33+
import { CreatePackageVersionRequestSchema, PackageDependencySchema, PackageManifestSchema, PackageVersionSchema, PackageVersionStatusSchema, PublishPackageVersionRequestSchema, UpdatePackageVersionRequestSchema } from '@objectstack/spec/cloud';
34+
import type { CreatePackageVersionRequest, PackageDependency, PackageManifest, PackageVersion, PackageVersionStatus, PublishPackageVersionRequest, UpdatePackageVersionRequest } from '@objectstack/spec/cloud';
3535

3636
// Validate data
3737
const result = CreatePackageVersionRequestSchema.parse(data);
@@ -55,6 +55,21 @@ Create a new draft package version
5555
| **createdBy** | `string` || User ID creating this version |
5656

5757

58+
---
59+
60+
## PackageDependency
61+
62+
Package dependency declaration
63+
64+
### Properties
65+
66+
| Property | Type | Required | Description |
67+
| :--- | :--- | :--- | :--- |
68+
| **packageId** | `string` || Manifest ID of the dependency |
69+
| **versionRange** | `string` || Semver version range (e.g. ^1.0.0) |
70+
| **optional** | `boolean` || Whether this dependency is optional |
71+
72+
5873
---
5974

6075
## PackageManifest

content/docs/references/cloud/plugin-security.mdx

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

content/docs/references/kernel/plugin-security.mdx

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ Features:
3232
## TypeScript Usage
3333

3434
```typescript
35-
import { DependencyGraphSchema, DependencyGraphNodeSchema, PackageDependencySchema, PackageDependencyConflictSchema, PackageDependencyResolutionResultSchema, PluginProvenanceSchema, PluginTrustScoreSchema, SBOMSchema, SBOMEntrySchema, SecurityPolicySchema, SecurityScanResultSchema, SecurityVulnerabilitySchema, VulnerabilitySeverity } from '@objectstack/spec/kernel';
36-
import type { DependencyGraph, DependencyGraphNode, PackageDependency, PackageDependencyConflict, PackageDependencyResolutionResult, PluginProvenance, PluginTrustScore, SBOM, SBOMEntry, SecurityPolicy, SecurityScanResult, SecurityVulnerability, VulnerabilitySeverity } from '@objectstack/spec/kernel';
35+
import { DependencyGraphSchema, DependencyGraphNodeSchema, PackageDependencyConflictSchema, PackageDependencyResolutionResultSchema, PluginProvenanceSchema, PluginTrustScoreSchema, ResolvedPackageDependencySchema, SBOMSchema, SBOMEntrySchema, SecurityPolicySchema, SecurityScanResultSchema, SecurityVulnerabilitySchema, VulnerabilitySeverity } from '@objectstack/spec/kernel';
36+
import type { DependencyGraph, DependencyGraphNode, PackageDependencyConflict, PackageDependencyResolutionResult, PluginProvenance, PluginTrustScore, ResolvedPackageDependency, SBOM, SBOMEntry, SecurityPolicy, SecurityScanResult, SecurityVulnerability, VulnerabilitySeverity } from '@objectstack/spec/kernel';
3737

3838
// Validate data
3939
const result = DependencyGraphSchema.parse(data);
@@ -73,22 +73,6 @@ A node in the dependency graph representing a resolved package
7373
| **metadata** | `{ name: string; description?: string; license?: string; homepage?: string }` | optional | Additional metadata about the package |
7474

7575

76-
---
77-
78-
## PackageDependency
79-
80-
A package dependency with its version constraint
81-
82-
### Properties
83-
84-
| Property | Type | Required | Description |
85-
| :--- | :--- | :--- | :--- |
86-
| **name** | `string` || Package name or identifier |
87-
| **versionConstraint** | `string` || Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`) |
88-
| **type** | `Enum<'required' \| 'optional' \| 'peer' \| 'dev'>` || Category of the dependency relationship |
89-
| **resolvedVersion** | `string` | optional | Concrete version resolved during dependency resolution |
90-
91-
9276
---
9377

9478
## PackageDependencyConflict
@@ -159,6 +143,22 @@ Trust score and verification status for a plugin
159143
| **updatedAt** | `string` || ISO 8601 timestamp when the trust score was last updated |
160144

161145

146+
---
147+
148+
## ResolvedPackageDependency
149+
150+
A resolver-side package dependency: version constraint plus its resolution outcome
151+
152+
### Properties
153+
154+
| Property | Type | Required | Description |
155+
| :--- | :--- | :--- | :--- |
156+
| **name** | `string` || Package name or identifier |
157+
| **versionConstraint** | `string` || Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`) |
158+
| **type** | `Enum<'required' \| 'optional' \| 'peer' \| 'dev'>` || Category of the dependency relationship |
159+
| **resolvedVersion** | `string` | optional | Concrete version resolved during dependency resolution |
160+
161+
162162
---
163163

164164
## SBOM

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,6 @@ import { jaJP } from '../src/apps/translations/ja-JP.js';
178178
import { esES } from '../src/apps/translations/es-ES.js';
179179

180180
export default defineStack({
181-
name: 'platform-objects-i18n-extract',
182-
183181
objects: [
184182
// Identity
185183
SysUser,

packages/plugins/plugin-approvals/scripts/i18n-extract.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { jaJPObjects } from '../src/translations/ja-JP.objects.generated.js';
2727
import { esESObjects } from '../src/translations/es-ES.objects.generated.js';
2828

2929
export default defineStack({
30-
name: 'plugin-approvals-i18n-extract',
3130
objects: [SysApprovalRequest, SysApprovalAction, SysApprovalDelegation] as any,
3231
translations: [
3332
{ en: { objects: enObjects } },

packages/plugins/plugin-audit/scripts/i18n-extract.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { jaJPObjects } from '../src/translations/ja-JP.objects.generated.js';
2222
import { esESObjects } from '../src/translations/es-ES.objects.generated.js';
2323

2424
export default defineStack({
25-
name: 'plugin-audit-i18n-extract',
2625
objects: [SysAuditLog, SysActivity, SysComment] as any,
2726
translations: [
2827
{ en: { objects: enObjects } },

packages/plugins/plugin-security/scripts/i18n-extract.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import { jaJPObjects } from '../src/translations/ja-JP.objects.generated.js';
2424
import { esESObjects } from '../src/translations/es-ES.objects.generated.js';
2525

2626
export default defineStack({
27-
name: 'plugin-security-i18n-extract',
2827
objects: [SysPosition, SysCapability, SysPermissionSet, SysUserPermissionSet, SysPositionPermissionSet, SysUserPosition] as any,
2928
translations: [
3029
{ en: { objects: enObjects } },

0 commit comments

Comments
 (0)