The kiosk agent has three names in use. This confuses operators.
releases.experiencenet.com/hydraheadflatscreen/production/latest.json returns 404. That project has never existed. Stale references to it in CLAUDE.md were fixed on 2026-08-18 (commit 7d6dc44 in hydraheadflatscreen).
Every deployed head requests /hydrahead/... through the hydrarelease updater library. The project name is passed in internal/cli/root.go and pkg/client/client.go. A hard rename of the release project would strand the updaters on every deployed head.
Treat hydrahead as the deliberate short product name for the updater project and the CLI brand. Document this in the repo README and CLAUDE.md: repo is hydraheadflatscreen, product and release project is hydrahead. No fleet risk. No CI change.
Use the same compat pattern that already covers hydraheadwindows:
Rollback at any step: heads still on the old constant keep updating from hydrahead as long as dual-publish runs.
This issue is a decision record. Do not execute anything until a decision is made. No code, CI, or server changes are part of filing this issue.
The same confusion exists for the kiosk app, which carries six spellings of one product:
| Context | Name |
|---|---|
| Repo | hydra-experiencenet |
| macOS bundle | HydraExperienceNet.app |
| Linux binary | hydra-experiencenet |
| Release artifacts | HydraExperienceNet-v.dmg / HydraExperienceNet-v-linux-x86_64.AppImage |
| Release-server project | hydraexperiencenet |
| Window app-id | com.moonlight_stream.Moonlight (upstream; omarchy window rule and pairing identity depend on it) |
Most of the per-platform variation follows each platform's native convention (macOS bundles are CamelCase, Unix binaries lowercase-hyphenated), which is a defensible policy. The gap is that no written rule exists, so every new artifact improvises.
Proposed rule to decide alongside the hydrahead question:
Decision record only. Nothing renames until decided; frozen items above stay frozen regardless.