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

Created on `2026-05-23`

## Status

- historical consumed preparation authority
- bounded post-`Phase 6R-Q` control slice
- the first bounded implementation slice now lands in:
  - `docs/arch/HYPERTWIST_PHASE6R_R_CLASSIC_CUBE_MULTI_FACE_CORRECTION_EXPLANATION_IMPLEMENTATION_PACKET_2026-05-24.md`

## Purpose

This packet freezes the next widening order after the landed `Phase 6R-Q`
`vivaansinghvi07/rubix-cube-solver` solve explanation/recommendation slice.

The open task was:

- define the next bounded source-backed widening packet as the shared
  classic-cube recognition multi-face correction/explanation shell above the
  already landed `qbr` webcam shell and `rubix-cube-solver` reconstruction,
  browser-shell, and bounded recommendation 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 preparation packet stands on already-closed authority:

- `docs/REPO_LICENSE_TRACKING.md`
- `docs/v6_5_deep_manual_pack/HyperTwist/ROADMAP.md`
- `docs/arch/HYPERTWIST_PHASE6R_O_QBR_WEBCAM_UI_SHELL_IMPLEMENTATION_PACKET_2026-05-22.md`
- `docs/arch/HYPERTWIST_PHASE6R_P_RUBIX_CUBE_SOLVER_BROWSER_WEBCAM_SHELL_IMPLEMENTATION_PACKET_2026-05-22.md`
- `docs/arch/HYPERTWIST_PHASE6R_Q_RUBIX_CUBE_SOLVER_SOLVE_EXPLANATION_RECOMMENDATION_IMPLEMENTATION_PACKET_2026-05-23.md`

The key accepted routing facts are:

- `kkoomen/qbr` remains the primary classic-cube live-recognition and
  capture-state donor
- `vivaansinghvi07/rubix-cube-solver` remains the stronger correction,
  reconstruction-companion, and explanation-semantics donor
- the already landed `Phase 6R-O` slice owns:
  - classic-cube webcam shell profile
  - scanned-side and captured-face shell state
  - target-face hint and bounded panel visibility
- the already landed `Phase 6R-P` slice owns:
  - browser-shell session-state composition
  - browser-stage routing
  - websocket transport metadata
  - manual cube-edit handoff
- the already landed `Phase 6R-Q` slice owns:
  - bounded solve explanation stage ladder
  - recommendation-state readout
  - explanation readiness after full reconstruction

The donor value now strongest for the next narrower slice is:

- multi-face correction-target state above the landed capture and
  reconstruction seams
- contradiction-aware correction and re-scan guidance
- correction explanation readout for incomplete, conflicting, or manually
  revised cube state
- explicit correction-target routing that composes `qbr` target-face capture
  state with `rubix-cube-solver` correction/explanation semantics

Ownership denied here is:

- do not widen into bundled `twistysim.min.js` redistribution
- do not widen into bundled `arial-unicode-ms.ttf` redistribution
- do not widen into standalone multilingual `qbr` ownership
- do not widen into generalized solver backend ownership
- do not widen into broad playback-runtime ownership

## Cross-lane retained split

Exact contested slice:

- classic-cube recognition multi-face correction/explanation shell

Candidate repos considered:

- `kkoomen/qbr`
- `vivaansinghvi07/rubix-cube-solver`

Authority outcome:

- `vivaansinghvi07/rubix-cube-solver` - `A1 / R1 / F2`
  - retained primary owner for correction/explanation semantics, manual
    correction flow, and structured multi-face correction readout
- `kkoomen/qbr` - `A2 / R1 / F2`
  - retained adjunct owner for capture-state continuity, target-face re-scan
    anchoring, preview/snapshot/result-state discipline, and shell-state
    continuity needed by the shared correction surface

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

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

## Why this was the next packet

The earlier retained queue heads were already landed:

- `Phase 6R-A` `HactarCE/Hyperspeedcube`
- `Phase 6R-B` `kkoomen/qbr`
- `Phase 6R-C` `vivaansinghvi07/rubix-cube-solver`
- `Phase 6R-D` `roice3/MagicTile`
- `Phase 6R-E` `ggml-org/whisper.cpp`
- `Phase 6R-F` `SYSTRAN/faster-whisper`
- `Phase 6R-G` `rhasspy/piper`
- `Phase 6R-H` `coqui-ai/TTS`
- `Phase 6R-I` `roice3/Magic120Cell`
- `Phase 6R-J` `roice3/MagicCube5D`
- `Phase 6R-K` `HactarCE/Hyperspeedcube`
- `Phase 6R-L` `HactarCE/Hyperspeedcube`
- `Phase 6R-M` `HactarCE/Hyperspeedcube`
- `Phase 6R-N` `HactarCE/Hyperspeedcube`
- `Phase 6R-O` `kkoomen/qbr`
- `Phase 6R-P` `vivaansinghvi07/rubix-cube-solver`
- `Phase 6R-Q` `vivaansinghvi07/rubix-cube-solver`

That advanced the live queue to:

- shared `Phase 6R-R` classic-cube recognition multi-face correction/
  explanation

## Required result

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

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

- define one bounded shared correction/explanation shell slice
- keep the slice above the landed `Phase 6R-O`, `Phase 6R-P`, and `Phase 6R-Q`
  seams
- widen only the first correction-state and correction-explanation family that
  can stand on its own without dragging in either bundled asset family
- preserve `rubix-cube-solver` as the retained correction/explanation-semantic
  owner while preserving `qbr` as the capture-state adjunct
- 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:

- `C:\visual_studio_solutions\multi_project\GPT 5.4 HyperTwist parse\19-kkoomen-qbr-upstream-dossier.md`
  with code-level findings from:
  - `README.md`
  - `src/video.py`
  - `src/helpers.py`
  - `src/colordetection.py`
  - `src/config.py`
  - `src/constants.py`
- `C:\visual_studio_solutions\multi_project\GPT 5.4 HyperTwist parse\20-vivaansinghvi07-rubix-cube-solver-upstream-dossier.md`
  with code-level findings from:
  - `backend/cv.py`
  - `backend/server.py`
  - `frontend/src/script.js`
  - `frontend/lib/twistysim.min.js`

Inspected first-party receiving basis:

- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistRecognition/HyperTwistRecognitionTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistBootstrap/HyperTwistContractLibrary.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSubsystem.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Tests/HyperTwistQbrPhase6ROWebcamShellContractTest.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Tests/HyperTwistRubixCubeSolverPhase6RPBrowserShellContractTest.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Tests/HyperTwistRubixCubeSolverPhase6RQSolveExplanationContractTest.cpp`

## Narrowed 6R-R slice decision

The first widening slice is fixed as:

1. classic-cube correction state and correction-explanation shell composition

not as bundled asset redistribution or broader playback ownership.

That narrowed slice covers:

- first-party correction-target state for:
  - pending captured faces
  - conflicting or low-confidence committed faces
  - next recommended re-scan or manual-correction target
  - correction-complete versus solve-ready gating
- first-party correction-explanation readout for:
  - why a correction is requested
  - which face or revision is affected
  - whether re-scan, manual edit, or stage restart is the correct next action
  - contradiction visibility rather than a boolean-only mismatch light
- shared shell composition that keeps:
  - `qbr` target-face and capture-state continuity
  - `rubix-cube-solver` correction and explanation semantics
  - first-party HyperTwist ownership of the wider recognition session and
    shell
- subsystem normalization and focused automation coverage

## Deferred neighboring families

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

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

## Why this slice was first

- `rubix-cube-solver` is strongest for explicit correction and explanation
  semantics that sit above the already landed reconstruction, browser-shell,
  and recommendation seams
- `qbr` remains uniquely valuable for stable capture-state continuity and
  target-face re-scan anchoring, so that adjunct value must stay preserved in
  the shared shell rather than being flattened away
- current first-party code already owns the session, shell, reconstruction,
  and bounded recommendation envelopes, but it does not yet own a first-party
  correction-target and correction-explanation surface above them
- widening into either bundled asset family or broad playback/runtime
  ownership would prematurely absorb legal and routing concerns that are still
  narrower and separately governed

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

- bundled `twistysim.min.js` shipping
- bundled `arial-unicode-ms.ttf` shipping
- standalone multilingual shell ownership
- generalized solver backend ownership
- broad playback runtime ownership
- any attempt to demote `qbr` capture-state adjunct value or to make the
  retained split symmetric

## Acceptance criteria

- the packet records why the live queue advanced to shared `6R-R`
- the packet records that the first `6R-R` widening slice is correction state
  and correction-explanation shell composition only
- the packet states the exact `A/R/F` split between `rubix-cube-solver` and
  `qbr`
- the packet states exact out-of-scope families for the first `6R-R` pass
- the packet keeps both bundled-asset guards visible

## Validation checklist

1. confirm the shared retained correction/explanation seam narrows cleanly to
   a first bounded correction-state and correction-explanation shell
2. confirm the implementation packet is framed as bounded first-party widening
   rather than a donor frontend transplant
3. confirm both bundled-asset redistribution families remain explicitly
   deferred

That is the packet.
