发现于 #5496 的实测。观察类(observation-class):今天没有用户会踩到,消费者可以退化成比对字符串字面量。挂 finding,不挂 pm:queue,交 PM 分诊轮定级。
事实
packages/lint/src/validate-flow-trigger-readiness.ts 导出三个规则 id 常量,其中两个在包的 barrel 里再导出,一个没有:
| 常量 |
src/index.ts |
src/runtime.ts |
FLOW_TRIGGER_UNKNOWN_OBJECT |
有(index.ts:54) |
无 |
FLOW_DRAFT_STATUS_AMBIGUOUS |
有(index.ts:55) |
无 |
FLOW_TRIGGER_UNKNOWN_EVENT |
无 |
无 |
packages/lint/package.json 的 exports 只开了 "." 和 "./runtime" 两个入口,tsup.config.ts 的 entry 也只有 src/index.ts 与 src/runtime.ts,所以没进 barrel 就等于消费者完全拿不到 —— 无法 import { FLOW_TRIGGER_UNKNOWN_EVENT } from '@objectstack/lint',也没有深路径可绕。
FLOW_TRIGGER_UNKNOWN_EVENT 是 §1c/§1d 两条规则(#3427 的不可映射 token、#3457/#3481 的数组形 triggerType)共用的 id,os lint --json 与 os validate 输出里 f.rule 就是这个字符串,所以消费者(Studio 渲染、下游按规则过滤/抑制)只能写 'flow-trigger-unknown-event' 字面量,拿不到常量。
看起来是新增规则时漏加 barrel 一行,而不是刻意决定:同文件另两个 id 都导出了,且没有任何注释说明为何这条例外。
为什么不在 #5496 里顺手修
#5496 的 PR 只往 barrel 加了它自己新增的那一行(FLOW_TIME_RELATIVE_DESCRIPTOR_INVALID,否则新规则的 id 同样不可达),补别人的漏项属于范围外(PD:scope = the issue)。一行的事,但归属清楚更好。
建议
packages/lint/src/index.ts 的 validate-flow-trigger-readiness.js 导出块里补 FLOW_TRIGGER_UNKNOWN_EVENT。顺带值得看一眼别的规则文件有没有同类漏项 —— 如果 barrel 漏项不止一处,更值得的做法是加一条「每个导出的规则 id 常量都必须在 barrel 里可达」的 gate,而不是逐个补(判定权集中,新增规则时不再依赖记性)。
关联:#5496(发现来源)、#3427、#3457、#3481(该 id 服务的规则)。
Blocked-by: #5496
Generated by Claude Code
发现于 #5496 的实测。观察类(observation-class):今天没有用户会踩到,消费者可以退化成比对字符串字面量。挂
finding,不挂pm:queue,交 PM 分诊轮定级。事实
packages/lint/src/validate-flow-trigger-readiness.ts导出三个规则 id 常量,其中两个在包的 barrel 里再导出,一个没有:src/index.tssrc/runtime.tsFLOW_TRIGGER_UNKNOWN_OBJECTFLOW_DRAFT_STATUS_AMBIGUOUSFLOW_TRIGGER_UNKNOWN_EVENTpackages/lint/package.json的exports只开了"."和"./runtime"两个入口,tsup.config.ts的entry也只有src/index.ts与src/runtime.ts,所以没进 barrel 就等于消费者完全拿不到 —— 无法import { FLOW_TRIGGER_UNKNOWN_EVENT } from '@objectstack/lint',也没有深路径可绕。FLOW_TRIGGER_UNKNOWN_EVENT是 §1c/§1d 两条规则(#3427 的不可映射 token、#3457/#3481 的数组形 triggerType)共用的 id,os lint --json与os validate输出里f.rule就是这个字符串,所以消费者(Studio 渲染、下游按规则过滤/抑制)只能写'flow-trigger-unknown-event'字面量,拿不到常量。看起来是新增规则时漏加 barrel 一行,而不是刻意决定:同文件另两个 id 都导出了,且没有任何注释说明为何这条例外。
为什么不在 #5496 里顺手修
#5496 的 PR 只往 barrel 加了它自己新增的那一行(
FLOW_TIME_RELATIVE_DESCRIPTOR_INVALID,否则新规则的 id 同样不可达),补别人的漏项属于范围外(PD:scope = the issue)。一行的事,但归属清楚更好。建议
packages/lint/src/index.ts的validate-flow-trigger-readiness.js导出块里补FLOW_TRIGGER_UNKNOWN_EVENT。顺带值得看一眼别的规则文件有没有同类漏项 —— 如果 barrel 漏项不止一处,更值得的做法是加一条「每个导出的规则 id 常量都必须在 barrel 里可达」的 gate,而不是逐个补(判定权集中,新增规则时不再依赖记性)。关联:#5496(发现来源)、#3427、#3457、#3481(该 id 服务的规则)。
Blocked-by: #5496
Generated by Claude Code