# HyperTwist Phase 6R-AU Handy local model catalog, integrity, and unload policy shell preparation packet

Date: `2026-05-31`

## Goal

Reopen `cjpais/Handy` through the next justified narrow bounded slice above the
already landed speech, permission, capture-route, payload-custody, and
operator-facing dictation shell seams.

## Why this slice is justified

The retained Handy doctrine explicitly kept one narrow future reopening path
after the landed `Phase 6R-AJ` and `Phase 6R-AO` shell work:

- local model catalog / download / checksum / unload policy patterns above the
  current payload-custody lane

That gap is still real in first-party terms because HyperTwist already owns:

- payload-custody review posture through landed `whisper.cpp` `Phase 6R-W`
- provider/session, routing, and operator shell posture through landed
  first-party `Phase 6R-X` through `Phase 6R-AI`
- external dictation shell posture through landed Handy `Phase 6R-AJ` and
  `Phase 6R-AO`

But HyperTwist did not yet expose a bounded local-model catalog shell that lets
operators review:

- which speech payloads belong to the current local dictation lane
- whether runtime download stays deferred
- which payloads require checksum/integrity review
- what unload posture remains in effect without widening into actual unload
  execution ownership

## Bounded implementation target

Land a shell-only adjunct above the existing payload-custody lane:

- local model catalog review surface ids and action ids
- payload-integrity review surface ids and action ids
- unload-policy review surface ids and action ids
- bounded model catalog entries derived from existing payload descriptors
- bounded shell-state counts and booleans for:
  - primary payload selection posture
  - optional payload posture
  - runtime-download deferral
  - bundled-redistribution deferral
  - integrity-review requirements
  - unload-policy deferral

## Explicit non-goals

Do not widen this packet into:

- actual model file download execution
- actual extract/unpack ownership
- actual unload execution ownership
- top-level provider/session ownership
- native STT runtime ownership over `whisper.cpp`
- Python orchestration ownership over `faster-whisper`
- broad assistant-platform scope

## Files expected to move

- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistRecognition/HyperTwistRecognitionTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSubsystem.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistBootstrap/HyperTwistContractLibrary.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Tests/HyperTwistHandyPhase6RAULocalModelCatalogContractTest.cpp`
- canon sync docs

## Validation target

Safe source-level validation only on this VPS:

- focused contract test coverage for the new Handy shell slice
- `git diff --check`

Windows Unreal/editor automation remains a separate follow-on and still depends
on the Windows checkout matching the current VPS worktree.
