# HyperTwist Phase 6R-P rubix-cube-solver browser/webcam shell preparation packet

Created on `2026-05-22`

## Status

- historical consumed preparation authority
- bounded post-`Phase 6R-O` 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-O` `kkoomen/qbr` webcam UI
shell slice.

The open task was:

- define the first bounded source-backed widening packet for `vivaansinghvi07/rubix-cube-solver`
  as the retained browser/webcam shell above the already landed reconstruction seam

It is not:

- a full `rubix-cube-solver` row transplant
- a broad solve explanation or recommendation packet
- a bundled `twistysim.min.js` redistribution packet
- a generalized solver backend packet
- a `qbr` multilingual shell packet
- 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_C_RUBIX_CUBE_SOLVER_RECONSTRUCTION_IMPLEMENTATION_PACKET_2026-05-20.md`
- `docs/arch/HYPERTWIST_PHASE6R_O_QBR_WEBCAM_UI_SHELL_IMPLEMENTATION_PACKET_2026-05-22.md`

The key accepted routing facts are:

- `vivaansinghvi07/rubix-cube-solver` remains the retained recognition-companion donor for the
  bounded browser-assisted recognition shell seam
- the already landed `Phase 6R-C` slice owns:
  - committed-face reconstruction session
  - face-vote replacement ledger
  - final classic-net shaping above aggregated committed faces
- the already landed `Phase 6R-O` slice owns:
  - classic-cube webcam overlay shell
  - bounded preview/commit shell-state readout
- the donor value now strongest for the next narrower slice is:
  - browser session stage routing
  - websocket transport session semantics
  - frame-capture cadence semantics
  - manual cube-edit handoff semantics
- ownership denied there is:
  - do not widen into bundled `twistysim.min.js` redistribution
  - do not widen into broad solve explanation or recommendation ownership
  - do not widen into generalized solver backend ownership
  - do not let the row absorb `qbr` multilingual or bundled-font ownership

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

That advanced the live queue to:

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

with the adjacent retained recognition remainder ordered behind it:

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

## Required result

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

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

- define one bounded retained browser/webcam shell slice from `rubix-cube-solver`
- keep the slice inside the accepted recognition-shell seam above the landed reconstruction session
- widen only the first browser session-state family that can stand on its own without dragging in
  bundled frontend-asset redistribution or broad recommendation ownership
- 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/server.py`
- `backend/cv.py`
- `frontend/src/script.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/HyperTwistRubixCubeSolverPhase6RCReconstructionContractTest.cpp`
- `UnrealHyperTwist/Source/UnrealHyperTwist/Tests/HyperTwistQbrPhase6ROWebcamShellContractTest.cpp`

## Narrowed 6R-P slice decision

The first widening slice is fixed as:

1. classic-cube browser/webcam shell profile and browser-shell session-state composition

not as the broader solve explanation shell.

That narrowed slice covers:

- first-party browser shell profile for:
  - websocket transport kind and endpoint
  - browser capture interval
  - ordered stage ids:
    - `home-page`
    - `video-stream`
    - `cube-edit`
  - bounded action bindings:
    - `start-browser-capture`
    - `finish-browser-capture`
    - `apply-manual-corrections`
    - `restart-browser-session`
- first-party browser shell state readout for:
  - committed-face count
  - expected-face count
  - target-face hint
  - transport route readiness
  - snapshot readiness
  - video/manual-edit visibility
  - playback deferred state
- subsystem normalization and focused automation coverage

## Deferred neighboring families

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

- broad solve explanation or recommendation shell
- bundled `twistysim.min.js` redistribution
- generalized solver backend ownership
- `qbr` multilingual shell ownership
- `qbr` bundled-font redistribution
- provider-backed recognition platform widening

## Why this slice was first

- `rubix-cube-solver` is strongest for the browser-assisted session-state shell that sits directly
  above the already landed reconstruction seam
- current first-party recognition code already had the session, preview, commit, reconstruction,
  and bounded `qbr` shell envelopes, but it did not yet own a richer browser-stage profile and
  browser-shell session state for that route
- widening into broad solve explanation or bundled frontend-asset redistribution would prematurely
  absorb adjacent legal and routing concerns that are still narrower and separately governed

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

- bundled `twistysim.min.js` shipping
- broad solve explanation or recommendation ownership
- generalized solver backend ownership
- `qbr` multilingual or bundled-font ownership
- broad playback runtime ownership

## Acceptance criteria

- the packet records why the live queue advanced to `6R-P`
- the packet records that the first `6R-P` widening slice is browser/webcam shell only
- the packet states exact out-of-scope families for the first `6R-P` pass
- the packet keeps the `rubix-cube-solver` frontend-asset guard visible
- the packet frames the next widening slice as a separate `6R-Q` explanation/recommendation pass

## Validation checklist

1. confirm the retained `rubix-cube-solver` seam narrows cleanly to a browser/webcam shell profile
   and session-state contract
2. confirm the next implementation packet is framed as bounded source-backed widening rather than a
   donor frontend transplant
3. confirm bundled frontend-asset redistribution and broad explanation widening remain explicitly
   deferred

That is the packet.
