docs(discovery): the not-observed mark lands in the in-scope module (t62 nit c)

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.
This commit is contained in:
engineer committed 2026-10-12 08:25:41 +01:00
1 parent afc3326fc3
commit c884c7e1ab
2 files changed
+10 -7

No files matched your search

@@ -908,6 +908,16 @@ class ShieldConnectionManager:
self._logcat_task = None self._logcat_task = None
# ── t57: installed-app discovery ─────────────────────────────────────── # ── 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:<id>` 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 #: 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 #: issued. A retry costs two listing shells, so it waits out one state poll
@@ -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 SmartTube, Kodi, Plex or anything else saw nothing. The device knows its own
apps, so this module asks it. 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 The commands (both plain `pm`, available on Shield Experience 9 / Android 11
with no extra permission beyond the ADB pairing this integration already has): with no extra permission beyond the ADB pairing this integration already has):