Skip to content

诚实层的 _dev 遗留标记生产者已清零 —— 按 enforce-or-remove 收敛到唯一的 __serviceInfo #4319

Description

@os-zhuang

按 Prime Directive #10 记录,#3898 / PR #4306 核对时确认的一处可收口的历史包袱。纯清理,无行为变化

现状

readServiceSelfInfo(packages/spec/src/api/discovery.zod.ts:129)识别两种标记:

  1. svc.__serviceInfo —— D12 的标准描述符;
  2. svc._dev === true —— plugin-dev 的遗留标记,归一为 { status: 'stub', handlerReady: false }

_dev生产者已经一个不剩:

剩下的只有:SERVICE_DEV_MARKER_KEY 常量导出、readServiceSelfInfo 的识别分支,以及四个测试文件里手写 { _dev: true } 的 pin(http-dispatcher.test.tsdispatcher-plugin.routes.test.tsprotocol-discovery.test.tsdiscovery.test.ts)—— 也就是说,这个分支现在只被测试触发

#3898 的洞 1 当初可以选"教 reader 认第三种标记 _fallback",实际走的是相反路线(#4082):把五个内存兜底改带标准 __serviceInfo,让 _fallback 从生产代码中消失。同一条路线上,_dev 是最后一个没走完的。

建议

按 ADR-0049 enforce-or-remove 收敛到唯一标记:

  1. readServiceSelfInfo_dev 分支 + SERVICE_DEV_MARKER_KEY 导出;
  2. 四处测试 pin 改写成 __serviceInfo: { status: 'stub' }(它们本来就是在验证"stub 不报 available",标记形态不是被测对象);
  3. pnpm --filter @objectstack/spec gen:api-surface(删了公开导出);
  4. 破坏性 changeset,body 写 FROM → TO:{ _dev: true }{ __serviceInfo: { status: 'stub', message: '…' } } —— 这段文字会随 npm 包发到消费者手里,是外部实现者升级时会 grep 的东西。

收益:readServiceSelfInfo 的文档不必再解释 legacy 分支,"三种标记"的历史彻底归一为一种。

关联

#3898#4058(#4082)、#4093(ADR-0115)、ADR-0076 D12、ADR-0049。

核对于 origin/main @ 366105c

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions