feat(spec)!: 移除 ./automation 的孤儿 EventSchema —— C6 双源清账,基线 13 → 12 (#4658) - #4745
Merged
Conversation
…./kernel` (#4658) `EventSchema` 曾由 `./automation` 与 `./kernel` 各自导出一个声明,且两侧键集完全 不相交:automation 侧是 XState 式信号声明 `{ type, schema? }`,kernel 侧是事件总线 信封 `{ id?, name, payload, metadata }`。收敛等于在合同里写假话(把信号声明说成信 封),按维护者裁决(#4658,路线 A)删除 automation 侧孤儿:`StateMachineSchema` 从 不引用它(状态机事件类型是 `on:` 的记录键),objectstack / cloud / objectui 三仓 import 语句级零消费者,且以 #4650 门禁同款真 Zod 图 BFS 实测其从 24 个元数据根不可达 (同一次 BFS 中 `StateMachineSchema` 本身可达 —— 删除是外科式的)。 - state-machine.zod.ts:删除孤儿声明,留 #4658 指路注释 - dual-source-exports.baseline.json:删 `EventSchema` 行(13 → 12) - authorable-surface.json:`automation/Event:type` / `:schema` 随整 def 出账 (#4650 门禁判定:def no longer emitted,输出见 PR) - json-schema.manifest.json:删 `automation/Event` 键(#2978 蓄意移除通道) - api-surface.json:`./automation` 仅一行删除;docs-import-surface.baseline.json 经生成器收缩一行;references/automation/events-core.mdx 随生成器消失 - 回归 pin(state-machine.test.ts):compiler-API 断言 `./automation` 无 `EventSchema`、`./kernel` 为全包唯一声明(package.json exports 全入口枚举), 防空转守卫;S1(重加导出)/ S2(禁止的 re-export 收敛路线)sabotage 均红 - 严格性台账:automation 87 → 86 sites,state-machine 行 7 → 6(实跑判定) - changeset:@objectstack/spec major(移除已发布导出名,TS2305),零元数据迁移 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 107 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
August 3, 2026 01:28
os-zhuang
enabled auto-merge
August 3, 2026 01:28
os-zhuang
marked this pull request as draft
August 3, 2026 01:29
auto-merge was automatically disabled
August 3, 2026 01:29
Pull request was converted to draft
os-zhuang
marked this pull request as ready for review
August 3, 2026 01:30
os-zhuang
enabled auto-merge
August 3, 2026 01:30
This was referenced Aug 3, 2026
feat(spec)!: 删除
./system 的 declared-only tenant-provisioning 家族 —— C16 双源清账,基线 12 → 10 (#4739)
#4752
Merged
akarma-synetal
pushed a commit
to akarma-synetal/framework
that referenced
this pull request
Aug 3, 2026
…6 双源清账,TenantPlan 唯一真源在 ./cloud (objectstack-ai#4739) (objectstack-ai#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*` 家族整体取代。按维护者 裁决(objectstack-ai#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 留 objectstack-ai#4739 指路注释(objectstack-ai#4212/objectstack-ai#4451 同款) - dual-source-exports.baseline.json:删 TenantPlan / TenantPlanSchema 两行 (12 → 10,rebase 携带 C6 objectstack-ai#4745 落地后的起点) - authorable-surface.json:21 行随三个整 def 出账(objectstack-ai#4650 门禁判定三组 「def no longer emitted」自证路径,输出见 PR) - json-schema.manifest.json:删六 def 键(objectstack-ai#2978 蓄意移除通道) - api-surface.json:恰好 15 行删除(./system 12 + ./contracts 3),零新增 - docs:system/provisioning.mdx 与幽灵页 cloud/provisioning.mdx 随生成器 消失,cloud/TenantPlan 文档回到真家 cloud/tenant.mdx(objectstack-ai#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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #4658
关联:#4535(主账本 C6)、#4650(删行自证门禁,本单走其「整 def 消失」路径)、#4642(pin 形态)、#4446 / #4506(gate 本体)。
按维护者裁决走路线 A:删除
./automation侧的孤儿EventSchema。两侧键集完全不相交 —— automation 侧是 XState 式信号声明{ type, schema? },kernel 侧是事件总线信封{ id?, name, payload, metadata }—— 收敛等于在合同里写假话,故删孤儿而非收敛;kernel 侧一字未动,成为全包唯一声明。1. 重验前提(未采信旧结论,全部实测)
三仓 import 语句级扫描(objectstack @ 本分支基线 / cloud @
5df2c69/ objectui @785b8a5,后者恰为本次 rebase 携带的 console pin 版本):packages/spec之外裸名EventSchema零命中(cloud 连子串命中都是 0;objectui 仅TimelineEventSchema/CalendarEventSchema等复合名,及packages/types的export type * as Automation / as Kernel命名空间隔离再导出)。kernel/events/dlq.zod.ts:24,71嵌入 +kernel/events.test.ts,export type Event同文件。StateMachineSchema确不引用被删 schema:状态机事件类型是on:的记录键(纯字符串)。真图可达性(以 #4650 门禁同款真 Zod 图 BFS,对合并基线版源码实测):
孤儿不可达、而
StateMachineSchema本身可达 —— 删除是外科式的,不伤作者面。与裁决零冲突。2. #4650 门禁对被删行的判定(实跑输出,rebase 后重跑)
即「整 def 消失」自证路径;两个裁决点本 PR 均满足:
json-schema.manifest.json删automation/Event键(#2978 蓄意移除通道,门禁错误信息指定的同 PR 手删),check:api-surface全绿(api-surface.json恰好只有./automation一行删除)。authorable-surface.json删的两行(automation/Event:type/:schema)与生成器规范形逐字节一致(check:authorable-surface✓)。3. 基线 13 → 12(实跑)
dual-source-exports.baseline.json删EventSchema — [./automation (const)] ≠ [./kernel (const)]一行,其余 12 行一字未动:4. 回归 pin + sabotage(C14 形态,#4642 纪律)
packages/spec/src/automation/state-machine.test.ts新增[#4658]describe 块:compiler-API pin:入口从
package.jsonexports map 枚举(17 个,防新入口逃逸),断言./automation不再命名EventSchema(且表面非平凡,防真空通过)、./kernel仍导出且声明落在src/kernel/events/core.zod.ts、全入口范围内任何叫EventSchema的导出都必须解析到该唯一声明;模块符号解析带防空转守卫。运行时命名空间断言:automation 命名空间无该属性、kernel 有;信封样例 parse 通过、XState 信号声明样例(
type为 APPROVE 的对象)被拒 —— 两概念从未收敛的运行时证据。sabotage 实证(均已回滚):
S1 重加
export const EventSchema→ 2 条 pin 红:S2 走被否决的收敛路线(符号同一性此时是单声明,骗得过 dual-source gate 的视角):
→ pin 仍是同样 2 条红 —— 拦的是「名字离开 ./automation」这条裁决本身,不只是名字存在性。
干净态:
state-machine.test.ts8/8 通过。5. changeset 定级(逐条自证)
@objectstack/specmajor:已发布导出名的移除,外部消费方将以 TS2305 编译失败(与 C14 同形):同时零元数据迁移:def 从元数据根不可达(§1 BFS 输出),没有任何元数据文档曾被它解析,无 tombstone、无 ADR-0087 conversion / migration(
spec-changes.json/ upgrade-guide 两 gate 零变化)。三仓零消费者 ⇒ 预期 TS2305 实际命中数为 0。全文见.changeset/event-schema-dual-source-c6.md。6. 全量验证(实跑)
check:generated(8 门)check:dual-source-exportscheck:livenesscheck:strictness-ledgerstate-machine.zod.ts行 7 → 6,按 gate 实跑指令更新并留 −1 注记 —— C3 教训)check:empty-statecheck:variant-docscheck:exported-anycheck:skill-examplespnpm testtypecheckpnpm typecheck7. 并行协议合规(#4535 2026-08-03 新纪律)
enable.trash/enable.mrucapability flags (ADR-0049 enforce-or-remove) #3207 的data/zod / object form / i18n 区零交集(diff 11 文件,见下)。072806aa5,console pin 刷新,不触 spec)——已 rebase → 重跑生成器 → 重验(§2 / §6 输出即 rebase 后结果);入队前若 main 再推进,将再走一轮同流程。flock /tmp/os-heavy-verify.lock串行,vitest--maxWorkers=2、turbo--concurrency=2。.changeset/pre.json开工实测仍mode: pre/tag: rc。content/docs/releases/;KNOWN_STILL_DUAL_SOURCE保持[];RENAMED_DEFS未动(本单是删除不是改名);authorable-surface.json的删行走 authorable-surface 的 tombstone 门禁可被手编基线绕过 —— 删掉基线行就删掉了证据(#4638 / #4643 已两次这样过绿) #4650 自证而非绕过。改动清单(11 文件):
state-machine.zod.ts(删孤儿 + 指路注释)、state-machine.test.ts(pin)、基线/manifest/api-surface/authorable-surface/docs-import-surface 各一行级收缩、references/automation/events-core.mdx随生成器消失 +meta.json同步、严格性台账、changeset。🤖 Generated with Claude Code
https://claude.ai/code/session_0176qgxgCXTJCUv4YFLtusP9