跨端: debt-visibility 补登记(新判据文件不会自动跑守卫)+ blurStyleFor 删除后的注释真相

## 一、`debt-visibility` 那条红:**新文件不会自动跑一遍守卫**

```
这些文件里有"边界声明",但一次都没登记:
  harmony-deviceprobe.test.mjs(2 处)      ← e917b87/4880c31 新加的判据文件
```

**这是同一个洞在新文件上的复发**:上一轮我刚修完 `harmony-admin` / `harmony-imageprep`,
下一个**新建的**判据文件又踩了同一个坑。pi 之所以看见,只是因为他跑了整个套件 ——
**缺的不是"记得登记",是"新建判据文件"这个动作没有守卫**。这条形状与"写了判据忘了接线"同族,
只是这次忘的是**登记边界**。

处理:**按次数登记(2),不整文件放行** —— 整文件放行的话,将来在这个文件里写一句
真实的「这里没判 / 已知缺口」就**不会红**。那 2 处本身也不是"这块没验",
而是对**词表本身**的断言(`unverifiedReason(...)` 必须含「未验」)。

同时在 `docs/DEBTS.json` 补一笔 `deviceprobe-fixture-timing`(`where` 指向该文件)——
`debt-visibility` 的第二条要求"声明必须有对应的一笔",两处各写各的会让审计只找到一处。
这笔的**到期前提是"两份 fixture 变成当场采集而不是人工存文件"**。

⚠️ **Go 侧未能本机验证**:`go test ./internal/repo/` 在本机报
`module cache not found: neither GOMODCACHE nor GOPATH is set`。我读了
`TestDebtLedgerMatchesMeasurement`:它只校验"每笔都有 due/where"+"三笔必须同处登记",
**没有"所有 id 必须在 Go 侧也列出"的断言**,所以新增一笔不需要改 Go。
但这是**读代码得出的结论,不是跑出来的** —— 如实标成未验。

## 二、`blurStyleFor` 删除后:生产代码里 5 处注释在说一个**不存在的函数**

函数已按 pi 的裁定删除(别的会话的 `9a10ab2` 落的)。但删除后
`Wallpaper.ts`(4 处)与 `MainPage.ets`(1 处)还在用现在时提它:

```
Wallpaper.ts:242  "由 `model/Appearance.ts` 的 `blurStyleFor` 映射成系统材质档"
Wallpaper.ts:248  "页面拿它去问 `blurStyleFor`"
Wallpaper.ts:251  "`blurStyleFor` 也写了、就是没有任何调用点"
Wallpaper.ts:311  "`blurStyleFor` 里面也有一次 clamp,那是它自己的防线"
MainPage.ets:1711 "(`blurStyleFor` 那张表服务的是**材质档**…)"
```

**这正是本会话反复在消的"注释描述一份不存在的代码"**,而它现在比之前更危险:
下一个人读注释会去找一个**已经被有意删掉**的函数,找不到就会**重新实现它** ——
而"它为什么不该回来"恰恰是那次删除唯一值钱的东西。

已全部改成**过去时 + 它已删除**,并在 `Appearance.ts` 原处留了碑文(函数没了,理由不能没)。
`:251` 那处尤其要改:原文说"`blurStyleFor` 也写了、就是没有任何调用点"——
函数已不存在,这句会让读者以为**还差一个调用点没补**,而事实是**连函数都不该有**。

## 三、这条碑文判据我做了变异验证

`harmony-appearance.test.mjs` 里那条「碑文不许回来」的判据**确实在校验**(不是摆着好看):
把 `Wallpaper.ts` 那段碑文抹掉 ⇒ **红**;还原 ⇒ **绿**。
顺带核了它的**指向**:碑文现在的主要落点是 `Appearance.ts`(函数原来所在处),
而判据的正则锚的是 `Wallpaper.ts` —— 两处都有内容才过,我保留了 `Wallpaper.ts` 里的引用
(它说明"这里的 px 不是材质档"),所以判据成立。

