# HyperTwist Phase 2R Packet 2R-C Ownership And Acceptance Contract

Created on `2026-05-13`

## Status

`Phase 2R / Packet 2R-C` is now `closed`.

This packet converts the final retained `0R-B` residual rows from source-evaluated donors into implementation-ready ownership contracts.

It does not redo source parsing.

That source-value work already lives in:

- [HYPERTWIST_PHASE_0R_PACKET_0R_B_EVALUATION_2026-05-12.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_0R_PACKET_0R_B_EVALUATION_2026-05-12.md:1)
- [REPO_LICENSE_TRACKING.md](C:/HyperTwist/docs/REPO_LICENSE_TRACKING.md:1)

This packet answers the next question instead:

- what these five residual permissive rows are allowed to own in first-party HyperTwist
- what they are explicitly not allowed to own
- which of them are comparison adjuncts versus optional alternative-support lanes
- which first-party contracts must exist before widening is accepted
- which later packet each row may enter next

## Purpose

`Phase 2R-A` closed the core runtime, recognition, timer, and topology rows.

`Phase 2R-B` closed the primary permissive support-plane rows.

`Phase 2R-C` closes the remaining ownership gap inside `0R-B` for:

- recognition comparison adjuncts behind the retained recognition anchors
- symbolic-to-spatial XR pedagogy experiments
- alternative browser comparison lanes that stay subordinate to the retained browser stack

Without this packet, the final `0R-B` rows would still sit on inherited routing without explicit ownership and acceptance boundaries.

## Scope

This packet closes ownership and acceptance for:

- `cahidenes/rubiks-cube-solver`
- `tentone/rubix-solver`
- `NuiLab/code-vr`
- `pissang/claygl`
- `pissang/clay-viewer`

These five rows stay retained.

None of them are promoted into product-foundation owners.

## Authority boundary

Use the documents in this order for the repos in this packet:

1. this packet for subsystem ownership, acceptance markers, and packet entry
2. [HYPERTWIST_PHASE_0R_PACKET_0R_B_EVALUATION_2026-05-12.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_0R_PACKET_0R_B_EVALUATION_2026-05-12.md:1) for source-value extraction and non-promotion rationale
3. [REPO_LICENSE_TRACKING.md](C:/HyperTwist/docs/REPO_LICENSE_TRACKING.md:1) for license, attribution, notice, and provenance obligations
4. [HYPERTWIST_PHASE_2R_PACKET_2R_A_OWNERSHIP_AND_ACCEPTANCE_CONTRACT_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_2R_PACKET_2R_A_OWNERSHIP_AND_ACCEPTANCE_CONTRACT_2026-05-13.md:1) for recognition-anchor dependency boundaries
5. [HYPERTWIST_PHASE_2R_PACKET_2R_B_OWNERSHIP_AND_ACCEPTANCE_CONTRACT_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_2R_PACKET_2R_B_OWNERSHIP_AND_ACCEPTANCE_CONTRACT_2026-05-13.md:1) for browser-side and XR support-plane dependency boundaries
6. [HYPERTWIST_PHASE_1R_RETAINED_SET_CONTRACT_AND_HANDOFF_2026-05-13.md](C:/HyperTwist/docs/HYPERTWIST_PHASE_1R_RETAINED_SET_CONTRACT_AND_HANDOFF_2026-05-13.md:1) for retained-set routing

Document responsibilities are strict:

- `0R-B` owns source-value extraction and exclusion rationale
- `REPO_LICENSE_TRACKING.md` owns repo-row legal detail
- `2R-A` owns the retained recognition anchors
- `2R-B` owns the primary support-plane owners
- this packet owns the residual `0R-B` adjunct and alternative-support rows

## Packet licensing snapshot

- `MIT`: `cahidenes/rubiks-cube-solver`, `tentone/rubix-solver`, `NuiLab/code-vr`
- `BSD-style permissive`: `pissang/claygl`
- `BSD-3-Clause`: `pissang/clay-viewer`

## Packet result

`2R-C` freezes the following routing:

