diff --git a/superpowers/plans/2026-09-10-ring-health-app-m0-m1.md b/superpowers/plans/2026-09-10-ring-health-app-m0-m1.md index 098f07d..7c40576 100644 --- a/superpowers/plans/2026-09-10-ring-health-app-m0-m1.md +++ b/superpowers/plans/2026-09-10-ring-health-app-m0-m1.md @@ -4697,6 +4697,25 @@ done > 只有这三条。`strings.xml` 里其余字符串**每一条都必须有调用点** —— 若 grep 出别的孤儿, > 那是某个任务漏了接线,**先查清再决定**,不要顺手一起删(可能是某个页面本该显示却没显示的文案)。 +- [ ] **Step 1b: 给 mock 的 `setFunctionEnabled` 补一句 KDoc(ledger Ruling R31)** + +`data/mock/MockRingDeviceRepository.kt` 的 `setFunctionEnabled` 上加一句中文 KDoc: + +```kotlin + /** + * 切换某个功能开关。 + * + * **必须返回新列表**(`map` / `+` 等),不要原地改写同一个 `MutableList`: + * `DeviceViewModel` 的 `stateIn(initialValue = …)` 在**构造时**就把当时的 List 引用冻结了, + * 而 `DeviceViewModelTest` 第一条用例的鉴别力正依赖于此 —— 若这里改成原地改写, + * `initialValue` 会被连带改动,那条断言就退化成自我确认,测试会静默失去意义。 + */ +``` + +背景:Task 10 复审指出 `DeviceViewModelTest` 的新断言依赖该 mock 产出新列表。这是真实的脆弱点, +但**不值得为一句注释单开一轮派发/复审/推送**(ledger R31 的裁定),因此由本任务顺带补上。 +若该文件在本任务之前已因其它原因被改动,一并补上即可。 + - [ ] **Step 2: 全量单元测试** ```bash