Commit e2bfa6c
* feat(devx): 根 dev 入口新增构建完整性前置 check:dev-prereqs —— 一个前置条件一句修法 (#5795)
`dev` / `dev:*` 此前唯一的前置是 `check:console-sha`,工作区未构建时直接
放行进 boot。#5726 记下了那个现场:一个未满足的前置条件被呈现成十几个互不
相关的问题,而唯一可执行的建议指向错误的修法(改 datasource 配置 / 设
OS_ALLOW_DRIVER_CONNECT_FAILURE=1),一次 30 秒的构建被包装成一场追查。
判据取「声明即强制」:凡工作区包的解析入口(`exports["."]`,否则 `main`)
落在 `dist/` 下,该文件就必须在盘上 —— 按自己的声明未构建的包,修法恰好
就是 `pnpm build`。成员名单读 pnpm-workspace.yaml 而非硬编码路径:
`packages/drivers/*` 的内容跨分支不同,手写驱动路径会正好漏掉 #5726 真正
出事的那个包。67 个包受判,全部有 build 脚本(即 turbo 会构建),因此那句
修法对每个能被点名的包都成立。
结构性排除而非按名排除:`packages/console`(dist 由 build-console.sh 构建、
`turbo run build` 不管,故 `pnpm build` 不是它的修法)、`@objectstack/docs`
(被 `pnpm build` 过滤掉)、examples(入口是 .ts 源文件)都不声明 dist 下的
入口,天然不受判。只探 JS 入口不探 .d.ts,`OS_SKIP_DTS=1` 的快构建仍绿。
陈旧(非缺失)明确不在判据内:比对 src/ 与 dist/ 的 mtime 会在每次
`git worktree add` 后误报 —— 那半边是 AGENTS.md §9 的常备处方。
排在 `check:console-sha` 之前:未构建的 worktree 里后者会打出
「Build it with: pnpm objectui:build」,对本成因是竞争性的错误修法。先跑本
门禁,开发者读到一个前置条件、一句修法就停下。`dev` 链直接用 node 调用
(约 0.05s),不走 `pnpm check:dev-prereqs`(pnpm 每跳约 0.7s);后者保留
仓内 `--self-test &&` 惯例形态供人工与将来非 dev 调用。
`--self-test` 七例把两个方向都钉死(#4690:只见过绿的门禁与什么都不匹配的
门禁无法区分),并钉死上述三类排除、嵌套成员 glob 展开,以及无法展开的
成员 pattern 必须响亮失败而不是静默少覆盖。
CI 零变化:未接入任何 workflow;`.github/` 无一处引用 `pnpm dev` / `dev:*` /
`check:dev-prereqs`,showcase 冒烟走 `working-directory: examples/app-showcase`,
且 CI 一律先构建,该条件在 CI 不可能成立。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE
* fix(devx): 红色输出不再把 #5726 的下游症状说成必然
原措辞写「It fails at 'datasource: connect failed'」,像是任何缺失都会这样。
不成立:门禁在任一 dist 入口缺失时就会红,而只缺 `packages/lint/dist` 时
boot 可能根本不碰 datasource。把一个只在部分场景成立的症状许诺成普遍规律,
正是本 PR 要治的那种误导的缩小版。
改为归因而非许诺:「Where that led once it was chased (#5726)」。判定、点名与
那一句修法都不变;`--self-test` 里「红输出中恰好只有一条命令」的断言仍然绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE
* fix(devx): 绿灯不再声称「工作区没问题」,并把陈旧那半边的单号写进文件头
判据只管产物存在性,绿灯却写成 `✓ Workspace is built`。对**陈旧** dist 的场景
这是反向保证:开发者刚被告知工作区是好的,紧随其后的假漂移就更像真 bug ——
正是 #5726 警告过的「在正确的代码上改出真的 bug」,只是多了一句绿灯替它作证。
改为 `✓ N package build artifacts present (existence, not freshness)`,只说
verify 过的事。陈旧那半边已另立观察类单 #5864(含三条方向),文件头的非目标
一节现在指向它,而不是把这个缺口留成隐含知识。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GX3sL71LFq8m2usg6VqTSE
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 111695a commit e2bfa6c
2 files changed
Lines changed: 399 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
| |||
0 commit comments