# HyperTwist Phase 6R-B qbr calibrated face observation implementation packet

Created on `2026-05-20`

## Status

- first-party HyperTwist packet
- bounded permissive `Phase 6R-B` implementation slice

## Purpose

This packet lands the first narrower bounded slice from the retained `kkoomen/qbr`
recognition-substrate row.

The landed slice is:

- first-party classic-cube recognition calibration plus ordered face-observation contract

It is not:

- a full `qbr` row transplant
- a browser/webcam UI shell packet
- a multilingual solve-shell packet
- a bundled-font redistribution packet
- a multi-face reconstruction or correction packet
- a `rubix-cube-solver` packet

## Current authority basis

This implementation packet stands on:

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

The retained owner remains:

- `kkoomen/qbr`

The granted family remains bounded to:

- recognition calibration flow
- ordered face observation
- color-detection bookkeeping
- bounded capture-session guidance

This packet lands only the first narrower contract slice in that granted set.

## Landed scope

The current code now owns a retained classic-cube recognition contract through:

- retained recognition contract types for:
  - calibration swatches
  - calibration profiles
  - observed stickers
  - observed face envelopes
- recognition session config defaults for:
  - classic-cube calibration profile id
  - calibration-profile definition
  - classic ordered face-observation profile
- `UHyperTwistContractLibrary` sample calibration-profile and observed-face routing
- `UHyperTwistTrainingSubsystem` classic `cube/3x3x3` recognition-session normalization
- `UHyperTwistHttpVisionClient` capability exposure for:
  - calibration profiles
  - ordered face observation
- `UHyperTwistMockVisionClient` preview and commit contract responses for ordered face observation
- focused automation coverage in:
  - `HyperTwistQbrPhase6RBCalibrationContractTest.cpp`

## Why this is still intentionally bounded

This packet replaces the thinner recognition sample and session heuristics with a richer first-party
calibration and observed-face contract, but it does not widen into the neighboring retained
families.

Still deferred:

- webcam UI shell
- multilingual solve shell
- bundled-font redistribution
- multi-face reconstruction
- correction or solve-explanation flow
- `rubix-cube-solver` companion-lane ownership

## Validation

Build validation:

- `Build.bat UnrealHyperTwistEditor Win64 Development -Project='C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject' -WaitMutex -NoHotReloadFromIDE`

Focused automation validation:

- `Automation RunTests HyperTwist.Permissive.Qbr.Phase6R.B`

Regression automation validation:

- `Automation RunTests HyperTwist.Permissive.Hyperspeedcube.Phase6R.A`
- `Automation RunTests HyperTwist.CleanRoom.CubeDesk`

Expected covered tests:

- `CalibrationSessionConfig`
- `PreviewObservation`
- `CommitObservation`
- `CatalogLookup`
- `SampleDefinition`
- `TrainingRunDefinition`
- existing `CubeDesk` clean-room regression suite

## Queue effect

This packet consumes the current `Phase 6R-B` implementation slice.

`kkoomen/qbr` remains only partially incorporated:

- landed now:
  - classic-cube recognition calibration contract
  - ordered face-observation contract
- still deferred:
  - webcam UI shell
  - bundled-font redistribution and multilingual solve shell
  - multi-face reconstruction / correction / explanation

The next clean move is not another immediate `qbr` widening by default.

The next queue head should be:

- a source-backed `Phase 6R-C` `vivaansinghvi07/rubix-cube-solver` preparation/control pass

Keep the legal sequencing guards visible there:

- `kkoomen/qbr`
  - do not copy or redistribute `src/assets/arial-unicode-ms.ttf` without separate confirmation or
    replacement in any future widening that would ship that asset
- `vivaansinghvi07/rubix-cube-solver`
  - do not copy or redistribute `frontend/lib/twistysim.min.js` without preserving or replacing
    its upstream provenance/license
