test(harmony): ★★ appearance-defaults 上设备 ⇒ 落盘键真的带账号段,并结算出 STATIC_ONLY

到期前提(设备可用)已成立 ⇒ 这条欠账必须当场还,而不是继续躺在
STATIC_ONLY 的点名范围里(与 harmony-admin 那次同一处置)。

新增设备判据(test 8):
  拉起应用 → find 定位真实的 agentmail_appearance 落盘位置(不写死路径:
  haps 层级会变,两处都见过)→ cat 出 XML → 从**落盘的键**里取账号段,
  断言非空且像个 id。

★ 为什么不从 /me 拿账号再比对键:那样掺进了"当前登录的是谁",
  验的就不是"键里有账号"了。键本身是唯一可靠的观察点。

红绿已在真机(MRDI-W00)上验过,且验的是**该补的洞**:
  把设备上的键改成 key="appearance." ⇒ 本条红("账号段是空的 ⇒
  全局键退化,换账号会串味"),而原有的静态判据 2 **仍然绿**
  —— 正好证明静态层看不见这个形状,这层是必需的。

★★ 顺带修一个**真假红**(本条自己撞到的):平板息屏后再跑时,
  launchOurApp 返回 false,原来那句硬 assert 直接红 —— 而设备锁着
  跟外观缓存毫无关系,且只有人能解(10106102,developer mode
  不能自动解锁)。改为走"忙"那条路:K 轮内礼貌跳过、连续超 K 轮
  仍变红(并说清"先分清是锁屏还是真坏了"),不许无界礼貌。
  判据去红一个与自己无关、且无人能自动修复的环境状态,会把到期闸的
  名声搞坏——真出事时没人当真。

结算:移出 STATIC_ONLY,登记进 SETTLED_FROM_STATIC(闸 ii 要出示行为层
绿跑记录 .tmp/harmony-behavioral-ran.json,本机已留下 appearance-cache-key-on-device)。

真机实测:# pass 8 # fail 0
This commit is contained in:
2026-10-02 00:14:01 +08:00
parent 2af8d13d0e
commit 62b7c94c6e
2 changed files with 130 additions and 1 deletions

View File

@ -1396,7 +1396,20 @@ const STATIC_ONLY = [
['test/harmony-appearance.test.mjs', '壁纸/令牌/遮罩渲染:观感与运行期换肤要设备', 'device'],
['test/harmony-logic.test.mjs', '页面状态机与文案:`.ets` 状态要跑起来才算数', 'device'],
['test/cross-client-theme.test.mjs', '跨端令牌与玻璃分工:`.ets` 那半除悬浮球外仍未上设备(悬浮球已钉住「声明不等于渲染」这一类)', 'device'],
['test/appearance-defaults.test.mjs', '默认值契约里 `.ets` 那半:运行时行为要设备', 'device'],
/*
* ★★ 2026-09-19 **移除** `appearance-defaults` 这条。
*
* 它当初的理由是「默认值契约里 `.ets` 那半:运行时行为要设备」,而设备现已可用
* ⇒ 前提成立,欠账必须当场还。它已升级为设备判据:
* 「设备上改外观后,落盘的偏好键**真的**带着账号段」——
* 自己拉起应用、用 find 定位真实的 preferences 文件、cat 出 XML,
* 从**落盘的键**里取账号段并断言非空且像个 id。
* (红绿已在真机上验过:把设备上的键改成 `key="appearance."` ⇒ 该条红,
* 而原有的静态判据 2 **仍然绿** —— 正好说明这一层补的是哪个洞。)
*
* ⇒ 与 `harmony-admin` 同理:留在这里会让欠账余额虚高。余额是给"还欠着的"记账的。
* ⚠️ 移除 ≠ 判据消失:它仍在套件里,只是改由行为层管辖,并由闸 (ii) 要求出示绿跑记录。
*/
// P4c 同批的两条:判的是 `.ets` 里的页面/组件,本机没有设备也没有模拟器
/*
* ★★ 2026-09-19 **移除** `harmony-admin` 这条(它在这里待了很久)。
@ -1848,6 +1861,8 @@ const SETTLED_FROM_STATIC = [
// 形状:['判据文件', '行为记录里的 key(noteBehavioralRan 的那个字符串)', '行为条在哪', '到期前提探针']
['test/harmony-nav.test.mjs', 'harmony-nav/底栏可点项',
'test/harmony-nav.test.mjs 的「★ 行为(设备):底栏真渲染了可点的导航项」', 'device'],
['test/appearance-defaults.test.mjs', 'appearance-cache-key-on-device',
'test/appearance-defaults.test.mjs 的「★ 设备:外观缓存**真的**按账号落了盘(不是只看着像)」', 'device'],
];
let unsettled = [];
try {