# HyperTwist Phase 6R-C rubix-cube-solver reconstruction preparation packet

Created on `2026-05-20`

## Status

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

## Purpose

This packet freezes the next widening order after the landed `Phase 6R-B`
`kkoomen/qbr` classic-cube recognition calibration and ordered face-observation packet.

The open task is:

- define the first bounded source-backed widening packet for
  `vivaansinghvi07/rubix-cube-solver` as the retained `Phase 6R-C` reconstruction companion lane

It is not:

- a full `rubix-cube-solver` row transplant
- a browser/webcam shell packet
- a broad solve-explanation packet
- a direct redistribution packet for the bundled `frontend/lib/twistysim.min.js` asset
- a `MagicTile` topology packet
- a general recognition-provider widening packet

## 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`
- `docs/arch/HYPERTWIST_PHASE6R_B_QBR_CALIBRATED_FACE_OBSERVATION_IMPLEMENTATION_PACKET_2026-05-20.md`

The key accepted routing facts are:

- `vivaansinghvi07/rubix-cube-solver` is the retained recognition companion donor immediately after
  the landed `6R-B` slice
- earliest widening route is `Phase 6R / Packet 6R-C`
- the retained donor value there is:
  - committed-face reconstruction flow
  - face-vote replacement and correction ledger
  - bounded final net shaping above committed faces
- ownership denied there is:
  - do not let the repo absorb the full browser shell
  - do not widen into broad solve explanation or generic solver UI transport
  - do not copy or redistribute the bundled `frontend/lib/twistysim.min.js` asset without
    preserving or replacing its upstream provenance/license
  - do not let the row absorb the queued `MagicTile` topology lane

## Why this is now the next packet

The earlier `Phase 6R-B` queue head is already landed:

- retained classic-cube recognition calibration contract
- ordered face-observation contract

That means the live queue advances to:

- `Phase 6R-C` `vivaansinghvi07/rubix-cube-solver`

with the adjacent retained rows still ordered behind it:

- `Phase 6R-D` `roice3/MagicTile`
- the bounded speech-input / voice sidecar set

## Required result

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

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

- use the retained `0R-A` and `2R-A` authority surfaces plus the inspected
  `rubix-cube-solver` source basis
- define one bounded retained slice from `rubix-cube-solver`
- keep the slice inside the accepted recognition-companion ownership
- widen only the first reconstruction family that can stand on its own without dragging in the full
  browser shell, bundled frontend asset redistribution, or the next queued topology row
- 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:

- `README.md`
- `backend/cv.py`
- `backend/server.py`
- `frontend/src/script.js`

Inspected first-party receiving basis:

- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistRecognition/HyperTwistRecognitionTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Public/HyperTwistTraining/HyperTwistTrainingTypes.h`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistRecognition/HyperTwistMockVisionClient.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingSubsystem.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistBootstrap/HyperTwistContractLibrary.cpp`

## Narrowed 6R-C slice decision

The first widening slice is now fixed as:

1. classic-cube committed-face reconstruction session plus face-vote replacement ledger

not as the broader browser or explanation shell.

That narrowed slice should cover:

- retained reconstruction-session contract types
- committed-face state and sticker-vote aggregation
- bounded correction-friendly replacement ledger for recommitted faces
- classic-cube missing-face accounting above committed observations
- final facelet snapshot and classic-net shaping when the six-face reconstruction becomes complete
- subsystem and contract-library routing for that bounded reconstruction session
- focused automation coverage for:
  - reconstruction-session accumulation
  - revision ledger behavior
  - final classic-net shaping

## Deferred neighboring families

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

- browser/webcam shell
- broad solve explanation
- bundled `twistysim.min.js` redistribution
- generalized solver transport or remote-service ownership
- `MagicTile` or broader topology widening
- speech-input / voice sidecar ownership

Why this slice is first:

- the donor exposes its strongest narrow retained seam at committed-face reconstruction and
  correction-friendly replacement, not at the full browser shell
- current first-party recognition code already had session, preview, and commit envelopes plus the
  landed `qbr` ordered face-observation contract, but it still lacked an owned reconstruction
  session that could accumulate corrected committed faces into a final classic-cube net
- broad explanation or frontend widening would prematurely absorb neighboring rows and bundled
  asset obligations

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

- full browser/webcam UI transplant
- broad solve explanation or recommendation shell
- bundled `frontend/lib/twistysim.min.js` redistribution
- generalized solver backend ownership
- `MagicTile` or broader topology widening

## Queue-adjacent legal sequencing guards

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

- `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
- `Phase 6R-D` `roice3/MagicTile`
  - keep non-Euclidean topology ownership bounded to that later packet rather than letting the
    current recognition companion lane absorb it by convenience

## Acceptance criteria

- the packet records why the live queue now advances from landed `6R-B` to `6R-C`
- the packet promotes `rubix-cube-solver` as the current queue head without widening the
  neighboring retained rows prematurely
- the packet records that the first `6R-C` widening slice is committed-face reconstruction session
  plus face-vote replacement ledger only
- the packet states exact out-of-scope families for the first `6R-C` pass
- the packet keeps the `twistysim.min.js` caveat visible in later queue sequencing

## Validation checklist

1. confirm the landed `Phase 6R-B` packet is now the consumed prior queue head
2. confirm the retained reconstruction seam in `rubix-cube-solver` narrows cleanly to committed
   face aggregation and replacement ledger behavior
3. confirm the next packet is framed as bounded source-backed widening rather than README-only
   routing

That is the packet.
