# HyperTwist Phase 6R-A Hyperspeedcube puzzle catalog implementation packet

Created on `2026-05-20`

## Status

- first-party HyperTwist packet
- bounded permissive `Phase 6R-A` implementation slice

## Purpose

This packet lands the first narrower bounded slice from the retained `HactarCE/Hyperspeedcube`
runtime-anchor row.

The landed slice is:

- first-party hyper puzzle catalog contract

It is not:

- a full `Hyperspeedcube` row transplant
- a puzzle-definition DSL packet
- a notation parser or serializer packet
- a replay verification packet
- a stats-shape packet
- a `qbr`, `rubix-cube-solver`, or `MagicTile` packet

## Current authority basis

This implementation packet stands on:

- `docs/HYPERTWIST_PHASE_0R_PACKET_0R_A_EVALUATION_2026-05-12.md`
- `docs/HYPERTWIST_PHASE_2R_PACKET_2R_A_OWNERSHIP_AND_ACCEPTANCE_CONTRACT_2026-05-13.md`
- `docs/REPO_LICENSE_TRACKING.md`
- `docs/arch/HYPERTWIST_PHASE6R_A_HYPERSPEEDCUBE_RUNTIME_ANCHOR_PREPARATION_PACKET_2026-05-20.md`

The retained owner remains:

- `HactarCE/Hyperspeedcube`

The granted family remains bounded to:

- puzzle catalog contract
- puzzle-definition DSL boundary
- notation grammar and serialization boundary
- replay-event taxonomy and verification boundary
- stats-shape and solve-record contract

This packet lands only the first family in that granted set.

## Landed scope

The current code now owns a retained hyper puzzle catalog contract through:

- retained catalog contract types for canonical hyper puzzle entries and the catalog wrapper
- `UHyperTwistTrainingCatalogLibrary` catalog construction and lookup helpers
- canonical hyper-definition resolution for:
  - `3x3x3x3`
  - `2x2x2x2`
  - `4x4x4x4`
  - `3x3x3x3x3`
  - `phys_2x2x2x2`
- replay-packet definition shaping in `UHyperTwistTrainingLibrary`
- session/runtime family and notation resolution in `UHyperTwistTrainingSubsystem`
- coach option family counting in `UHyperTwistTrainingCoachLibrary`
- sample hyper definition routing in `UHyperTwistContractLibrary`

## Why this is still intentionally bounded

This packet replaces sample / heuristic hyper puzzle identity with a catalog-owned contract, but it
does not widen into the neighboring retained families.

Still deferred:

- puzzle-definition DSL parsing and authoring
- notation parsing and serialization
- replay-event taxonomy widening and replay verification
- stats-shape / solve-record widening
- broad view / simulation UX
- non-Euclidean topology ownership
- `qbr` calibration / perception ownership
- `rubix-cube-solver` correction / explanation ownership

## Validation

Build validation:

- `Build.bat UnrealHyperTwistEditor Win64 Development -Project='C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject' -WaitMutex -NoHotReloadFromIDE`

Focused automation validation:

- `Automation RunTests HyperTwist.Permissive.Hyperspeedcube.Phase6R.A`

Regression automation validation:

- `Automation RunTests HyperTwist.CleanRoom.CubeDesk`
- `Automation RunTests HyperTwist.CleanRoom.HactarCE`

Expected covered tests:

- `CatalogLookup`
- `SampleDefinition`
- `TrainingRunDefinition`
- existing `CubeDesk` clean-room regression suite
- existing `HactarCE` clean-room regression suite

## Queue effect

This packet consumes the current `Phase 6R-A` implementation slice.

`HactarCE/Hyperspeedcube` remains only partially incorporated:

- landed now:
  - puzzle catalog contract
- still deferred:
  - DSL
  - notation
  - replay verification
  - stats-shape

The next clean move is not another immediate `Hyperspeedcube` widening by default.

The next queue head should be:

- a source-backed `Phase 6R-B` `kkoomen/qbr` preparation/control pass

Keep the legal sequencing guard visible there:

- do not copy or redistribute `src/assets/arial-unicode-ms.ttf` without separate confirmation or
  replacement
