Skip to content

Commit 9b8a00e

Browse files
committed
General: Record the interrupted-session device verification
The Pixel 7a run on 2026-07-25 exercised interrupted-session detection end to end: a force-stop mid-session left the limit off, the next open restored it and showed the interruption card, dismissal cleared it, a force-stop without a session recorded nothing, and a real reboot restored via boot recovery without showing a card. Also drops the recovery-notification known gap, which is closed — the notification is now cancelled on a later successful restore, convergence, or explicit policy write. The session-validation protocol gains the two interruption expectations plus the battery-simulation trick needed to run them on a device sitting at its limit.
1 parent b71df2f commit 9b8a00e

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

.claude/rules/privileged-access.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,11 @@ Adding or widening a live adapter requires physical qualification, not just a se
137137
4. **Validate sessions** — full charge, early disconnect, manual restore, arm + safety timeouts, process death,
138138
force-stop, notification denial, real reboot + deferred `BOOT_COMPLETED` redelivery. Confirm exact restore of the
139139
prior value **including a previously-absent key**, and that an unknown/malformed value **refuses** the session
140-
without mutating the setting.
140+
without mutating the setting. Also confirm the interrupted-session surface both ways: a **force-stop that leaves a
141+
restore owed** must, on next open, restore the limit *and* show the dashboard interruption card, while a **reboot**
142+
must restore via boot recovery and show **no** card (the boot-count guard). A device that holds at its limit often
143+
reports `NOT_CHARGING`, which ends a session immediately — drive the lifecycle with `adb shell dumpsys battery set
144+
status 2 / set level N` (then `dumpsys battery reset`) so the session behaves as it would mid-charge.
141145
5. **Minified build** — repeat the smoke path on an R8 `foss` beta (past runs caught R8-only startup/reflection
142146
breakage that debug builds hid).
143147

@@ -155,7 +159,7 @@ only after adding a row here. Detailed run narratives live in each adapter's lan
155159

156160
| OEM | Tested device / build | Hardware evidence | Coverage | Landed |
157161
|---|---|---|---|---|
158-
| Pixel | Pixel 8 `shiba` A17/API37; Pixel 9 Pro `caiman` A16/API36; Pixel 7a `lynx` A16/API36 | Full — sysfs `charging_policy` follows writes (~11–12s) | Access tiers, sessions, boot recovery, wireless hold, at-threshold, reconnect gesture, natural 100% | 2026-07-15/-19/-20 |
162+
| Pixel | Pixel 8 `shiba` A17/API37; Pixel 9 Pro `caiman` A16/API36; Pixel 7a `lynx` A16/API36 | Full — sysfs `charging_policy` follows writes (~11–12s) | Access tiers, sessions, boot recovery, wireless hold, at-threshold, reconnect gesture, natural 100%, interrupted-session detection (7a) | 2026-07-15/-19/-20/-25 |
159163
| Samsung | Galaxy Tab A9+ SM-X210 One UI 8.0; Galaxy S20 FE SM-G781B One UI 4.1 | Full — sync readback + HAL enforcement | Modern multi-mode + legacy toggle, session E2E, native-change cancel, reboot recovery, R8 beta | 2026-07-21 |
160164
| Xiaomi | Xiaomi 13T `2306EPN60G` HyperOS 2.0 (`ro.mi.os.version.code=2`) | **Partial** — mapping/readback/session verified; the adaptive 80% hold could not be triggered, so daemon-level hardware enforcement is **not yet demonstrated** | Read matrix, both-direction writes, session at 100%, unknown-value refusal, R8 beta | 2026-07-21 |
161165
| OnePlus (Oplus) | OnePlus Nord CE4 Lite `CPH2621` ColorOS 15 (`ro.build.version.oplusrom=V15.0.0`) | Full — enforcement directly observable (device holds at 80%); external writes stick | Two mutually-exclusive `system` keys (Charging limit / Smart charging), WSS-only write rejected + Shizuku write succeeds for all three policies, WSS-only UX (controls disabled + Shizuku-required banner) | 2026-07-21 |
@@ -202,5 +206,3 @@ only after adding a row here. Detailed run narratives live in each adapter's lan
202206
the 80% hold is physically observed.
203207
- **Pixel** — wireless at-threshold hold/charge-past and the widget under Shizuku-only remain unexercised (both share
204208
the verified wired mechanism).
205-
- **Recovery notification** — the "Charge limit needs attention" notification is not cancelled when a later restore
206-
succeeds; it lingers until swiped (cosmetic; `SessionNotifications.showRecovery`).

0 commit comments

Comments
 (0)