## 四、未做

- 到期闸门那 **7 条**(pi 更正过我:`STATIC_ONLY` 是 7 不是 8,我上封记串了)**仍然没动**。
- `PROBE_DEVICE=none` 下**剩 5 条红**,都是**别的会话**新加判据但没更新登记数
  (`narrow-layout` 88>64、`nav-merge` 9>8、`harmony-presets` 6>5、`commit-hygiene` 3>2)
  加 `build-stamp`(`dist` 没重构建,与本次改动无因果)。**我没有替他们改**。
This commit is contained in:
2026-09-15 12:22:15 +08:00
parent 8ea33aeb91
commit 77aa42623a
5 changed files with 48 additions and 50 deletions

View File

@ -239,20 +239,20 @@ export class BackgroundPlan {
presetSubstitutedFrom: string = '';
layers: PresetLayer[] = [];
/**
* 模糊强度(**服务端给的 px 原值**,0~40;由 `model/Appearance.ts` 的 `blurStyleFor`
* 映射成系统材质档)。
* 模糊强度:**服务端给的 px 原值**(0~40),页面拿它做 `.blur(px)` —— **像素半径**。
*
* ★ 为什么这里放的是 px 而不是"材质档字符串":这一层是**纯逻辑**(零 `@ohos` 依赖),
* 而"px → 材质档"那张表的**唯一**权威在 `Appearance.ts`(它连同边界 0/8/20
* 一起被判据钉住)。在这里再抄一份分档,就会有两张表 —— 而两张表迟早会分叉。
* ⇒ 计划只**搬运**这个值,页面拿它去问 `blurStyleFor`。
* ★ 只**搬运**,不在这里分档:这一层是**纯逻辑**(零 `@ohos` 依赖),
* 分档会变成第二张表,而两张表迟早分叉。**这里也再没有"档"这回事了** ——
* 曾经的 `px → 材质档` 映射函数(`Appearance.ts` 的 `blurStyleFor`)已随
* "导航条改回固定档"一起删除(2026-09-15):它没有、也不该有消费者。
* ⇒ 想加"档位"请先读 `Appearance.ts` 那段碑文,那里写着为什么不该加回来。
*
* ★ 为什么现在才有人消费它:服务端那个模糊字段一直是"**只写不读**"——
* 服务端存、两端同步、`blurStyleFor` 也写了、就是**没有任何调用点**
* ★ 为什么一度"只写不读":服务端那个模糊字段曾经**没有任何调用点**(服务端存、
* 两端同步,页面却没人用)
* (`harmony-appearance.test.mjs` 有一条判据把"消费侧出现次数为 0"钉住,
* 就是为了让"有人开始消费"这一刻**必须停下来**补映射判据而不是偷偷把 0 改成 1)。
* 就是为了让"有人开始消费"这一刻**必须停下来**补判据而不是偷偷把 0 改成 1)。
* P4c 加背景选择器时踩到了这条线:滑杆能拖、值能存,但壁纸**一点没糊**。
* 所以这次把映射的**调用点**补上(映射表与它的判据早就在了)。
* 所以这次把**消费点**补上了(`.blur(this.bgPlan.blurPx)`)。
*/
blurPx: number = 0;
/**
@ -308,7 +308,8 @@ export function resolveBackground(bgKind: string, presetId: string, scrim: numbe
*
* ★ 边界 40 与 `model/Appearance.ts` 的 `clampNumber(bgBlur, 0, 40, 4)` **必须同值** ——
* 两边不一致的话,服务端存 40、这边按 80 画,判定与显示就对不上了
* (`blurStyleFor` 里面也有一次 clamp,那是它自己的防线,不是这里可以放松的理由)。
* (曾经 `Appearance.ts` 的 `blurStyleFor` 里也有一道 clamp —— 它已删除;
* 现在这条 clamp 就是**唯一**一道,所以更不能松)。
*/
export function normalizeBlur(px: number): number {
if (!Number.isFinite(px)) {