# HyperTwist Phase 6R-R classic-cube multi-face correction explanation implementation packet

Created on `2026-05-24`

## Status

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

## Purpose

This packet lands the current retained shared classic-cube recognition
correction/explanation family:

- first-party correction-profile, correction-target, contradiction, and
  correction-explanation shell composition above the already landed `qbr`
  webcam shell plus the already landed `rubix-cube-solver` reconstruction,
  browser-shell, and bounded solve-explanation seams

It is not:

- a full `qbr` row transplant
- a full `rubix-cube-solver` row transplant
- a bundled `twistysim.min.js` redistribution packet
- a bundled `arial-unicode-ms.ttf` redistribution packet
- a multilingual `qbr` shell packet
- a generalized solver backend packet
- a broad playback-runtime packet

## Current authority basis

This implementation packet stands on:

- `docs/REPO_LICENSE_TRACKING.md`
- `docs/ops/HYPERTWIST_CROSS_LANE_AUTHORITY_HIERARCHY_AND_RECONCILIATION_2026-05-20.md`
- `docs/arch/HYPERTWIST_PHASE6R_R_CLASSIC_CUBE_MULTI_FACE_CORRECTION_EXPLANATION_PREPARATION_PACKET_2026-05-23.md`

The retained owner split stays explicit:

- `vivaansinghvi07/rubix-cube-solver`
  - retained primary owner for correction/explanation semantics, revision
    review, contradiction visibility, and manual-correction routing
- `kkoomen/qbr`
  - retained adjunct owner for capture-state continuity, target-face re-scan
    anchoring, preview/snapshot discipline, and the shared correction shell's
    live recognition posture

The top-level product shell owner does not change here:

- first-party HyperTwist remains the broader recognition-session and
  product-shell owner

## Landed scope

The current code now owns a bounded first-party correction shell through:

- first-party `HyperTwistRecognition` contract types for:
  - correction target definition
  - contradiction object definition
  - correction profile definition
  - correction session-state readout
  - correction profile id on recognition session config
  - commit-result correction payloads
- recognition session config defaults for:
  - first-party classic-cube correction profile id
  - correction profile definition with explicit bounded action bindings
- first-party commit-result shaping for:
  - missing-face correction routing
  - conflicting-face contradiction objects
  - recommitted-face contradiction objects
  - low-confidence face targeting
  - targeted re-scan, manual cube edit, and stage-restart visibility
  - explicit correction-complete versus solve-ready gating
  - solve-explanation blocking and stage redirect once a full net exists but
    correction remains open
- sample contract routing in:
  - `UHyperTwistContractLibrary`
- active subsystem normalization in:
  - `UHyperTwistTrainingSubsystem`
- focused automation coverage in:
  - `HyperTwistClassicCubePhase6RRCorrectionContractTest.cpp`

## Why this is still intentionally bounded

This packet lands the first bounded correction-state and
correction-explanation shell slice, but it does not widen into neighboring
families or broader ownership.

Still excluded:

- bundled `twistysim.min.js` redistribution
- bundled `arial-unicode-ms.ttf` redistribution
- standalone multilingual `qbr` shell ownership
- generalized solver backend ownership
- broad playback-runtime ownership
- donor-shaped frontend transplant

## Validation

Build validation:

- `C:\Program Files\Epic Games\UE_5.7\Engine\Build\BatchFiles\Build.bat UnrealHyperTwistEditor Win64 Development -Project='C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject' -WaitMutex -NoHotReloadFromIDE -NoUba`

Focused automation validation:

- `C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor-Cmd.exe C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject -unattended -nop4 -nosplash -NullRHI -log -stdout -FullStdOutLogOutput -AbsLog=C:\HyperTwist\UnrealHyperTwist\Saved\Logs\Phase6R-R-ClassicCube-Verify.log -ReportExportPath=C:\HyperTwist\UnrealHyperTwist\Saved\AutomationReports\Phase6R-R-ClassicCube-Verify -ExecCmds="Automation RunTests HyperTwist.Permissive.ClassicCube.Phase6R.R; Quit" -TestExit="Automation Test Queue Empty"`

Regression automation validation:

- `HyperTwist.Permissive.RubixCubeSolver.Phase6R.Q`
- `HyperTwist.Permissive.RubixCubeSolver.Phase6R.P`
- `HyperTwist.Permissive.Qbr.Phase6R.O`
- `HyperTwist.Permissive.RubixCubeSolver.Phase6R.C`
- `HyperTwist.CleanRoom.CubeDesk`

Expected covered tests:

- `CorrectionSessionConfig`
- `CorrectionPartialState`
- `CorrectionRevisionState`
- existing `rubix-cube-solver`, `qbr`, and `CubeDesk` regression suites

## Queue effect

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

`kkoomen/qbr` remains partially incorporated:

- landed now:
  - classic-cube recognition calibration contract
  - ordered face-observation contract
  - classic-cube webcam shell
  - shared correction-target capture-state and re-scan adjunct
- still deferred:
  - bundled-font redistribution and multilingual solve shell

`vivaansinghvi07/rubix-cube-solver` remains partially incorporated:

- landed now:
  - committed-face reconstruction session
  - face-vote replacement ledger
  - final classic-net shaping above aggregated committed faces
  - browser/webcam shell profile and browser-shell session-state composition
  - bounded solve explanation/recommendation stage ladder and recommendation
    state
  - bounded correction profile, contradiction-aware correction state, and
    correction-explanation shell routing
- still deferred:
  - retained correction/explanation shell remainder beyond the landed
    correction-state slice
  - bundled `twistysim.min.js` redistribution

The next clean move is:

- a source-backed follow-on control pass for the retained classic-cube
  recognition correction/explanation shell remainder shared across
  `kkoomen/qbr` and `vivaansinghvi07/rubix-cube-solver`

Keep the future sequencing guards visible:

- do not copy or redistribute `frontend/lib/twistysim.min.js` without
  preserving or replacing its upstream provenance/license in any future
  widening that would ship that asset
- do not copy or redistribute `src/assets/arial-unicode-ms.ttf` without
  separate confirmation or replacement in any future widening that would ship
  that asset
- do not widen into broad playback-runtime or generalized solver-backend
  ownership unless a narrower first-party gap is proven above the landed
  correction shell