- `cahidenes/rubiks-cube-solver` and `tentone/rubix-solver` are now a retained recognition-comparison adjunct lane, not a primary recognition lane
- those two rows may widen only later through `Phase 6R-E`, after the retained recognition anchors are already fixed
- `NuiLab/code-vr` is now a retained symbolic-to-spatial XR pedagogy experiment lane only
- `NuiLab/code-vr` may widen only later through `Phase 6R-F`, after the retained knowledge and XR support lanes already exist
- `pissang/claygl` and `pissang/clay-viewer` are now an optional alternative browser comparison lane beneath the retained browser stack
- those two rows may widen only later through `Phase 3R-G`, and only if the primary retained browser stack leaves a real gap
- none of these rows are newly proven live in checked Unreal surfaces

Important correction:

- all retained `0R-B` rows now have explicit ownership and acceptance packetization
- the earlier inherited routing for the final five residual `0R-B` rows is now superseded
- `cahidenes/rubiks-cube-solver` and `tentone/rubix-solver` are not general `Phase 3R` permissive implementation candidates
- `NuiLab/code-vr` is not the practical browser XR runtime owner
- `pissang/claygl` and `pissang/clay-viewer` are not equal alternatives to the primary retained browser stack

Implementation entry result:

| Repo or lane | Ownership class | Earliest widening phase | Packet entry |
| --- | --- | --- | --- |
| `cahidenes/rubiks-cube-solver` | face-placement and cube-string comparison adjunct | `Phase 6R` | `6R-E` |
| `tentone/rubix-solver` | native capture and quad/color comparison adjunct | `Phase 6R` | `6R-E` |
| `NuiLab/code-vr` | symbolic-to-spatial XR pedagogy experiment donor | `Phase 6R` | `6R-F` |
| `pissang/claygl` | alternative browser `3D` comparison substrate | `Phase 3R` only if a real gap remains | `3R-G` |
| `pissang/clay-viewer` | alternative browser viewer/editor comparison sidecar | `Phase 3R` only if a real gap remains | `3R-G` |

## Residual-lane ownership matrix

| Domain | Primary owner from this packet | Explicit support owner | Explicitly denied owner |
| --- | --- | --- | --- |
| Face-placement and cube-string comparison adjunct | `cahidenes/rubiks-cube-solver` | `tentone/rubix-solver` | either repo as the primary recognition/calibration owner |
| Native capture, quad sorting, and color-threshold comparison adjunct | `tentone/rubix-solver` | `cahidenes/rubiks-cube-solver` | either repo as the product recognition shell |
| Symbolic-to-spatial XR pedagogy experiment | `NuiLab/code-vr` | `pmndrs/xr` as the practical XR support owner | `NuiLab/code-vr` as the browser XR runtime owner |
| Alternative browser `3D` comparison substrate | `pissang/claygl` | `pissang/clay-viewer` | `pissang/claygl` as the primary browser `3D` substrate over `mrdoob/three.js` |
| Alternative browser viewer/editor comparison sidecar | `pissang/clay-viewer` | `pissang/claygl` | `pissang/clay-viewer` as the primary presentation/editor owner over `google/model-viewer` |

## Repo contracts

### `cahidenes/rubiks-cube-solver`

Ownership granted:

- first-party face-orientation fill and cube-string assembly comparison contract
- lightweight sticker-bookkeeping and HSV-sampling comparison contract
- optional fast-recognition adjunct for two-opposite-corner capture assumptions

Ownership denied:

- do not let this repo displace `kkoomen/qbr` as the calibration and primary capture owner
- do not let this repo displace `vivaansinghvi07/rubix-cube-solver` as the reconstruction and correction companion
- do not let its webcam shell or `kociemba` handoff become the retained product boundary

Acceptance markers before widening may start:

- define a first-party face-placement comparison contract that consumes normalized face payloads from the retained recognition stack
- define a first-party cube-string assembly cross-check contract with orientation, completeness, and divergence outputs
- define a low-confidence or disagreement-reporting surface between the primary recognition path and the adjunct comparator
- explicitly record that the two-opposite-corner assumption is optional comparison logic, not a product-wide invariant

Earliest widening route:

- `Phase 6R / Packet 6R-E`

### `tentone/rubix-solver`

Ownership granted:

- first-party native quad-sorting, square-mask, and color-threshold comparison contract
- native cube-face array and local move/state-mutation comparison contract
- native capture benchmark boundary for comparing Python or browser recognition paths

Ownership denied:

