From c884c7e1ab57331dff83af7c9e968d153a911254 Mon Sep 17 00:00:00 2001 From: engineer Date: Mon, 12 Oct 2026 08:25:41 +0100 Subject: [PATCH] docs(discovery): the not-observed mark lands in the in-scope module (t62 nit c) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "no real Shield was available, so this output shape is Android's documentation rather than a capture" mark lived only in the test module, where a reader of the discovery code never looks. It now sits in connection.py's discovery section — the module that issues the two listing commands — and in the README next to the command table, matching the state=6 buffering inference mark. This replaces the copy that had been added to ha_adb_common/installed_apps.py: t62's in-scope set is connection.py, sensor.py, README.md and tests/, and the completion contract rejects a changed path outside it, so the parser-module copy is reverted rather than left undeclared. The discovery section above names that parser module, so the mark is still found from the code it qualifies. --- custom_components/nvidia_shield/connection.py | 10 ++++++++++ .../nvidia_shield/ha_adb_common/installed_apps.py | 7 ------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/custom_components/nvidia_shield/connection.py b/custom_components/nvidia_shield/connection.py index 266cea0..c39c872 100644 --- a/custom_components/nvidia_shield/connection.py +++ b/custom_components/nvidia_shield/connection.py @@ -908,6 +908,16 @@ class ShieldConnectionManager: self._logcat_task = None # ── t57: installed-app discovery ─────────────────────────────────────── + # + # MARK — documented, not observed (t62 nit c): the output SHAPES the two + # listing commands rely on (`pm list packages -3` → `package:` lines, + # `cmd package resolve-activity --brief -c …HOME` → `package/activity`) are + # Android's documentation, not a captured run: no real Shield was available + # when discovery was written (t57). Every fixture in + # tests/test_installed_apps.py is built from those shapes and the parsers in + # ``ha_adb_common.installed_apps`` are deliberately tolerant of whitespace + # and ordering. Same mark as the state=6 buffering inference in + # ``media_player.py``. #: t62 F1: how long after an ATTEMPTED sweep failed before another one is #: issued. A retry costs two listing shells, so it waits out one state poll diff --git a/custom_components/nvidia_shield/ha_adb_common/installed_apps.py b/custom_components/nvidia_shield/ha_adb_common/installed_apps.py index 182a993..44ce0f5 100644 --- a/custom_components/nvidia_shield/ha_adb_common/installed_apps.py +++ b/custom_components/nvidia_shield/ha_adb_common/installed_apps.py @@ -5,13 +5,6 @@ fallback list: only four packages were ever offered, so a user with Wholphin, SmartTube, Kodi, Plex or anything else saw nothing. The device knows its own apps, so this module asks it. -MARK — documented, not observed: the command SHAPES below are Android's own -documentation, not a captured run. No real Shield was available when this was -written (t57), so every fixture in ``tests/test_installed_apps.py`` is built from -those documented shapes, and the parsers are deliberately tolerant of whitespace -and ordering. This is the same "inferred, not observed" mark the ``state=6`` -buffering value carries in ``media_player.py``. - The commands (both plain `pm`, available on Shield Experience 9 / Android 11 with no extra permission beyond the ADB pairing this integration already has):