# HyperTwist Phase 6R-AO Handy global hotkey, mute, and device-selection shell implementation packet

Created on `2026-05-31`

## Status

- bounded permissive HyperTwist packet
- landed `Phase 6R-AO` implementation slice

## Purpose

This packet lands the next justified narrow `cjpais/Handy` reopening above the
already landed HyperTwist speech stack and the bounded `Phase 6R-AJ` external
dictation shell adjunct.

The landed slice is:

- global-hotkey lifecycle shell posture
- selected input-device shell posture
- selected output-device shell posture
- mute-while-recording shell posture
- on-demand versus always-on microphone-mode shell posture
- service-health capability exposure for those operator-facing shell surfaces

It is not:

- top-level provider/session ownership
- core native STT runtime ownership
- Python orchestration ownership
- actual OS-level global-hotkey registration or capture ownership
- actual system mute, clipboard, or desktop typing execution ownership
- local model catalog/download/checksum/unload ownership
- broad assistant-platform scope

## Current authority basis

This implementation packet stands on:

- `docs/arch/HYPERTWIST_PHASE6R_AO_HANDY_GLOBAL_HOTKEY_MUTE_AND_DEVICE_SELECTION_SHELL_PREPARATION_PACKET_2026-05-31.md`
- `docs/HYPERTWIST_HANDY_OFFLINE_DICTATION_SHELL_HIERARCHY_RECONCILIATION_2026-05-28.md`
- `docs/REPO_LICENSE_TRACKING.md`
- `docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md`
- `docs/v6_5_deep_manual_pack/HyperTwist/ROADMAP.md`

## Landed scope

The current code now owns a bounded `Handy`-derived operator shell seam through:

- extended `FHyperTwistSpeechExternalDictationShellProfile` posture ids,
  action ids, and hotkey labels
- extended `FHyperTwistSpeechExternalDictationShellState` device-selection,
  microphone-mode, mute, and hotkey surfaces
- default input/output device option catalogs for the bounded shell
- service-health capability exposure for:
  - `speechGlobalHotkeyShell`
  - `speechDeviceSelectionShell`
  - `speechMuteWhileRecordingShell`
  - `speechMicrophoneModeShell`
- focused automation in:
  - `HyperTwistHandyPhase6RAOHotkeyMuteDeviceContractTest.cpp`

## Why this is still intentionally bounded

This packet lands an operator-facing shell/posture layer only.

Still deferred:

- actual OS-level shortcut registration or execution
- actual system audio-device mutation or desktop typing execution
- local model catalog/download/checksum/unload ownership
- provider/session ownership
- payload shipping
- voice-output or broad assistant-platform scope

## Validation

Current validation for this VPS-side turn is source-level only:

- `git diff --check`
- focused source review against the current speech session and shell substrate

The authoritative Unreal build/test lane for future packet verification is now:

- Windows reverse-SSH validation when the task benefits from Unreal validation
  and the VPS lacks `UnrealEditor`

Important limitation:

- if the Windows checkout does not yet contain the same source files as the VPS
  working tree, do not claim that the Windows Unreal pass covered this packet

## Queue effect

This packet consumes the justified `Phase 6R-AO` reopening.

`cjpais/Handy` is no longer only a transcript-history/output-routing adjunct. It
is now also the bounded live owner for the operator-facing hotkey/device/mute
shell posture above the landed speech stack.

The next clean move is to return to the retained repo-row queue rather than
widen this row into a broad speech-platform packet.