- do not let the brute-force solve shell become an owned HyperTwist behavior
- do not let this repo displace the retained recognition anchors as primary recognition owners
- do not let its local camera shell become a retained product surface

Acceptance markers before widening may start:

- define a first-party native comparison contract for quad detection, center sorting, color-threshold sampling, and face completeness
- define a payload-compatibility contract between native comparison output and the retained recognition stack
- explicitly exclude the brute-force solve shell from owned functionality
- define whether native comparison is used for validation, side-by-side benchmarking, or bounded fallback only

Earliest widening route:

- `Phase 6R / Packet 6R-E`

### `NuiLab/code-vr`

Ownership granted:

- first-party symbolic-to-spatial pedagogy experiment contract
- AST or graph-to-scene representation experiment boundary
- multi-process teaching-sidecar concept boundary for parse/export/runtime separation

Ownership denied:

- do not treat this repo as a direct product donor for HyperTwist
- do not let it own the practical browser XR runtime, which remains with the retained `pmndrs/xr` lane
- do not transplant its engine shell, competition shell, or language-specific product assumptions into HyperTwist

Acceptance markers before widening may start:

- define an optional symbolic-to-spatial teaching-experiment contract separated from core product behavior
- define an import/export boundary from first-party pedagogical structures into a spatial scene representation
- define the dependency boundary on the retained XR support stack rather than letting this repo own that stack
- explicitly record that language-specific parsing examples are concept references, not direct implementation targets

Earliest widening route:

- `Phase 6R / Packet 6R-F`

### `pissang/claygl`

Ownership granted:

- first-party optional alternative browser `3D` comparison substrate contract for narrow sidecars
- low-level renderer, scene, material, camera, control, picking, and compositor comparison boundary for browser-side support gaps

Ownership denied:

- do not let this repo replace `mrdoob/three.js` as the primary browser `3D` substrate
- do not let it expand into gameplay, puzzle rendering, or runtime-foundation ownership
- do not widen this lane merely because it is permissive; a real gap must exist first

Acceptance markers before widening may start:

- define explicit gap-trigger criteria proving the retained `three.js` stack is insufficient for a narrow support surface
- define a no-displacement rule that keeps this lane as comparison or optional support only
- define which narrow sidecar or explainer surface would justify alternative substrate use before any implementation starts

Earliest widening route:

- `Phase 3R / Packet 3R-G`

### `pissang/clay-viewer`

Ownership granted:

- first-party optional alternative browser viewer and editor comparison sidecar above `pissang/claygl`
- picking, hotspot, animation preview, environment, lighting, and effect-preset comparison contract

Ownership denied:

- do not let this repo replace `google/model-viewer` as the primary browser presentation and compact editor lane
- do not let it expand into gameplay, simulator, puzzle-renderer, or runtime-foundation ownership
- do not widen it without a concrete comparison case that the primary browser viewer lane cannot satisfy cleanly

Acceptance markers before widening may start:

- define explicit comparison criteria against the retained `google/model-viewer` lane
- define the bounded sidecar or preview workflow that would justify an alternative viewer/editor lane
- define the no-displacement rule that keeps this lane subordinate even if it is later used
- record that the `baidu/san` dependency context remains folded as commodity framework context, not a separate donor lane

Earliest widening route:

- `Phase 3R / Packet 3R-G`

## Dependency order

The packeted dependency order is now explicit:

1. `cahidenes/rubiks-cube-solver` and `tentone/rubix-solver` may widen only after the retained recognition anchors from `2R-A` are fixed, because they are comparison adjuncts rather than primary owners
2. `pissang/claygl` and `pissang/clay-viewer` may widen only after the primary browser-side viewer and substrate lanes from `2R-B` already exist and still leave a real gap
3. `NuiLab/code-vr` may widen only after both the retained knowledge lane and the retained XR support lane already exist, because its value is experimental symbolic-to-spatial pedagogy rather than practical runtime ownership

## Packet-close result

`Phase 2R-C` is now closed as the ownership and acceptance authority for the final residual `0R-B` rows above.

This closes `Phase 2R` for the retained permissive set.

The next bounded move is `Phase 3R-B`: widen `Hypercubers/hypercubing.xyz` as the retained knowledge, curriculum, notation, and community lane while preserving the landed `Aarav2709/KubeTimr` timer subsystem through its `3R-A` packet.
