# POS-Automation — Decisions Format: `YYYY-MM-DD: ` - **2026-06-07: On-demand trigger via MQTT bridge (lgtv pattern), not cron.** Seth wants a Google Home button, not a scheduled print. Bridge `pos-briefing-mqtt.service` (systemd, `User=claude`) on steel141 subscribes to `posbriefing/button/press` on broker CT 301 (192.168.0.154); HA exposes a `script` to Google as a Scene (button). The earlier "schedule 4:58am/3pm" was never a real cron job — that commit only edited SESSION.md. - **2026-06-07: Printer discovered by MAC `50:57:9c:eb:0f:07`, not a fixed IP.** The TM-m30's IP changes on every reboot (router DHCP, no reservation). Cache last IP (`~/.cache/pos-briefing/last_ip`), verify by MAC + port, sweep the /24 on a miss. A router DHCP reservation would make this belt-and-suspenders but isn't required. - **2026-06-07: Summaries on `gemma4:26b`; story selection stays on a fast model.** Seth asked to switch summaries to gemma4. gemma4:26b under `format:json` ignores the bare-array instruction and emits a reasoning object (`{"thought": ...}`), which broke Phase-1 selection. Selection now uses `ollama_select_model` (default `qwen2.5:1.5b`); summaries use `ollama_model` = `gemma4:26b`. Also better latency for an interactive button. - **2026-06-07: yfinance installed on steel141** via `pip --user --break-system-packages` (PEP 668). It was missing after the CT 166 → steel141 migration — the original "not firing" had two causes: no cron ever installed + this missing dependency. - **2026-06-07: HA side deployed on VM HA `192.168.0.146`** (`/config/scripts.yaml` + `script.print_daily_briefing` in `configuration.yaml` `google_assistant.entity_config`; backups in `/config/.backup/`). MQTT-discovery button entity id is `button.pos_briefing_print_daily_briefing` (HA prefixes the device name). Access: `ssh seth@192.168.0.146` (key auth), `bash -lc "ha core check|restart"`, services via `$SUPERVISOR_TOKEN` → `http://supervisor/core/api/`. See `docs/ha-setup.md`. - **2026-06-07: Exposed to Google as a SWITCH tile, not a Scene.** HA scripts/scenes get Google's Scene trait, which Google Home does NOT render as a tappable tile (voice/Routine only) — the button was invisible. A template switch (`switch.print_daily_briefing`) tiles like the TV. **Confirmed working end-to-end 2026-06-07: a Google Home tap printed a receipt.** State is forced off and both on-tap fires the print; state is forced off so the tile auto-reverts via reportState; `turn_off` is a no-op. (Was both-on/off-fire while HomeGraph was down; simplified to on-only 2026-06-07 once state push was restored. Bridge debounce still guards doubles.) - **2026-06-07: HomeGraph SA key regenerated.** The old `/config/SERVICE_ACCOUNT.json` key was invalid (`invalid_grant` — rotated in the lgtv 06-06 cleanup, never refreshed), breaking requestSync/reportState. Seth issued a new JSON key for `claude@seth-freiberg.iam` (id `8e3e812b6913…`); deployed to HA (0600), restarted. Auth now succeeds (400→404). After a Google re-link registered the agent, both requestSync and reportState return 200 → **live state push works for all devices.** (A manually admin-triggered request_sync logs a harmless 404: it sends the unlinked owner id `2c22820…`; HA's automatic reporting uses the linked `f948247…` and succeeds.) - **2026-06-07: paho-mqtt v1 callbacks (`CallbackAPIVersion.VERSION1`).** paho 2.1.0 is installed for `claude`; matches the working lgtv bridge. One-time deprecation warning at startup is harmless. ## Deferred / Rejected - **Print latency (~1–2 min/press):** gemma4:26b summarization (+ yfinance) dominates. Acceptable for v1; the button returns immediately and `posbriefing/status` tracks progress. Optimize later (model keep-alive, fewer/shorter summaries) if it annoys. - **Router DHCP reservation for the printer:** Seth's router action; MAC discovery makes it optional. Add if convenient to drop the sweep fallback. - **zfs/reddit/grafana dashboard fields return None on steel141** (not the tank/ZFS host; `cannot open 'tank'`). Out of scope for the trigger work — track separately.