# HyperTwist Algorithm-Language And Training-Semantic Hierarchy Reconciliation - 2026-05-27

## Status

This document is the source-backed reconciliation note for the current
algorithm-language and training-semantic family across:

- `cubing/alg.js`
- the landed first-party `HyperTwistAlgorithm/*` owner lane
- the current first-party training-runtime consumer surfaces
- adjacent classic-cubing semantics and viewer/runtime lanes that must not
  absorb this donor

It answers one narrow question:

- does the current `cubing/alg.js` source require reopening the landed bounded
  first-party algorithm-language owner lane before any future semantic,
  consumer, or shell packet is considered

Result:

- no product-code reopening is required
- yes selective authority backfill is required so candidate-era metadata no
  longer understates the already-landed owner lane
- the exact current owner slice remains narrow: algorithm-language parser, AST,
  traversal, validation, keyboard mapping, and share/interchange semantics

## Source basis

- `C:\HyperTwist\docs\HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md`
- `C:\HyperTwist\docs\REPO_LICENSE_TRACKING.md`
- `C:\HyperTwist\docs\v6_5_deep_manual_pack\HyperTwist\FEATURE_REGISTRY.md`
- `C:\Workspaces\HyperTwist\repos.manifest.json`
- `C:\Workspaces\HyperTwist\clean-room-specs\cubing-alg-js.model-a.md`
- `C:\Workspaces\HyperTwist\clean-room-specs\outputs\cubing-alg-js.model-b-reconciled.md`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\README.md`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\parser.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\json.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\traversal.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\validation.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\keyboard.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\alg.js\src\url.ts`
- current first-party runtime and test authority under:
  - `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Public\HyperTwistAlgorithm`
  - `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Private\HyperTwistAlgorithm`
  - `C:\HyperTwist\UnrealHyperTwist\Source\UnrealHyperTwist\Private\HyperTwistTraining\HyperTwistTrainingRuntimeLibrary.cpp`

## Slice-local verdict

| Slice | Primary authority | Secondary value kept | Route | Width | Result |
| --- | --- | --- | --- | --- | --- |
| Algorithm-language parser, owned AST, traversal, validation, keyboard mapping, and share/interchange semantics | first-party `HyperTwistAlgorithm/*` lane grounded in `cubing/alg.js` | retained donor lineage only | `R3` | `F2` | unchanged live implementation owner |
| Training-runtime parse/store/serialize adoption of the active algorithm sequence | first-party training runtime | `cubing/alg.js` remains upstream lineage only | existing first-party route | `F2` | unchanged consumer owner |
| Broader classic-cubing semantics, puzzle-state ownership, and viewer/runtime shells | `cubing/cubing.js`, `cubing/twisty.js`, and first-party runtime owners | none required from `cubing/alg.js` | existing adjacent routes | `F2` | unchanged adjacent owners |

## Why no product-code reopening is required

### `cubing/alg.js`

The donor still owns the narrow algorithm-language center of gravity:

- parser boundary
- durable immutable AST family
- traversal and transform behavior
- validation profiles and structured issues
- keyboard-to-move mapping
- URL/share and structured interchange helpers

That retained slice is still the correct one. It does not widen into puzzle
state, runtime, viewer, device, or solver ownership.

### Landed first-party owner lane

The first-party owner lane is already live and closed in current code:

- public owner surfaces exist under `Public/HyperTwistAlgorithm`
- private implementation surfaces exist under `Private/HyperTwistAlgorithm`
- current training-runtime adoption is already wired through
  `UHyperTwistTrainingRuntimeLibrary::ParseAlgJs` and `SerializeAlgJs`
- the repo-local reconciled note already records `Bounds 1-4 closed`
- automation coverage exists in `HyperTwistAlgorithmAutomationTests.cpp`

That means the same-bound owner work is already landed. This pass does not find
an owner-side gap that justifies reopening it.

### Current training-runtime consumer seam

The checked consumer seam is narrow and appropriate:

- training runtime parses text through the first-party parser
- training runtime stores the active algorithm sequence in the training
  subsystem
- training runtime serializes back through the first-party serializer

That is consumer adoption above the owner lane, not evidence that the
algorithm-language lane itself is still incomplete.

## Selective backfill result

### Earlier packet reopened

- `C:\HyperTwist\docs\HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md`

### Earlier standing note reopened

- `C:\Workspaces\HyperTwist\clean-room-specs\cubing-alg-js.model-a.md`

### Manifest row reopened

- `C:\Workspaces\HyperTwist\repos.manifest.json`

### Additional canon reopened

- `C:\HyperTwist\docs\REPO_LICENSE_TRACKING.md`
- `C:\HyperTwist\docs\v6_5_deep_manual_pack\HyperTwist\FEATURE_REGISTRY.md`

### Reason

The landed lane itself was already correct. The stale part was the metadata:

- the canonical `Model A` handoff still described the row as not yet verified
  live
- the manifest row still preserved the older reset-era wording
- the tracker and registry were accurate at a high level but still too compact
  to express the exact narrow landed owner slice and the consumer-owner
  separation cleanly

### Change class

- repo-local extraction did not change
- landed owner interpretation was confirmed rather than reversed
- dependent canon was sharpened so the lane stays narrow and clearly closed
- no product-code change occurred

### What remained valid

- the restrictive `GPL-3.0-or-later` clean-room route remained valid
- the original `0R-D` decision to keep `cubing/alg.js` separate from
  `cubing/cubing.js` custody remained valid
- the repo-local `Bounds 1-4 closed` conclusion remained valid

### What changed

The dependent canon now makes the current landed role explicit:

- keep `cubing/alg.js` grounded first-party ownership inside
  `HyperTwistAlgorithm/*`
- keep training-runtime parse/store/serialize behavior as a consumer seam, not
  as proof that the owner lane is still open
- keep puzzle-state semantics, runtime ownership, and viewer/player ownership
  with their adjacent lanes
- do not reopen the closed `Bound 1` through `Bound 4` sequence by default

## Propagation result

### Feature registry

Updated.

The registry now says what is actually live: first-party algorithm-language
ownership is real for parser, AST, traversal, validation, keyboard mapping, and
share/interchange semantics, while training-runtime adoption remains a consumer
surface above it.

### Cross-lane doctrine

No doctrine wording change was needed.

This pass applied the existing `A/R/F` hierarchy; it did not change the
hierarchy rules themselves.

### Skillization

No doctrine or `SKILLS.md` change was needed.

This pass did not create or reopen any command or skill surface.

### Legal evidence

No license-status or mirror-custody change occurred.

The repo-row tracker, feature registry, manifest row, and canonical handoff
status were sharpened instead.

## Operational answer

Before any future consumer-side semantic shell, registry, or broader
algorithm-facing packet is considered, the correct move was this authority
backfill first.

After this pass:

- do not reopen `Bound 1`, `Bound 2`, `Bound 3`, or `Bound 4`
- do not reinterpret training-runtime adoption as a same-bound owner gap
- if later work is justified, scope it as a new consumer-owner or shell packet
  above the closed algorithm-language owner lane
