按 Prime Directive #10 记录,#3898 / PR #4306 核对时确认的一处可收口的历史包袱。纯清理,无行为变化。
现状
readServiceSelfInfo(packages/spec/src/api/discovery.zod.ts:129)识别两种标记:
svc.__serviceInfo —— D12 的标准描述符;
svc._dev === true —— plugin-dev 的遗留标记,归一为 { status: 'stub', handlerReady: false }。
_dev 的生产者已经一个不剩:
剩下的只有:SERVICE_DEV_MARKER_KEY 常量导出、readServiceSelfInfo 的识别分支,以及四个测试文件里手写 { _dev: true } 的 pin(http-dispatcher.test.ts、dispatcher-plugin.routes.test.ts、protocol-discovery.test.ts、discovery.test.ts)—— 也就是说,这个分支现在只被测试触发。
#3898 的洞 1 当初可以选"教 reader 认第三种标记 _fallback",实际走的是相反路线(#4082):把五个内存兜底改带标准 __serviceInfo,让 _fallback 从生产代码中消失。同一条路线上,_dev 是最后一个没走完的。
建议
按 ADR-0049 enforce-or-remove 收敛到唯一标记:
- 删
readServiceSelfInfo 的 _dev 分支 + SERVICE_DEV_MARKER_KEY 导出;
- 四处测试 pin 改写成
__serviceInfo: { status: 'stub' }(它们本来就是在验证"stub 不报 available",标记形态不是被测对象);
pnpm --filter @objectstack/spec gen:api-surface(删了公开导出);
- 破坏性 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。
按 Prime Directive #10 记录,#3898 / PR #4306 核对时确认的一处可收口的历史包袱。纯清理,无行为变化。
现状
readServiceSelfInfo(packages/spec/src/api/discovery.zod.ts:129)识别两种标记:svc.__serviceInfo—— D12 的标准描述符;svc._dev === true—— plugin-dev 的遗留标记,归一为{ status: 'stub', handlerReady: false }。_dev的生产者已经一个不剩:packages/+examples/全量搜_dev: true,命中的两处都是注释(http-dispatcher.ts:1009、discovery.zod.ts:126),没有代码写它。plugin-dev 的 stub 表在 评估:plugin-dev「stub 填满槽位」这个早期设计是否整体作废 —— #4000/#4058 逐个退役到第 4 个之后,该问的是台面本身 #4093 / ADR-0115 里退役了;剩下的只有:
SERVICE_DEV_MARKER_KEY常量导出、readServiceSelfInfo的识别分支,以及四个测试文件里手写{ _dev: true }的 pin(http-dispatcher.test.ts、dispatcher-plugin.routes.test.ts、protocol-discovery.test.ts、discovery.test.ts)—— 也就是说,这个分支现在只被测试触发。#3898 的洞 1 当初可以选"教 reader 认第三种标记
_fallback",实际走的是相反路线(#4082):把五个内存兜底改带标准__serviceInfo,让_fallback从生产代码中消失。同一条路线上,_dev是最后一个没走完的。建议
按 ADR-0049 enforce-or-remove 收敛到唯一标记:
readServiceSelfInfo的_dev分支 +SERVICE_DEV_MARKER_KEY导出;__serviceInfo: { status: 'stub' }(它们本来就是在验证"stub 不报 available",标记形态不是被测对象);pnpm --filter @objectstack/spec gen:api-surface(删了公开导出);{ _dev: true }→{ __serviceInfo: { status: 'stub', message: '…' } }—— 这段文字会随 npm 包发到消费者手里,是外部实现者升级时会 grep 的东西。收益:
readServiceSelfInfo的文档不必再解释 legacy 分支,"三种标记"的历史彻底归一为一种。关联
#3898、#4058(#4082)、#4093(ADR-0115)、ADR-0076 D12、ADR-0049。
核对于
origin/main@ 366105c。