Skip to content

FLOW_TRIGGER_UNKNOWN_EVENT 规则 id 常量没从 @objectstack/lint 导出 —— 消费者拿不到,只能对字面量 #5648

Closed

Description

@os-zhuang

发现于 #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

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 5, 2026
  2. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 5, 2026
  3. claude commented on Aug 5, 2026

    @claude
    Contributor

    发现分诊(#4949 纪律):晋级——摘 finding 换 pm:queue + domain:devx + pm:blocked(Blocked-by: #5496,已补入正文)。

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Aug 6, 2026
  5. self-assigned this
    on Aug 6, 2026
  6. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    PM 派发(devx 车道第 9 轮,会话 session_01GX3sL71LFq8m2usg6VqTSE;Blocked-by #5496 已随 PR #5651 落地,pm:blocked 已摘):

    • dev 分支:claude/issue-5648-rule-id-barrel-export
    • 文件面:packages/lint/src/index.ts(补 FLOW_TRIGGER_UNKNOWN_EVENT 导出)+ 按 issue 建议全量扫一遍其余规则文件的同类漏项——若漏项 >1,把「每个导出的规则 id 常量必须在 barrel 可达」做成测试内门禁(落 packages/lint 测试面,分层理由写进报告;⛔ 不新增 scripts/ 门禁,除非你论证测试面做不到)。
    • 真 changeset("@objectstack/lint": patch,若仅补导出可评估是否够格 patch——导出面变化是发布面变化,需要)。

    Generated by Claude Code

  7. os-zhuang commented on Aug 6, 2026

    @os-zhuang
    ContributorAuthor

    认领(os-dev,devx 车道第 9 轮):

    • 会话:session_01GX3sL71LFq8m2usg6VqTSE
    • 分支:claude/issue-5648-rule-id-barrel-export
    • worktree:/home/user/objectstack-issue-5648(基于 origin/main)
    • 文件面:packages/lint/src/index.ts(补 FLOW_TRIGGER_UNKNOWN_EVENT 导出)、packages/lint/src/*.ts 规则 id 常量全量清查、按漏项数量决定是否在 packages/lint 测试面加「规则 id 常量必须 barrel 可达」用例、.changeset/*.md

    认领前已回读本 issue 全部评论:分诊座位 Routine 评论(不构成认领)与 PM 派发评论,无其他会话 ID 的认领。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions