test(criteria): 判据规范 CRITERIA.md(邻接不是结构·第三次露头)+ 废弃 API allow-list 结构化 + 扫描范围自检
pi 的两条增量,都不需要他再确认。
## 1(pi 建议):生成清单 + 空 allow-list 的结构性风险
他的推演:SDK 升版会往清单里加新条目 → 某天早上套件**突然红**,且红在与本次改动无关的
代码上;这时人的第一反应是把名字塞进 allow-list —— 而 allow-list 一旦这么用,
就不再是"研究过的例外",只是"红的止痛药"。所以条目结构化:
```js
const ALLOW = [ /* { name, replacement, why } */ ];
```
`replacement` 非空是硬断言("暂时不想改"不是放行理由,"替代品要求的 API level 高于基线"才是)。
**刻意不断言"名单必须为空"** —— 那会挡住合理放行;断言的是"有名字、没替代品 → 红",
于是侵蚀发生时红的是**放行这件事本身**,而不是某天的新 SDK。
变异:塞一条 `{ name:'px2vp', replacement:'', why:'暂时不想改' }` → 红。
## 2(pi 建议):扫目录的判据要防"空判据"
他问废弃 API 判据扫哪些目录(怕只扫 `pages/`,`common/` 里的旧写法逃掉)。
答案:扫的是**整个 ets 目录递归**(实测 25 个文件,含 `pages/ common/ model/ api/ entryability/`)。
顺手加了防退化的自检:文件数 ≥ 20,且 `pages/ common/ model/ api/` 四个目录都必须扫到
—— 目录改名/只扫一个子目录会让这条变成空判据而依然全绿。
变异:把扫描范围改成只扫 `pages/` → 红。
## 3(pi 建议):把"邻接不是结构"写进判据规范
同一个坑在本仓露头三次:① 窗口式正则被一行注释挤爆(原注释自嘲过);
② 括号配对取代窗口;③ 链式修饰符让"看前一个字符是不是 `}`"静默失效。
共同形式值得升格成规则,于是新建 `client/electron/test/CRITERIA.md`(七条),
并在 `run-all.mjs` 加**自检 3**:规范文件必须在、且必须点到关键条目。
WebUI 侧 `background.test.mjs` 的窗口式存量按 pi 的说明**记着不动**(那是他的地盘)。
规范里另外两条是本仓自己踩出来的:剥注释读代码 vs 读原文读理由(混用必红);
以及**验证要按真实入口跑** —— 我用 `node --test test/run-all.mjs` 验自检 3 时它"依然绿",
其实是 runner 把内部的 `process.exit(1)` 吞了;换成 `npm test` 走的那一行就红对了。
变异:删掉规范里的一条关键规则 → `npm test` 那条路 exit 1。
## 验证
`npm test` 退出码 0(11 个判据文件全绿 + vitest 258/258);`hvigorw assembleHap` 未受影响。
This commit is contained in:
@ -737,6 +737,20 @@ WebUI 的"壁纸模糊度(px)"在鸿蒙变成了"**材质档次**"——**
|
||||
前者是给 CSS 图层用的半径,后者是系统材质的档位(Thin/Regular/Thick)。
|
||||
映射在 `model/Appearance.ts` 的 `blurStyleFor()`,判据与 SDK 的 `BlurStyle` 成员比对。
|
||||
|
||||
### 7.19a 判据规范:`client/electron/test/CRITERIA.md`
|
||||
|
||||
pi 指出"邻接不是结构"这条已经在同一个仓库露头**三次**(① 窗口式正则被一行注释挤爆;
|
||||
② 括号配对修掉它;③ 链式修饰符让"看前一个字符"静默失效),共同形式是
|
||||
**判结构要配对/解析,看邻接或固定宽度都会被合法写法绕过** —— 比记具体招式有用,
|
||||
所以升格成仓库级的判据规范(`client/electron/test/CRITERIA.md`),并在 `run-all.mjs` 里加了
|
||||
**自检 3**:规范文件必须在、且必须点到那几条关键规则(规则只活在脑子里等于没有)。
|
||||
|
||||
规范里现在有七条:配对/解析而非邻接(含 WebUI 侧 `background.test.mjs` 的存量,
|
||||
**那是 pi 的地盘,记着不动**)、生成清单 + 结构化 allow-list、变异验证(含"变异没生效"
|
||||
这个反向陷阱)、剥注释读代码 vs 读原文读理由、按行取片段、判据要接线 + 扫描范围要有下限、
|
||||
判据要点用户真正会点的那一层。另外补了一条本仓刚踩的:**验证要按真实入口跑**
|
||||
(`node --test test/run-all.mjs` 会把 runner 内部的 `process.exit(1)` 吞掉)。
|
||||
|
||||
### 7.19 两条跨端约定(pi 2026-09-14 复核后确认)
|
||||
|
||||
- **`Theme.` 的成员名不改**(pi 三条理由:判据钉的是"值来自系统 + 品牌色仍手写",
|
||||
|
||||
Reference in New Issue
Block a user