# HyperTwist Phase 6R-O qbr webcam UI shell preparation packet

Created on `2026-05-22`

## Status

- historical consumed preparation authority
- bounded post-`Phase 6R-N` control slice
- the first bounded implementation slice now lands separately after this packet

## Purpose

This packet freezes the next widening order after the landed `Phase 6R-N` `HactarCE/Hyperspeedcube`
puzzle-definition DSL slice.

The open task was:

- define the first bounded source-backed widening packet for `kkoomen/qbr` as the retained
  classic-cube webcam UI shell above the already landed calibration and ordered face-observation
  seam

It is not:

- a full `qbr` row transplant
- a multilingual solve shell packet
- a bundled-font redistribution packet
- a multi-face reconstruction or correction packet
- a browser-shell or recommendation-shell packet from `rubix-cube-solver`
- a provider-backed recognition platform 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_B_QBR_CALIBRATED_FACE_OBSERVATION_IMPLEMENTATION_PACKET_2026-05-20.md`
- `docs/arch/HYPERTWIST_PHASE6R_C_RUBIX_CUBE_SOLVER_RECONSTRUCTION_IMPLEMENTATION_PACKET_2026-05-20.md`

The key accepted routing facts are:

- `kkoomen/qbr` remains the retained recognition-substrate donor for the bounded classic-cube
  webcam shell seam
- the already landed `Phase 6R-B` slice owns:
  - classic-cube recognition calibration contract
  - ordered face-observation contract
- the donor value now strongest for the next narrower slice is:
  - preview sticker-grid shell
  - snapshot sticker-grid shell
  - scanned-side counter shell
  - classic cube-net readout shell
  - locale-indicator and input-action shell semantics
- ownership denied there is:
  - do not widen into bundled `arial-unicode-ms.ttf` redistribution
  - do not widen into multilingual solve text ownership
  - do not widen into multi-face reconstruction or correction ownership
  - do not let the row absorb the queued `rubix-cube-solver` browser/webcam shell

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

That advanced the live queue to:

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

with the adjacent retained recognition row ordered behind it:

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

## Required result

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

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

- define one bounded retained shell slice from `qbr`
- keep the slice inside the accepted classic-cube recognition-shell seam
- widen only the first shell family that can stand on its own without dragging in bundled-font
  shipping, multilingual copy ownership, or browser-shell 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/video.py`
- `src/constants.py`
- `src/helpers.py`
- `src/config.py`

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/HyperTwistQbrPhase6RBCalibrationContractTest.cpp`

## Narrowed 6R-O slice decision

The first widening slice is fixed as:

1. classic-cube webcam shell profile and shell-state composition

not as the broader multilingual or correction shell.

That narrowed slice covers:

- first-party webcam shell profile for:
  - preview sticker grid
  - snapshot sticker grid
  - scanned-side counter
  - classic cube-net readout
  - locale indicator
  - calibration swatch rail as a bounded shell surface
- first-party input-action contract for:
  - capture snapshot
  - toggle calibration
  - cycle locale
  - close session
- first-party shell-state readout for:
  - scanned-side count
  - captured-face ids
  - target-face hint
  - last committed face id
  - bounded panel visibility
- subsystem normalization and focused automation coverage

## Deferred neighboring families

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

- bundled-font redistribution
- multilingual solve shell ownership
- multi-face reconstruction / correction / explanation
- browser/webcam shell ownership from `rubix-cube-solver`
- bundled `twistysim.min.js` redistribution
- broad recommendation or solve-explanation ownership

## Why this slice was first

- `qbr` is strongest for the compact webcam overlay shell that sits directly on top of the already
  landed calibration and ordered face-observation seam
- current first-party recognition code already had the session, preview, and commit envelopes, but
  it did not yet own a richer shell profile and shell-state contract for that route
- widening into multilingual copy or correction/explanation would prematurely absorb adjacent legal
  and routing concerns from `qbr` and `rubix-cube-solver`

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

- bundled font asset shipping
- multilingual solve guidance ownership
- multi-face correction or explanation ownership
- browser/webcam shell ownership beyond the bounded classic-cube webcam overlay
- general recommendation shell widening

## Acceptance criteria

- the packet records why the live queue advanced to `6R-O`
- the packet records that the first `6R-O` widening slice is the classic-cube webcam shell only
- the packet states exact out-of-scope families for the first `6R-O` pass
- the packet keeps the `qbr` font-asset guard visible
- the packet keeps the `rubix-cube-solver` browser-shell guard visible for the next packet

## Validation checklist

1. confirm the retained `qbr` seam narrows cleanly to a webcam shell profile and shell state
2. confirm the next implementation packet is framed as bounded source-backed widening rather than a
   donor UI transplant
3. confirm bundled-font and multilingual widening remain explicitly deferred

That is the packet.
