# HyperTwist Phase 6R-A Hyperspeedcube runtime anchor preparation packet

Created on `2026-05-20`

## Status

- historical same-day preparation authority
- bounded post-Phase-`5R` preparation slice
- the first bounded implementation slice now lands separately under:
  - `docs/arch/HYPERTWIST_PHASE6R_A_HYPERSPEEDCUBE_PUZZLE_CATALOG_IMPLEMENTATION_PACKET_2026-05-20.md`

## Purpose

This packet freezes the next widening order after the already-landed first-party orchestration,
recognition, and imported catalog-overlay packet block.

The open task is:

- define the first bounded source-backed widening packet for `HactarCE/Hyperspeedcube` as the
  retained `Phase 6R-A` runtime anchor

It is not:

- a direct implementation pass from README-level queue posture
- a `qbr` calibration packet
- a `vivaansinghvi07/rubix-cube-solver` reconstruction packet
- a `MagicTile` topology widening packet
- a broad Rust app-shell transplant

## Current authority basis

This preparation packet stands on already-closed authority:

- `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`

The key accepted routing facts are:

- `HactarCE/Hyperspeedcube` is the retained runtime-side hyper foundation anchor
- earliest widening route is `Phase 6R / Packet 6R-A`
- ownership granted there is:
  - puzzle catalog contract
  - puzzle-definition DSL boundary
  - notation grammar and serialization boundary
  - replay-event taxonomy and verification boundary
  - stats-shape and solve-record contract
  - runtime-side abstraction for higher-dimensional puzzle state and view/simulation separation
- ownership denied there is:
  - do not let the repo own the entire app shell
  - do not let it dictate Rust-specific packaging or workspace layout
  - do not let it absorb non-Euclidean topology ownership that stays with `MagicTile`

## Why this is now the next packet

The earlier first-party packet block is already landed:

- orchestration entry lane
- provider-backed recognition client
- recognition runtime handoff
- imported training catalog overlay and finite/runtime materialization widening

That means the earlier roadmap hold is consumed.

The queue is now live at the retained runtime anchor:

- `Phase 6R-A` `HactarCE/Hyperspeedcube`

with the later adjacent retained rows still ordered behind it:

- `Phase 6R-B` `kkoomen/qbr`
- `Phase 6R-C` `vivaansinghvi07/rubix-cube-solver`
- `Phase 6R-D` `roice3/MagicTile`

## Required result

The source-backed control pass for this packet is now complete.

The first actual `6R-A` implementation packet should:

- use the retained `0R-A` and `2R-A` authority surfaces plus the inspected `Hyperspeedcube`
  source basis
- define one bounded retained slice from `Hyperspeedcube`
- keep the slice inside the ownership granted by `2R-A`
- widen only the first retained runtime-anchor contract that can stand on its own without dragging
  in later neighbor families
- explicitly state which neighboring retained rows stay closed in that packet

## Source-backed retained basis

The queue-head decision is now source-backed rather than README-only.

Inspected retained donor basis:

- `Cargo.toml`
- `crates/hyperpuzzle_core/src/lib.rs`
- `crates/hyperpuzzle_core/src/catalog/mod.rs`
- `crates/hyperpuzzle_core/src/catalog/builder.rs`
- `crates/hyperpuzzle_core/src/catalog/metadata.rs`
- `crates/hyperpuzzle_core/src/catalog/params.rs`
- `crates/hyperpuzzle_core/src/catalog/generator.rs`
- `crates/hyperpuzzlescript/src/lib.rs`
- `crates/hypuz_notation/src/lib.rs`
- `crates/hyperpuzzle_view/src/replay_event.rs`
- `crates/hyperpuzzle_log/src/verify.rs`
- `crates/hyperstats/src/lib.rs`

Inspected first-party receiving basis:

- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistCore/HyperTwistCoreTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingCatalogImportTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistBootstrap/HyperTwistContractLibrary.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingCatalogLibrary.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingLibrary.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSubsystem.cpp`

## Narrowed 6R-A slice decision

The first widening slice is now fixed as:

1. puzzle catalog contract

not as the broader multi-family runtime bundle.

That narrowed slice should cover:

- first-party hyper puzzle catalog ids
- first-party hyper puzzle catalog metadata:
  - name
  - aliases
  - tags
  - version
- registration boundaries for hyper puzzle definitions and families
- generator / variant parameter shape needed to refer to retained hyper puzzle definitions
- the minimum bridge from catalog entries into first-party puzzle-definition references

The first packet should treat the current sample and heuristic hyper-definition handling as the
first-party gap to replace:

- `UHyperTwistContractLibrary::MakeSampleHyperPuzzleDefinition(...)`
- `UHyperTwistTrainingLibrary::MakeDefinitionForCase(...)`
- `UHyperTwistTrainingSubsystem` puzzle-id / notation-profile heuristics

## Deferred neighboring families

The first `6R-A` implementation packet must keep these capability families closed:

- 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 that stays with `MagicTile`
- `qbr` calibration / perception ownership
- `rubix-cube-solver` correction / explanation ownership

Why this slice is first:

- `hyperpuzzle_core::catalog` is the smallest upstream retained donor seam that already exposes
  the needed identity, metadata, and registration shape
- the DSL, notation, replay, and stats crates all broaden scope or depend on the catalog boundary
- current first-party code already has thin hyper-definition refs and training-catalog import
  patterns, but it does not yet own a real hyper puzzle catalog contract

## Out of scope for the first 6R-A packet

- direct widening into `qbr` calibration ownership
- direct widening into `rubix-cube-solver` explanation/correction ownership
- direct widening into `MagicTile` non-Euclidean topology ownership
- browser-shell, terminal-shell, or Rust workspace transplantation
- broad viewer/editor/explainer UX
- donor-family comparison work that belongs in later adjacent packets

## Source-read rule for the next packet

The next actual `6R-A` packet must not run from roadmap memory alone.

Before widening starts, that packet should:

1. read the retained `0R-A` and `2R-A` authority surfaces again
2. inspect the actual `Hyperspeedcube` source basis needed for the granted ownership slice
3. choose one narrower bounded slice or one full bounded capability realization explicitly
4. state what remains deferred to `6R-B`, `6R-C`, and `6R-D`

## Suggested next packet

The next explicit implementation-facing packet after this preparation slice is now:

- a bounded permissive `Phase 6R-A` `HactarCE/Hyperspeedcube` puzzle-catalog contract widening
  packet

The packet should be framed as:

- first-party runtime contract widening for hyper puzzle catalog only

## Queue-adjacent legal sequencing guards

Do not omit the already-recorded legal caveats when the neighboring retained rows later come up:

- `Phase 6R-B` `kkoomen/qbr`
  - confirm or replace the bundled `src/assets/arial-unicode-ms.ttf` before direct
    redistribution if any packet copies or ships that asset
- `Phase 6R-C` `vivaansinghvi07/rubix-cube-solver`
  - preserve or replace the bundled `frontend/lib/twistysim.min.js` with its upstream
    provenance/license intact before redistribution if any packet copies or ships that dependency

## Acceptance criteria

- the packet records why the first-party `Phase 4` / `Phase 5` hold is now consumed
- the packet promotes `Hyperspeedcube` as the live queue head without widening the neighboring
  retained rows prematurely
- the packet records that the first `6R-A` widening slice is puzzle catalog only
- the packet states exact out-of-scope families for the first `6R-A` pass
- the packet keeps the `qbr` font and `rubix-cube-solver` bundled dependency caveats visible in
  later queue sequencing

## Validation checklist

1. confirm the earlier first-party packet block is already landed in current code
2. confirm `2R-A` still grants `Hyperspeedcube` the retained runtime-anchor ownership
3. confirm the next packet is framed as source-backed widening rather than README-only routing

That is the packet.
