test(判据): ★★★ 套件从 10-02 10:46 起一条都没跑过 —— 补接线 + 结算登记数
**零读数 24 小时,仓库里没有任何记录**(DEBTS.json 58 条里 grep「没接进」0 命中)。 漏接线的三个(都来自aeb1f41/ 2f17f62,都比 run-all.mjs 最后一次改动晚): test/inbox-fallback-poll.test.mjs ← SSE 兜底轮询(探测 total 变化) test/sse-credentials.test.mjs ← SSE 订阅跟账号凭证走 test/web-comment-only.test.mjs **为什么严重(三层放大)**: 1. 自检 2「每个 *.test.mjs 都要在清单里」在跑任何判据**之前** exit(1) ⇒ 实测 RESULT 行数 = **0** 2. npm test = run-all && vitest && typecheck ⇒ vitest(270 格)与 typecheck **一起不跑** —— 而两者单独跑都是绿的 3. 失败信息只有一行中文 stderr,**不含"红"字样**,看起来像"环境问题" ⇒ 下一个人据上一份报告继续推断"判据在把守" ⇒ **报告的证据等级被系统性高估**。 守卫本身**不删**(漏接线绝不静默是真价值),代价靠「新增即接线」这条义务兜。 **顺带结算的登记数漂移**(都在 clean HEAD 上就红,非本次引入): · harmony-window 9→10、appearance-defaults 7→8、harmony-2in1 23→24 ("自报条数 > 登记条数"是显式的编辑义务:只判下界时多出来的条数删掉不红) · harmony-appearance 28→29 —— 配合工作树里别人新增的那条设备判据 · static-criteria 5→4 —— appearance-defaults 已上设备并移出 STATIC_ONLY, **移出名单时忘了回头改这笔登记**,由 commit-hygiene 的机器镜像抓住 · debt-visibility REGISTERED['harmony-appearance'] 4→6 —— 两处都是 **散文**(一处引用文件既有句子、一处在报错文案里),按该文件既有先例登记 并注明;⚠️ 写那段说明时不能引用词表里的词,否则本文件自己数超(实测 12→14 即红) **commit-hygiene 基线推进**:7d081095 与477479a37两条 `fix(harmony):` 改了 "鸿蒙源码 + 另一侧判据",按本仓口径该标 `跨端:`。二者**已推送到 origin 与 origin-https**(merge-base --is-ancestor 实测为真)⇒ 不能 amend;也不往 MARKERS 放行 `fix(harmony):`(那等于永久允许"说单端、实际改两端")。唯一正确处置是 推进基线 + 具名记下。已验证:COMMIT_HYGIENE_BASELINE 覆盖后 pass=4 fail=0。 **CRITERIA.md 新增 §6.0「怎么读判据的数」** —— 原有 17 节全在讲「怎么写」, 缺的就是这一半,而今天两起独立事件都出在它: · 6.0.1 接线守卫的失效形状是「全停」不是「那一条不跑」;ran 必须 == SUITE 条数 · 6.0.2 退出码只能来自不接管道的运行(`cmd >file 2>&1; echo $?`)。 **本会话我连踩 5 次** `cmd | tail -N` ⇒ 报的是 tail 的码。实例: npm test|tail-80(真实:0 条判据跑过)、npm test|tail-30(真实:vitest 根本没跑)、 tsc --noEmit|tail-20(**碰巧**也是 0 —— 事实为真但**当时无根据**,仍须重取证) · 6.0.3 && 链里「全绿」要问**真跑到那一环了吗**(red 之后的东西根本没跑, 而日志里「有 RESULT 行」与「无下游输出」可以同时出现) · 6.0.4 判据变红先问「判据用的工具本身可信吗」(读取器的缺陷是**静默**的) · 6.0.5 **当你就是改工具的人**:第一假设是「我弄坏了它」不是「代码回归」—— 「判据过期了」这个反应本身就错,它默认了「我改的是正确的东西」。 附本次三次改错的下游依赖表,以及"下游依赖是**行为依赖**, codegraph 那类符号图看不见"。 ★ 顺带记一条取证教训:本机每条命令都吐一行 libpcre 的 `no version information` 噪声 ⇒ 某次 grep 的输出被它吞掉, 我把"命令返回空"当成了"没有匹配"。**空输出要连退出码一起看**, 这与 6.0.2 是同一族,只是这次发生在我自己的取证上。
This commit is contained in:
@ -129,9 +129,9 @@ const SUITE = [
|
||||
// `setWindowLayoutFullScreen(true)`(消黑边)+ `getWindowAvoidArea`(让开时钟/手势条)。
|
||||
// 只做前半 ⇒ 页签被时钟盖住(上一次就是这样退回去的,黑边于是留了三天);
|
||||
// 只做后半 ⇒ 黑边照旧。**两半缺哪一半都要判红**,所以变异自检两个方向都跑过。
|
||||
['test/harmony-window.test.mjs', ['--experimental-strip-types', '--no-warnings'], 9],
|
||||
['test/harmony-window.test.mjs', ['--experimental-strip-types', '--no-warnings'], 10],
|
||||
// 外观契约:默认值去 Go 源码里读(服务端 DefaultAppearance 是权威)+ 缓存键按账号
|
||||
['test/appearance-defaults.test.mjs', [], 7],
|
||||
['test/appearance-defaults.test.mjs', [], 8],
|
||||
['test/build-stamp.test.mjs', [], 7],
|
||||
['test/packaging.test.mjs', [], 5],
|
||||
['test/align-refs.test.mjs', [], 3],
|
||||
@ -168,7 +168,7 @@ const SUITE = [
|
||||
* 2in1 键盘可达(用户 2026-09-21「快捷键打开发信页面 / 上下键切换发信目标 /
|
||||
* 回车展开输入框」)。见该文件头部说明:为什么单开一个文件、为什么不端到端验。
|
||||
*/
|
||||
['test/harmony-2in1.test.mjs', [], 23],
|
||||
['test/harmony-2in1.test.mjs', [], 24],
|
||||
['test/harmony-contacts.test.mjs', [], 5],
|
||||
// ★★ 下面三条是**补接线**,不是新写的判据(2026-09-17)。
|
||||
//
|
||||
@ -190,7 +190,28 @@ const SUITE = [
|
||||
// 三维地址拼装:直接执行 `model/ReplyTarget.ts` 真逻辑(行为判据)
|
||||
['test/harmony-reply-target.test.mjs', ['--experimental-strip-types', '--no-warnings'], 7],
|
||||
// 宽屏侧栏图标轨:`WideSidebar` 接线与常量(静态判据,无设备)
|
||||
['test/harmony-widescreen.test.mjs', [], 7]
|
||||
['test/harmony-widescreen.test.mjs', [], 7],
|
||||
/*
|
||||
* ★★ 2026-10-03 补接线。三条都是 `node:test` 写的(`from 'node:test'` ⇒
|
||||
* `shapeOf` 推导出 `usesNodeTest`,`--test` 由 harness 自动加、**不要手写**),
|
||||
* 登记数按惯例写 0:**node:test 的条数由 runner 的 `# pass N` 认**,
|
||||
* `fileChecks !== expected` 那条守卫只作用于自报 RESULT 的判据(`expected > 0` 才判)。
|
||||
*
|
||||
* 为什么漏了会**停掉全部判据**:自检 2("每个 `*.test.mjs` 都要在清单里")
|
||||
* 在跑任何判据**之前** `process.exit(1)` ⇒ 实测 `RESULT` 行数 = 0,
|
||||
* 一条读数都没有。而 `npm test` 是 `run-all && vitest && typecheck`
|
||||
* ⇒ run-all 退出码非 0 ⇒ **vitest 与 typecheck 也不再跑**。
|
||||
* 这是 `a && b && c` 链的形状(注释里已记过它的代价),只不过这里
|
||||
* 卡在第一环、且失败信息只有一行 stderr、看起来像"环境问题"。
|
||||
*
|
||||
* 三条的来历:`inbox-fallback-poll` / `sse-credentials` 来自 `aeb1f41`
|
||||
* (SSE 跟账号凭证 + 断线重放 + 兜底轮询),`web-comment-only` 来自 `2f17f62`
|
||||
* —— 两个提交都比本清单上一次改动(`62b7c94`,09-02… 实际 10-02 00:14)**晚**,
|
||||
* 即"新加判据的人没接线",与守卫注释里记的 09-17 那次同形状。
|
||||
*/
|
||||
['test/inbox-fallback-poll.test.mjs', ['--experimental-strip-types', '--no-warnings'], 0],
|
||||
['test/sse-credentials.test.mjs', ['--experimental-strip-types', '--no-warnings'], 0],
|
||||
['test/web-comment-only.test.mjs', ['--experimental-strip-types', '--no-warnings'], 0]
|
||||
];
|
||||
|
||||
// 自检 1:清单里的文件必须真的存在(写错名字 = 那条判据永远不跑)
|
||||
|
||||
Reference in New Issue
Block a user