Skip to content

[17.0-rc2验收] objectstack.config.ts 的 engines.protocol 仍是 ^17.0.0-rc.1,与 objectstack.manifest.json(rc.2)及 build 产物不一致 #728

Closed

Description

@yinlianghui

现象

同一个应用的两处协议/规格声明互相打架,pnpm build 出的产物 dist/objectstack.json 携带的是旧值 rc.1:

来源 字段 值
objectstack.config.ts:45(驱动 build 产物) manifest.engines.protocol ^17.0.0-rc.1
objectstack.manifest.json:4-6(marketplace 模板清单) specVersion / engines.protocol ^17.0.0-rc.2
dist/objectstack.json → manifest.engines.protocol (build 产物) ^17.0.0-rc.1
package.json @objectstack/* 依赖 17.0.0-rc.2

objectstack.config.ts:38-44 自己的注释写着:「Bump together with specVersion on every platform upgrade (docs/MAINTENANCE.md §3)」。rc.2 升级(commit 5a11631 "upgrade ObjectStack to 17.0.0-rc.2")把 objectstack.manifest.json 与依赖都抬到了 rc.2,但漏抬了 objectstack.config.ts 的 engines.protocol。

复现步骤

cd /home/user/hotcrm
pnpm build
python3 -c "import json; print(json.load(open('dist/objectstack.json'))['manifest']['engines'])"
# => {'protocol': '^17.0.0-rc.1'}
python3 -c "import json; d=json.load(open('objectstack.manifest.json')); print(d['specVersion'], d['engines'])"
# => ^17.0.0-rc.2 {'protocol': '^17.0.0-rc.2'}
grep -n 'protocol' objectstack.config.ts
# => 45:    engines: { protocol: '^17.0.0-rc.1' },

期望 vs 实际

  • 期望:objectstack.config.ts 的 engines.protocol 与 objectstack.manifest.json 的 specVersion/engines.protocol 对齐到 ^17.0.0-rc.2,产物据此声明 rc.2。
  • 实际:config/产物仍声明 rc.1,与模板清单不一致。

影响与严重度

按 objectstack.config.ts:38-40 注释,协议握手只看 major(runtime 换 major 才 OS_PROTOCOL_INCOMPATIBLE),两处都是 major 17,故当前无功能性阻断 —— 定 p2。但这是随发布产物一起对外分发的一处元数据不一致,且违反了该文件自身的维护约束(specVersion 与 engines 同抬),pnpm build 与 publish:marketplace:dry-run 都不校验二者一致(dry-run 实测通过、未告警),会一路滑到已发布 artifact。

证据

  • pnpm build 摘要:Data: 17 Objects 344 Fields … Artifact: dist/objectstack.json (1869.7 KB),产物 manifest.engines.protocol = ^17.0.0-rc.1。
  • DRY_RUN=1 node scripts/publish-marketplace.mjs EXIT=0,发布 version 2.2.2,无一致性告警。

落点分析

HotCRM 侧元数据。修点:objectstack.config.ts:45 engines: { protocol: '^17.0.0-rc.2' }(与 objectstack.manifest.json 对齐)。可选加固:给 test/ 或 build 加一条 config.engines.protocol == manifest.specVersion 的一致性断言,把「同抬」从约定升级为门禁。

环境

hotcrm@0899b4f + @objectstack 17.0.0-rc.2

Activity

  1. added
    bugSomething isn't working
    metadataDeclarative metadata — schema, security posture, UI surfaces
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 5, 2026
  2. self-assigned this
    on Aug 6, 2026
  3. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    ContributorAuthor

    [PM 认领 · 修复线 R39 · 并单主单] session_01VHrPAGEgFDoHjphqYG4BMa · branch claude/issue-728-729-version-count-drift

    并单:#729 为副单(同族:rc2 验收时点的版本/数量宣称漂移;文件面不相交,一个改 config、一个改 README/marketplace 文档)。PR 以 Fixes #728 / Fixes #729 双首行关联。

    文件面:objectstack.config.ts(engines.protocol);README.md + marketplace 文档(对象/flow 数量)。

    裁定:

    1. 两条都先 premise-check——chore(deps): 升级 @objectstack/* 17.0.0-rc.2 → 17.0.0-rc.3(维护者指令),并测量在案上游镜像的行为变化 #901 / PR chore(deps): 升级 @objectstack/* 17.0.0-rc.2 → 17.0.0-rc.3(零后果修复),并实测四条在案上游镜像 #910 已把平台依赖升至 17.0.0-rc.3,engines.protocol 可能已被顺手修正;对象/flow 实数在 rc.3 main 上也未必还是 17/24,一切以 fresh main 实测为准;premise 失效/部分失效就如实报 invalid/partial 并给证据(这类结论与修复同价);
    2. 仍漂移则:engines.protocol 改到与 manifest/依赖一致;数量改到实测值(所有宣称处,含多语言面若有);
    3. 强烈考虑防再犯守卫:engines.protocol ↔ manifest 一致性断言、README 数量 ↔ src/objects 与 flows 实数比对——沿 docs: 全站去人格化 Copilot 称呼,并把版本号钉到 manifest (#612) #1001 版本漂移断言的既有模式挂进 docs-drift 或 metadata 守卫;
    4. ⛔ 不升级 @objectstack/* 本身;changeset patch。

    Generated by Claude Code

  4. yinlianghui commented on Aug 7, 2026

    @yinlianghui
    ContributorAuthor

    [PM 验收 · R39 · 并单 #728+#729] ✅ 双单通过。PR #1010 已合并。

    #729 系并单副单,随本 PR 一并关闭。


    Generated by Claude Code

  5. added and removed on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingmetadataDeclarative metadata — schema, security posture, UI surfacespm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions