# HyperTwist Phase 6R-B qbr recognition calibration preparation packet

Created on `2026-05-20`

## Status

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

## Purpose

This packet freezes the next widening order after the landed `Phase 6R-A`
`HactarCE/Hyperspeedcube` puzzle-catalog contract.

The open task is:

- define the first bounded source-backed widening packet for `kkoomen/qbr` as the retained
  `Phase 6R-B` recognition-calibration nucleus

It is not:

- a full `qbr` row transplant
- a `rubix-cube-solver` reconstruction packet
- a `MagicTile` topology packet
- a multi-face reconstruction or correction packet
- a solve-explanation or multilingual-shell packet
- a direct redistribution packet for the bundled `arial-unicode-ms.ttf` asset

## 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_A_HYPERSPEEDCUBE_PUZZLE_CATALOG_IMPLEMENTATION_PACKET_2026-05-20.md`

The key accepted routing facts are:

- `kkoomen/qbr` is the retained recognition-substrate donor immediately after the landed `6R-A`
  slice
- earliest widening route is `Phase 6R / Packet 6R-B`
- the retained donor value there is:
  - classic-cube recognition calibration flow
  - ordered face-observation capture
  - color-detection bookkeeping
  - bounded capture-session guidance
- ownership denied there is:
  - do not let the repo absorb the whole recognition shell
  - do not widen into multi-face reconstruction, correction, or solve explanation
  - do not widen into browser UI shell or multilingual packaging
  - do not copy or redistribute the bundled `arial-unicode-ms.ttf` asset without separate
    confirmation or replacement
  - do not let the row absorb the queued `rubix-cube-solver` companion lane

## Why this is now the next packet

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

- retained hyper puzzle catalog contract
- runtime family/notation resolution above that catalog seam

That means the live queue advances to:

- `Phase 6R-B` `kkoomen/qbr`

with the adjacent retained rows still ordered behind it:

- `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-B` implementation packet should:

- use the retained `0R-A` and `2R-A` authority surfaces plus the inspected `qbr` source basis
- define one bounded retained slice from `qbr`
- keep the slice inside the accepted recognition-substrate ownership
- widen only the first recognition contract family that can stand on its own without dragging in
  UI, explanation, or companion-lane scope
- 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`
- `src/qbr.py`
- `src/colordetection.py`
- `src/video.py`
- `src/config.py`
- `src/helpers.py`
- `src/constants.py`

Inspected first-party receiving basis:

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

## Narrowed 6R-B slice decision

The first widening slice is now fixed as:

1. classic-cube recognition calibration plus ordered face-observation contract

not as the broader recognition shell.

That narrowed slice should cover:

- first-party calibration swatches and calibration-profile definition
- classic-cube face observation with:
  - ordered stickers
  - face id
  - observation id
  - commit-ready state
- session defaults for calibration profile and observation profile
- client capability exposure and mock/client contract responses
- subsystem normalization for the classic `cube/3x3x3` recognition route
- sample contract outputs and focused automation coverage

## Deferred neighboring families

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

- webcam UI shell
- multilingual solve shell
- bundled-font redistribution
- multi-face reconstruction
- correction or solve-explanation flow
- downstream solver-or-companion ownership that belongs with `rubix-cube-solver`
- broader provider-backed recognition productionization beyond the retained contract seam

Why this slice is first:

- `qbr` exposes the strongest narrow retained seam at calibration and ordered face observation
- current first-party recognition code already has session, frame, preview, and commit envelopes,
  but it still lacks a richer owned contract for calibration profiles and observed-face structure
- multi-face reconstruction and correction would prematurely absorb the next queued companion row

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

- full webcam/browser UI transplant
- multilingual solve shell and bundled font asset redistribution
- multi-face solve-state reconstruction
- correction or explanation ownership
- `rubix-cube-solver` companion-lane widening
- `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-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 live queue now advances from landed `6R-A` to `6R-B`
- the packet promotes `qbr` as the current queue head without widening the neighboring retained
  rows prematurely
- the packet records that the first `6R-B` widening slice is classic-cube recognition calibration
  plus ordered face observation only
- the packet states exact out-of-scope families for the first `6R-B` pass
- the packet keeps the `qbr` font and `rubix-cube-solver` bundled dependency caveats visible in
  later queue sequencing

## Validation checklist

1. confirm the landed `Phase 6R-A` packet is now the consumed prior queue head
2. confirm the retained recognition-substrate seam in `qbr` narrows cleanly to calibration and
   ordered face observation
3. confirm the next packet is framed as bounded source-backed widening rather than README-only
   routing

That is the packet.
