diff --git a/docs/DEV-TOOLING.md b/docs/DEV-TOOLING.md index d01b8db..6d8cb5a 100644 --- a/docs/DEV-TOOLING.md +++ b/docs/DEV-TOOLING.md @@ -163,6 +163,17 @@ bash deploy/prune-deploy-artifacts.sh --self-check # 判据自检(16 项, 5. **别只看过滤后的输出。** `grep '^not ok'` 会丢掉"整份文件没跑起来"这个信息 (语法错时只报一条 `not ok 1 - test/xxx.test.mjs`)。退出码 + `# pass`/`# fail` 汇总行才是可靠信号 —— 也**不要**为此引入手抄的"期望用例数"常量:手抄常量会过期。 +6. **判据的退出码不许经管道取值。** 反例(2026-09-14,我自己踩的): + `bash deploy/check-shared-libs.sh 2>&1 | tail -25; echo "exit=$?"` —— + `$?` 拿到的是 **`tail` 的**退出码,于是那条脚本的红(真值 1)被我报成了 0; + 两个失败信息之所以还看得见,只是因为它们走 stderr 没进管道。 + **用 `$PIPESTATUS[0]`,或先落文件再读** —— 管道会改写量纲,与上一条同族。 +7. **一条新判据上线时,先找它可能与哪些既有不变量冲突。** 2026-09-14: + 新加的"本平台不可达 ⇒ 搬去 `test/lib/`"与既有的"共用模块四方**逐字节同源、 + 连相对路径一起钉**"(`deploy/check-shared-libs.sh`)**方向相反** —— + 我只看⻅了自己那条,于是"按规则推断出的正确动作"把共用判据打红两处, + 还差点让下次部署**静默删掉**一个 dsh 桥的生产模块(`lib/user-question.js`)。 + ⇒ 可达性只能当**报告**,不能当搬家判据;判据里读共用清单做豁免(不手抄)。 ### 两条同族的实现纪律