Description
## Summary
The Windows Mobile Hotspot auto-start on venue-kiosk bodies is currently a hand-installed, machine-local change with NO version control. It exists only on fluffy-dumpling-87 (hostname hydra-s-0000, node-11da9ea3) at the gallo-romeins-museum venue, installed live via the hydracluster exec channel. If that machine is reimaged/replaced, the fix is lost, and no other venue host would get it. This issue tracks moving it into a hydracluster role recipe so it is reproducible and reviewable.
## Context
This venue does not stream via Sunshine/moonlight — the pico headset uses its own vanilla business streaming, and fluffy runs the experience locally on its own display. Kiosk devices (incl. the pico) connect to a Windows Mobile Hotspot that fluffy hosts (SSID "experiencenet", sharing the Ethernet uplink). Windows does not auto-start Mobile Hotspot after a reboot, and additionally auto-DISABLES it ~5 minutes after the last client disconnects (e.g. overnight). Both leave devices with no network.
## What is installed on fluffy (ad-hoc, to be codified)
- C:\hydra\start-hotspot.ps1 — idempotently turns the Mobile Hotspot on (WinRT NetworkOperatorTetheringManager.StartTetheringAsync, with a retry loop for uplink settle).
- Scheduled task "HydraHotspot" with two triggers: (a) AtLogOn of user 'hydra' (+15s delay) for fast start after boot; (b) a time trigger repeating every 5 minutes as a self-heal so Windows' no-client auto-off cannot strand it. Runs as 'hydra' (admin), Interactive, RunLevel Highest.
- Validated across reboots: hotspot auto-On ~30-45s after boot; recovers within <=5 min if it drops.
## Dependencies / gotchas
- Mobile Hotspot SSID/password/shared-uplink must be pre-configured in Windows Settings (that config persists; only the ON state does not).
- Relies on AutoAdminLogon=1 for an admin kiosk user (here 'hydra'); the tethering WinRT API needs an interactive elevated session (SYSTEM-at-boot is unreliable).
- WinRT async in Windows PowerShell 5.1 requires: [Reflection.Assembly]::LoadWithPartialName('System.Runtime.WindowsRuntime') + an AsTask/Await reflection helper (both included in the attached script).
## Proposed fix
Add a hydracluster role recipe recipes/hydra-hotspot-windows.yaml (new role e.g. "hydra-hotspot" / "venue-hotspot") whose step drops start-hotspot.ps1 and registers the HydraHotspot task, parametrising the kiosk user and SSID. Assign the role to venue host machines (e.g. fluffy). Recipes live in the hydracluster repo under recipes/<role>-<os>.yaml and are executed per-role by hydranode. The attached install-hydrahotspot.ps1.txt is the complete, working installer to base the recipe step on.
Attachment: install-hydrahotspot.ps1.txt (renamed from .ps1 — .ps1 is a blocked upload extension).