Skip to content

Commit 891d345

Browse files
os-zhuangclaude
andauthored
feat(spec)!: 双源清账 C13+C15 —— 退役 L1「Simple Sync」整层,integration 冲突枚举改名 ConnectorConflictResolution,ui 侧保名 (#4738) (#4760)
`DataSyncConfig(Schema)` 曾由 `./automation` 与 `./integration` 各导出一个声明, `ConflictResolution(Schema)` 三个入口三个声明(#4411 陷阱)。按维护者裁决 (#4535 前锋判定 + 2026-08-03 批复,L1 否决位默认通过)三动作一单: - **automation 侧整体死删**:`automation/sync.zod.ts` + `sync.test.ts`(L1 「Simple Sync」层,17 个导出名)。三仓(objectstack / cloud / objectui) import 语句级零消费者、无父 schema 嵌入,8 个 def 全部不再发出 —— 39 个 authorable key 删行由 #4650 门禁按路径 3(整 def 消失)自证, 归 manifest ratchet(#2978 蓄意移除,8 键逐个列于 PR)+ check:api-surface 管辖。 - **integration 侧 D9(a) 改名**:`ConflictResolution(Schema)` → `ConnectorConflictResolution(Schema)`,走 `RENAMED_DEFS` 承接(0-key carry, 枚举值逐字不变);`DataSyncConfig` integration 侧保名不动 (`ConnectorSchema.syncConfig` 活解析路径)。 - **ui 侧保留正名一字不动**:objectui `useOffline.ts` + `types/index.ts:1054` re-export + parity ratchet 钉住;`api/ConflictResolutionStrategy` 第四亲戚 未动。 - dual-source-exports.baseline.json:删 4 行(认领时点账面 12 → 8;C16 #4752 先行合入 −2,rebase 到 5647006 后实跑 10 → 6) - 回归 pin(sync-retirement.test.ts):compiler-API 符号身份 + exports-map 全入口枚举 + 唯一属主断言 + 防空转守卫;S1(重加导出)/ S2(禁止的裸名 re-export 收敛)/ S3(动 ui 侧名字)三组 sabotage 均红后还原 - SYNC_ARCHITECTURE.md:三层 → 两层 + 显式 L1 退役记录;PROTOCOL_MAP / quick-reference / etl.zod / connector.zod / shared/mapping.zod 头注连带更新 - expression-conformance.ledger.ts:删 stale cover(automation/sync.zod.ts:condition) - 严格性台账:automation 86 → 74 sites(check:strictness-ledger 实跑) - changeset:@objectstack/spec major(TS2305),零元数据迁移(integration 值域 逐字节不变;automation 侧无解析站点即无作者,conversion 不可达) Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 0d9a779 commit 891d345

29 files changed

Lines changed: 454 additions & 1458 deletions
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
"@objectstack/spec": major
3+
---
4+
5+
BREAKING(spec): 退役 L1「Simple Sync」整层(`@objectstack/spec/automation``DataSyncConfig` 一族,17 个导出名),并把 `@objectstack/spec/integration` 的冲突策略枚举改名 `ConflictResolution``ConnectorConflictResolution`;裸名 `ConflictResolution` 现在全包唯一地指 `@objectstack/spec/ui` 的离线同步概念 (#4738, #4535 C13+C15)
6+
7+
`DataSyncConfig(Schema)` 曾由 `./automation``./integration` 各自导出一个声明,`ConflictResolution(Schema)` 更是**三个入口三个声明**(#4411 陷阱):
8+
9+
| 名字 | 入口 | 词表/形状 | 处置 |
10+
|:--|:--|:--|:--|
11+
| `DataSyncConfig` | `./automation`(**删除**) | 19 键,direction=push/pull,batchSize 默认 100 | 随 L1 整层退役 |
12+
| `DataSyncConfig` | `./integration`(**保名不动**) | 9 键,direction=import/export/bidirectional,batchSize 默认 1000 | 唯一真源(`ConnectorSchema.syncConfig` 活解析路径) |
13+
| `ConflictResolution` | `./automation`(**删除**) | `destination_wins` / `merge` 等 5 值 | 随 L1 整层退役 |
14+
| `ConflictResolution` | `./integration`(**改名**) | `target_wins` 等 4 值 |`ConnectorConflictResolution(Schema)`,枚举值逐字不变 |
15+
| `ConflictResolution` | `./ui`(**一字不动**) | `client_wins` / `server_wins` / `manual` / `last_write_wins` | 裸名唯一归属(objectui 实活消费) |
16+
17+
**automation 侧是叙事层,不是实现**:L1「Simple Sync」只存在于 `SYNC_ARCHITECTURE.md` 的三层故事里 —— 三仓(objectstack / cloud / objectui)import 语句级零消费者,没有任何引擎解析或执行过 `DataSyncConfig`,8 个 def 从元数据根真 Zod 图不可达(#4650 门禁实测)。整文件删除:`DataSyncConfig(Schema)``ConflictResolution(Schema)``SyncDirection(Schema)``SyncMode(Schema)``DataSourceConfig(Schema)``DataDestinationConfig(Schema)``SyncExecutionStatus(Schema)``SyncExecutionResult(Schema)``Sync` 工厂。
18+
19+
## FROM → TO
20+
21+
```ts
22+
// FROM —— 编译期起以 TS2305 失败(实测三仓零命中,预期无人受影响)
23+
import { DataSyncConfig, ConflictResolution, Sync } from '@objectstack/spec/automation';
24+
```
25+
26+
- 若你要的是**连接器同步策略配置**(唯一活着的服务端 sync 面):
27+
28+
```ts
29+
// TO —— ConnectorSchema.syncConfig 的类型;裸名保持不变
30+
import { DataSyncConfig, ConnectorConflictResolution } from '@objectstack/spec/integration';
31+
```
32+
33+
- 若你要的是**多源转换管道**:`import { ETLPipeline } from '@objectstack/spec/automation'`
34+
- 若你要的是**客户端离线冲突策略**:`import { ConflictResolution } from '@objectstack/spec/ui'`(本次未动)。
35+
36+
```ts
37+
// FROM —— integration 侧旧名,编译期起以 TS2305 失败
38+
import { ConflictResolution, ConflictResolutionSchema } from '@objectstack/spec/integration';
39+
40+
// TO —— 同一声明、同一词表,只是名字带上了域前缀
41+
import { ConnectorConflictResolution, ConnectorConflictResolutionSchema } from '@objectstack/spec/integration';
42+
```
43+
44+
**零元数据迁移**:integration 改名只动 TS 导出名,`connectors[].syncConfig.conflictResolution` 的取值域(`source_wins` / `target_wins` / `latest_wins` / `manual`)逐字节不变,已发布的 connector 元数据原样解析(def 改名走 `RENAMED_DEFS` 承接表,0-key carry);automation 删除侧没有任何存量元数据可迁 —— 无解析站点即无作者,conversion 写不出能跑到的(不在 stack 树,`converge-activation-event-schema` 先例论证)。相邻雷勿踩:`@objectstack/spec/api``ConflictResolutionStrategy`(路由冲突,`error` / `priority` / `first-wins` / `last-wins`)是第四个同族概念、不同名,本次未动。

content/docs/getting-started/quick-reference.mdx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ REST/GraphQL endpoints, real-time subscriptions, and discovery.
146146
| **[Registry](/docs/references/api/registry)** | `registry.zod.ts` | Registry | API registry |
147147
| **[Storage](/docs/references/api/storage)** | `storage.zod.ts` | Storage | API storage operations |
148148

149-
## Automation Protocol (7 schemas)
149+
## Automation Protocol (5 schemas)
150150

151151
Flows, state machines, approvals, and integrations.
152152

@@ -157,7 +157,6 @@ Flows, state machines, approvals, and integrations.
157157
| **[State Machine](/docs/references/automation/state-machine)** | `state-machine.zod.ts` | StateMachine | State machine definitions |
158158
| **[Webhook](/docs/references/automation/webhook)** | `webhook.zod.ts` | Webhook | Outbound webhooks |
159159
| **[ETL](/docs/references/automation/etl)** | `etl.zod.ts` | ETLPipeline | Data transformation pipelines |
160-
| **[Sync](/docs/references/automation/sync)** | `sync.zod.ts` | DataSyncConfig, SyncMode | Bi-directional data sync |
161160

162161
## Security Protocol (3 schemas)
163162

content/docs/references/automation/connector.mdx

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

content/docs/references/automation/etl.mdx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ ETL (Extract, Transform, Load) Pipeline Protocol - LEVEL 2: Data Engineering
99

1010
Inspired by modern data integration platforms like Airbyte, Fivetran, and Apache NiFi.
1111

12-
**Positioning in 3-Layer Architecture:**
12+
**Positioning in the sync/integration layering** (L1 "Simple Sync" was
1313

14-
- **L1: Simple Sync** (automation/sync.zod.ts) - Business users - Sync Salesforce to Sheets
14+
retired in #4738 — narrative-only, zero consumers; see
1515

16-
- **L2: ETL Pipeline** (THIS FILE) - Data engineers - Aggregate 10 sources to warehouse
16+
`packages/spec/docs/SYNC_ARCHITECTURE.md`):
1717

18-
- **L3: Enterprise Connector** (integration/connector.zod.ts) - System integrators - Full SAP integration
18+
- **ETL Pipeline** (THIS FILE) - Data engineers - Aggregate 10 sources to warehouse
19+
20+
- **Enterprise Connector** (integration/connector.zod.ts) - System integrators - Full SAP integration; connector-attached sync via `syncConfig`
1921

2022
ETL pipelines enable automated data synchronization between systems, transforming
2123

@@ -45,17 +47,11 @@ Supports complex operations: joins, aggregations, filtering, custom SQL.
4547

4648
- Legacy system migration with transformation
4749

48-
**When to downgrade:**
49-
50-
- Simple 1:1 sync → Use [Simple Sync](./sync.zod.ts)
51-
5250
**When to upgrade:**
5351

5452
- Need full connector lifecycle (auth, webhooks, rate limits) → Use [Enterprise Connector](/docs/references/integration/connector)
5553

56-
See also: `./sync.zod.ts` for Level 1 (simple sync)
57-
58-
See also: [../[integration/connector.zod.ts](/docs/references/integration/connector)](/docs/references/integration/connector) for Level 3 (enterprise integration)
54+
See also: [../[integration/connector.zod.ts](/docs/references/integration/connector)](/docs/references/integration/connector) for the Enterprise Connector layer
5955

6056
## Use Cases
6157

content/docs/references/automation/index.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ This section contains all protocol schemas for the automation layer of ObjectSta
1818
<Card href="/docs/references/automation/node-executor" title="Node Executor" description="Source: packages/spec/src/automation/node-executor.zod.ts" />
1919
<Card href="/docs/references/automation/schemaless-node-config" title="Schemaless Node Config" description="Source: packages/spec/src/automation/schemaless-node-config.zod.ts" />
2020
<Card href="/docs/references/automation/state-machine" title="State Machine" description="Source: packages/spec/src/automation/state-machine.zod.ts" />
21-
<Card href="/docs/references/automation/sync" title="Sync" description="Source: packages/spec/src/automation/sync.zod.ts" />
2221
<Card href="/docs/references/automation/time-relative-trigger" title="Time Relative Trigger" description="Source: packages/spec/src/automation/time-relative-trigger.zod.ts" />
2322
<Card href="/docs/references/automation/webhook" title="Webhook" description="Source: packages/spec/src/automation/webhook.zod.ts" />
2423
</Cards>

content/docs/references/automation/meta.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010
"time-relative-trigger",
1111
"---Integration & Data---",
1212
"bpmn-interop",
13-
"connector",
1413
"etl",
15-
"offline",
16-
"sync",
1714
"webhook",
1815
"---Approvals & Jobs---",
1916
"approval",

content/docs/references/automation/offline.mdx

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

0 commit comments

Comments
 (0)