跨端: fix(harmony-appearance): blurStyleFor 已删除 ⇒ 换成**碑文判据 + 性质现居地**(不是只删);顺手修两处说谎的标题
pi 2026-09-15 查到根因:`blurStyleFor`(px → 材质档)已**有意删除**(碑文 `Wallpaper.ts:246`: "没有、也不该有消费者"),而判据文件里还有引用、2 条真在调用 ⇒ `A.blurStyleFor is not a function`。 **只删会把"这个性质搬到哪了"一起删掉**(pi 的建议)。所以两处改成: 1. **碑文/反回归**:`typeof A.blurStyleFor === 'undefined'` —— 有意删除的东西不许悄悄回来; 外加"理由必须留在原处"(碑文正则,删了理由也会红); 2. **性质的现居地**:导航面板材质现在是**固定系统档** —— `common/Theme.ets` 的 `navMaterial: BlurStyle = BlurStyle.COMPONENT_THICK`(从"函数映射"搬到"常量")。 3. 后半段那组(分档边界/单调性/NaN)**整体作废且不硬造等价物**:它们的**主语**没了, 常数没有单调性、没有越界归并、没有 NaN 方向 —— **性质随主语一起消失,判据变少是对的**。 ★ 另修**两处说谎的标题**(本判据属于 pi 的"标签必须等于断言范围"): - `★ blurStyleFor:分档边界、单调性、NaN 都是行为` → `★ 碑文:blurStyleFor 不许回来 + 理由必须留在原处`; - `★ 模糊值映射到**系统材质档次**` → `★ 材质档**不再是 px 的映射**:碑文 + 性质现居地`。 改前它们断言的内容与标题已经完全不是一回事。 实测:`# pass 25 / # fail 0`(此前 退出码 1)。登记 26 → 25 同步(**变少是对的**)。
This commit is contained in:
@ -71,7 +71,7 @@ const SUITE = [
|
||||
['test/harmony-logic.test.mjs', ['--experimental-strip-types', '--no-warnings'], 28],
|
||||
['test/harmony-system-api.test.mjs', [], 5],
|
||||
// P4 外观同步:跑 model/Appearance.ts(纯逻辑),所以也要 strip-types
|
||||
['test/harmony-appearance.test.mjs', ['--experimental-strip-types', '--no-warnings'], 26],
|
||||
['test/harmony-appearance.test.mjs', ['--experimental-strip-types', '--no-warnings'], 25],
|
||||
// P5 悬浮玻璃导航:点击配对 / index 决定挂载 / 命中区 ≥44vp / 悬浮与让位
|
||||
['test/harmony-nav.test.mjs', ['--experimental-strip-types', '--no-warnings'], 11],
|
||||
// 外观契约:默认值去 Go 源码里读(服务端 DefaultAppearance 是权威)+ 缓存键按账号
|
||||
@ -538,49 +538,7 @@ for (const [, , probe] of STATIC_ONLY) {
|
||||
if (probeResults[probe] === undefined) probeResults[probe] = PROBES[probe].run();
|
||||
}
|
||||
|
||||
/*
|
||||
* pi 2026-09-15:这块原先在报文末尾 `process.exit(1)`,而**它在汇总之前** ⇒
|
||||
* 只要到期闸红了,`RESULT` 行、欠账余额、条数不符、以及**所有其它红**都不会打出来。
|
||||
* 实测:`harmony-presets` 实报 6 / 登记 5 这条真红一次都没显示过。
|
||||
* 形状:**一道闸把不属于它的证据一起吃掉**。修法不是"少红",是**记账 + 继续走完汇总**。
|
||||
*/
|
||||
let dueFailed = false;
|
||||
let selfCheckFailed = false;
|
||||
const dueStatic = STATIC_ONLY.filter(([, , probe]) => probeIsDue(probeResults[probe]));
|
||||
const unknownProbes = Object.entries(probeResults).filter(([, v]) => v === 'unknown').map(([k]) => k);
|
||||
if (dueStatic.length > 0) {
|
||||
const firstUnknown = unknownProbes.includes(dueStatic[0][2]);
|
||||
console.error(firstUnknown
|
||||
? `\n✗ 探针**跑不了**(${PROBES[dueStatic[0][2]].desc})—— 拿不准就按到期处理,别让闸门锈死:`
|
||||
: `\n✗ 静态判据**到期**了:${PROBES[dueStatic[0][2]].desc} 现在是成立的 ——`);
|
||||
for (const [file, why, probe] of dueStatic) {
|
||||
console.error(` - ${file}(到期前提:${PROBES[probe].desc};当初只能静态的原因:${why})`);
|
||||
}
|
||||
console.error(
|
||||
' 这些判据当时只能验形态。前提成立后必须做其中一件(别默默留着):\n' +
|
||||
' a) 改成**行为判据**(真跑一遍/真点一次),静态那条降级或删掉;\n' +
|
||||
' b) 明确写"为什么仍然只能静态"(如设备能编译但点不了),并改换一个更准的到期前提。\n' +
|
||||
' 这是"暂时"的到期机制:它的作用就是不等谁想起来。'
|
||||
);
|
||||
/*
|
||||
* 到期报文自带**要人做什么**(pi 2026-09-14 §2):
|
||||
* 这条红第一次出现时,最可能的结局是"被当成噪音消掉"——因为看的人不知道要放行什么。
|
||||
* 前提写的是"**本工作区**能装能点",所以这里把工作区外的门槛逐条列出来。
|
||||
*/
|
||||
const need = PROBES[dueStatic[0][2]].need || [];
|
||||
if (need.length) {
|
||||
console.error(' 要让它变成行为判据,需要先在本工作区打通:');
|
||||
for (const n of need) console.error(` · ${n}`);
|
||||
console.error(' 这些都在工作区外(需要人放行或提权)—— 所以这条红**不要求你现在修**,' +
|
||||
'要求的是:别把它当噪音,并在打通后回来把静态那条升级掉。');
|
||||
}
|
||||
dueFailed = true;
|
||||
}
|
||||
/*
|
||||
* 汇总里"欠账余额"和"探针是否健康"是两个不同的数字(pi §2):
|
||||
* static=5 —— 还欠着 5 条只能验形态的判据;
|
||||
* probe=ok —— 探针自己是好的(unknown 说明闸门可能锈死了,得人看一眼)。
|
||||
*/
|
||||
/*
|
||||
* 自检 4(pi 2026-09-15):**到期闸不许把汇总和其它红一起吃掉**。
|
||||
*
|
||||
@ -623,6 +581,49 @@ try {
|
||||
console.error(`✗ 套件自检 4 跑不了:${e.message || e}`);
|
||||
selfCheckFailed = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* pi 2026-09-15:这块原先在报文末尾 `process.exit(1)`,而**它在汇总之前** ⇒
|
||||
* 只要到期闸红了,`RESULT` 行、欠账余额、条数不符、以及**所有其它红**都不会打出来。
|
||||
* 实测:`harmony-presets` 实报 6 / 登记 5 这条真红一次都没显示过。
|
||||
* 形状:**一道闸把不属于它的证据一起吃掉**。修法不是"少红",是**记账 + 继续走完汇总**。
|
||||
*/
|
||||
let dueFailed = false;
|
||||
const dueStatic = STATIC_ONLY.filter(([, , probe]) => probeIsDue(probeResults[probe]));
|
||||
const unknownProbes = Object.entries(probeResults).filter(([, v]) => v === 'unknown').map(([k]) => k);
|
||||
if (dueStatic.length > 0) {
|
||||
const firstUnknown = unknownProbes.includes(dueStatic[0][2]);
|
||||
console.error(firstUnknown
|
||||
? `\n✗ 探针**跑不了**(${PROBES[dueStatic[0][2]].desc})—— 拿不准就按到期处理,别让闸门锈死:`
|
||||
: `\n✗ 静态判据**到期**了:${PROBES[dueStatic[0][2]].desc} 现在是成立的 ——`);
|
||||
for (const [file, why, probe] of dueStatic) {
|
||||
console.error(` - ${file}(到期前提:${PROBES[probe].desc};当初只能静态的原因:${why})`);
|
||||
}
|
||||
console.error(
|
||||
' 这些判据当时只能验形态。前提成立后必须做其中一件(别默默留着):\n' +
|
||||
' a) 改成**行为判据**(真跑一遍/真点一次),静态那条降级或删掉;\n' +
|
||||
' b) 明确写"为什么仍然只能静态"(如设备能编译但点不了),并改换一个更准的到期前提。\n' +
|
||||
' 这是"暂时"的到期机制:它的作用就是不等谁想起来。'
|
||||
);
|
||||
/*
|
||||
* 到期报文自带**要人做什么**(pi 2026-09-14 §2):
|
||||
* 这条红第一次出现时,最可能的结局是"被当成噪音消掉"——因为看的人不知道要放行什么。
|
||||
* 前提写的是"**本工作区**能装能点",所以这里把工作区外的门槛逐条列出来。
|
||||
*/
|
||||
const need = PROBES[dueStatic[0][2]].need || [];
|
||||
if (need.length) {
|
||||
console.error(' 要让它变成行为判据,需要先在本工作区打通:');
|
||||
for (const n of need) console.error(` · ${n}`);
|
||||
console.error(' 这些都在工作区外(需要人放行或提权)—— 所以这条红**不要求你现在修**,' +
|
||||
'要求的是:别把它当噪音,并在打通后回来把静态那条升级掉。');
|
||||
}
|
||||
dueFailed = true;
|
||||
}
|
||||
/*
|
||||
* 汇总里"欠账余额"和"探针是否健康"是两个不同的数字(pi §2):
|
||||
* static=5 —— 还欠着 5 条只能验形态的判据;
|
||||
* probe=ok —— 探针自己是好的(unknown 说明闸门可能锈死了,得人看一眼)。
|
||||
*/
|
||||
const probeSummary = unknownProbes.length ? 'unknown' : 'ok';
|
||||
if (skippedByPhase.length) {
|
||||
console.log(`相位=${PHASE}:本相位不判 ${skippedByPhase.length} 条**构建相位**判据(${skippedByPhase.join('、')})` +
|
||||
|
||||
Reference in New Issue
Block a user