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

## 2026-05-14 ownership-routing clarification

This packet records ownership and acceptance boundaries for retained residual rows.

It does not collapse the earlier evaluation states into blanket approval.

For every row in this packet, future instances must still keep separate:

- bookmarked = intake only
- queued = sequencing only
- source-read = evidence gathered
- retained = survived evaluation
- product-fit = separate judgment that the retained value belongs in HyperTwist direction
- implementation-authorized = explicit bounded phase entry approval
- implemented = actually landed in first-party product surfaces

Therefore:

- appearance in this packet is not a claim that earlier bookmark or queue position had merit value
- retained status here is not proof of broad product ownership beyond the bounded lane described here
- phase entry permission here is not proof that implementation has already happened

Use [HYPERTWIST_REPO_INTAKE_RETENTION_AND_PRODUCT_FIT_DOCTRINE_2026-05-14.md](C:/HyperTwist/docs/HYPERTWIST_REPO_INTAKE_RETENTION_AND_PRODUCT_FIT_DOCTRINE_2026-05-14.md:1) for the state vocabulary and [HYPERTWIST_MODEL_A_MODEL_B_COORDINATOR_DOCTRINE_2026-05-14.md](C:/HyperTwist/docs/HYPERTWIST_MODEL_A_MODEL_B_COORDINATOR_DOCTRINE_2026-05-14.md:1) for the authority-path reading rule.

## 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 if a narrower first-party recognition-comparison owner gap survives the landed `qbr`, `rubix-cube-solver`, and correction-stack seams
- `NuiLab/code-vr` is now a retained symbolic-to-spatial XR pedagogy experiment lane only
- `NuiLab/code-vr` may widen only later if a narrower first-party symbolic-to-spatial pedagogy gap survives the landed knowledge and browser-spatial/XR stack
- `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

## 2026-05-27 recognition-adjunct clarification

Later live product work now uses `Phase 6R-E` for the landed `ggml-org/whisper.cpp` speech transcript session packet.

Therefore, for the two retained recognition-comparison adjunct rows only:

- the older historical `6R-E` widening label from this packet is superseded
- current canon should use `retained recognition-comparison adjunct lane` wording instead
- no default widening packet is currently open
- any later widening must begin from a fresh first-party owner-gap proof note rather than from the stale packet label alone

The same supersession rule now also applies to `NuiLab/code-vr`:

- the older historical `6R-F` widening label from this packet is superseded for that row only
- current canon should use `retained symbolic-to-spatial XR pedagogy lane` wording instead
- no default widening packet is currently open for that row
- any later widening must begin from a fresh first-party pedagogy-gap proof note rather than from the stale packet label alone

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 | only if a later first-party gap is proven | no default packet open |
| `tentone/rubix-solver` | native capture and quad/color comparison adjunct | only if a later first-party gap is proven | no default packet open |
| `NuiLab/code-vr` | symbolic-to-spatial XR pedagogy experiment donor | only if a later first-party gap is proven | no default packet open |
| `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:

- no default packet is currently open; reopen only if a narrower face-placement, cube-string, or divergence-reporting gap is later proven above the landed recognition stack

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

- no default packet is currently open; reopen only if a narrower native quad, mask, or divergence-reporting gap is later proven above the landed recognition stack

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

- no default packet is currently open; reopen only if a narrower symbolic-to-spatial pedagogy gap is later proven above the landed knowledge and browser-spatial/XR stack

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