S28 · Environmental / IoT Orchestration
Declared state: **live 2026-10-16** - token installed, the VPS reaches Home Assistant Green over the tailnet (ACL grant tag:server -> <HA tailnet IP> tcp:80), `/api/` answers, 27 entities visible. Unproven: one real device actuated by voice and read back (28.F4), and a week of scenes (28.E1)..
This is the repository plan and evidence, not a live health reading. A task marked done may still depend on credentials, devices, deployment or a newer acceptance test.
Dependencies
S27
Tasks and gates
28.F1 · **Home Assistant token** installed and the connection verified live. This is the single
Tier F · done · Verification: hermetic-test
Gate: `test_new_integrations.py` — a real entity listed.
- recorded-note · 2026-10-16 ·
VPS curl + bench/test_live_integrations.py
28.F2 · Read-back verification: Mushegh reports the state he *observed*, not the command he sent.
Tier F · done · Verification: planned-test
Gate: new `test_smarthome_verify.py`
- recorded-note · 2026-09-12 ·
docs/SYSTEMS-DETAILS.md:2984
28.F3 · Anything that affects other people (lights in shared rooms, locks, heating) is in the
Tier F · done · Verification: hermetic-test
Gate: `test_confirm_tier_documented.py`, `test_smarthome_verify.py` [7]-[9]
- recorded-note · 2026-09-12 ·
docs/SYSTEMS-DETAILS.md:2994
28.R1 · Scenes: named multi-device states ("bed", "leaving", "focus") with one command.
Tier R · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [scene]
- hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [scene]
28.R2 · Presence-driven automation tied to S27, with an explicit off switch.
Tier R · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [presence]
- hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [presence]
28.R3 · Device-offline handling: a dead bulb is reported, not ignored.
Tier R · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [offline]
- hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [offline]
28.E1 · A week of automated scenes with zero surprises and zero silent failures.
Tier E · open · Verification: manual
Gate: smarthome audit log.
28.F4 · **Install the token, prove one real device, then scenes** — in that order. Jev p=0.81, conf 0.77. This is the highest-value hour in the project and it is the owner's, not an engineering task.
Tier F · open · Verification: planned-test
Gate: new `test_ha_live.py` — one real device changes state on a spoken command and the state change is read back.
- recorded-note · 2026-10-16 ·
owner
28.F5 · **Safety interlock and dry-run on every physical action** — Jev P=0.68: physical actions are the one category where an unrecoverable mistake is possible, so the interlock is a floor, not an improvement.
Tier F · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [interlock]
- hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [interlock]
28.R4 · Physical door locks refuse outright: a lock or garage_door request is refused by policy with no confirmation path, because a typed confirm is not physical presence (D-13). Alarm panels, covers, climate and water heater stay confirm-gated — that middle tier is not named in D-13.
Tier R · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [lock]
- hermetic-green · undated ·
bench/test_blast_radius_refusal.py - hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [lock]
28.R5 · The Aqara U200 front-door lock is read-only to Mushegh: lock state may be read and reported, and no code path actuates it over Matter, Thread, Zigbee or Home Assistant (D-13). The NFC tag by the door is the owner's physical act (D-14).
Tier R · done · Verification: hermetic-test
Gate: `test_physical_interlock.py` [lock]
- hermetic-green · 2026-10-15 ·
bench/test_physical_interlock.py [lock]
HUD screen contracts
- Environmental / IoT Orchestration · /systems/S28
All subsystems · Source: docs/systems-plan.json.