# HyperTwist CubeDesk Timer / Trainer / Session Hierarchy Reconciliation - 2026-05-27

## Status

This document is the source-backed reconciliation note for `kash/cubedesk`
against the current timer/trainer family hierarchy across:

- `Aarav2709/KubeTimr`
- `cs0x7f/cstimer`
- `cubing/qqTimer`
- `kash/cubedesk`

It answers one narrow question:

- does `kash/cubedesk` reopen earlier landed timer code, or does it instead
  sharpen retained clean-room ownership before any future `CubeDesk` bound is
  reopened

Result:

- no product-code reopening is required
- yes selective authority backfill is required for the exact retained
  `CubeDesk` slices and the still-active clean-room route docs

## Source basis

- `C:\HyperTwist\docs\HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md`
- `C:\HyperTwist\docs\HYPERTWIST_PHASE_0R_PACKET_0R_E_EVALUATION_2026-05-13.md`
- `C:\HyperTwist\docs\HYPERTWIST_PHASE_3R_PACKET_3R_A_KUBETIMR_IMPLEMENTATION_2026-05-13.md`
- `C:\HyperTwist\docs\HYPERTWIST_TIMER_BENCHMARK_AND_IMPLEMENTATION_HIERARCHY_RECONCILIATION_2026-05-27.md`
- `C:\HyperTwist\docs\REPO_LICENSE_TRACKING.md`
- `C:\Workspaces\HyperTwist\repos.manifest.json`
- `C:\Workspaces\HyperTwist\clean-room-specs\kash-cubedesk.model-a.md`
- `C:\Workspaces\HyperTwist\clean-room-specs\0400-kash-cubedesk.clean-room-prompt-sequence.md`
- `C:\Workspaces\HyperTwist\mirrors\permissive\Aarav2709\KubeTimr\src\timingEngine.ts`
- `C:\Workspaces\HyperTwist\mirrors\permissive\Aarav2709\KubeTimr\src\statsEngine.ts`
- `C:\Workspaces\HyperTwist\mirrors\permissive\Aarav2709\KubeTimr\src\scrambleEngine.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cs0x7f\cstimer\src\js\timer.js`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cs0x7f\cstimer\src\js\stats\stats.js`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cs0x7f\cstimer\src\js\scramble\scramble.js`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cs0x7f\cstimer\src\js\hardware\gancube.js`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\qqTimer\README.md`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\cubing\qqTimer\docs\index.htm`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\schema.prisma`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\shared\solve.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\components\timer\Timer.tsx`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\components\timer\smart_cube\SmartCube.tsx`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\components\trainer\Trainer.tsx`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\db\trainer\query.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\db\solves\query.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\client\util\smart_scramble.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\server\resolvers\Stats.resolver.ts`
- `C:\Workspaces\HyperTwist\mirrors\restrictive\kash\cubedesk\server\match\pair\elo\elo_matching.ts`

## Slice-local verdict

| Slice | Primary authority | Secondary value kept | Route | Width | Result |
| --- | --- | --- | --- | --- | --- |
| Landed local timer lifecycle, inspection, split capture/editing, session stats, persistence, and timer-scoped replay | `Aarav2709/KubeTimr` | `kash/cubedesk` as trainer-modal / timer-shell composition pattern; `cs0x7f/cstimer` as competitive benchmark; `cubing/qqTimer` as legacy reference | `R1` | `F2` | unchanged live implementation owner |
| Competitive timer parity, scramble breadth, smart-device breadth, and import/export / session expectations | `cs0x7f/cstimer` | `kash/cubedesk` as product-pattern adjunct; `Aarav2709/KubeTimr` as permissive simplification; `cubing/qqTimer` as legacy reference | `R3` | `F2` | unchanged restrictive oracle / clean-room-later owner |
| Trainer-session coupling, seeded drill-session composition, solve/session/training-session/game-session domain, and integrated smart-cube workflow composition | `kash/cubedesk` | `Aarav2709/KubeTimr` as landed timer substrate; `cs0x7f/cstimer` as adjacent benchmark | `R3` | `F2` | retained `CubeDesk` owner slice sharpened |
| Multiplayer / leaderboard / local social challenge product patterns | `kash/cubedesk` | none required in this comparison | `R3` | `F2` | partially landed already through bounded packets |
| Legacy browser session-format and embedded scramble-menu reference | `cubing/qqTimer` | none required | `R5` | `F2` | retained narrow historical reference only |

## Why no timer-code reopening is required

### `Aarav2709/KubeTimr`

The current first-party timer code still matches the narrower landed local
subsystem slice.

`kash/cubedesk` has valuable timer-adjacent product patterns, but those are
composition patterns above the timer substrate rather than stronger same-slice
ownership for the already landed local timer lifecycle.

### `cs0x7f/cstimer`

`cs0x7f/cstimer` still owns the broader competitive timer benchmark/oracle
slice.

Its greater scramble breadth, rolling stats maturity, import/export behavior,
and smart-device breadth do not make it the stronger owner for
trainer-session-coupled drill flow or multiplayer/leaderboard product
patterns.

### `kash/cubedesk`

`kash/cubedesk` remains strongest for the integrated workflow families that sit
around the timer rather than replacing the timer substrate itself:

- trainer-session coupling
- seeded drill-session composition
- solve/session/training-session/game-session separation
- smart-cube scramble-completion and visualized post-scramble workflow
- leaderboard and local social challenge product patterns

That means `CubeDesk` should stay retained and selective, but it should not be
read as the default next timer-shell replacement lane.

## Selective backfill result

### Earlier surfaces reopened

- `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\kash-cubedesk.model-a.md`
- `C:\Workspaces\HyperTwist\clean-room-specs\0400-kash-cubedesk.clean-room-prompt-sequence.md`
- `C:\Workspaces\HyperTwist\clean-room-specs\0600-phase5r-clean-room-operator-sequence-and-handoff.md`

### Reason

Later source comparison sharpened the exact `CubeDesk` retained ownership:

- `kash/cubedesk` is not the primary owner for the landed local timer
  subsystem slice
- `kash/cubedesk` is not the broader competitive timer oracle slice either
- `kash/cubedesk` keeps trainer-session, solve/session, integrated
  smart-cube workflow, and multiplayer product-pattern ownership
- future `CubeDesk` widening must therefore start above the existing timer
  substrate instead of reopening a generic timer-shell replacement route

### Change class

- cross-lane authority changed for the exact retained `CubeDesk` slice wording
- clean-room route and bound wording changed for future `CubeDesk` work
- no repo-local extraction rollback
- no product-code change

### What remained valid

- the original `0R-D` extraction remains valid
- the landed `Phase 3R-A` timer packet remains valid
- the earlier `cstimer` oracle result remains valid
- the already landed `CubeDesk` publication / entitlement and local social
  challenge slices remain valid

### What changed

Future `CubeDesk` bound planning can no longer treat `timer shell tightening`
as the default first reopened bound.

Future `CubeDesk` widening must begin from trainer-session / timer-modal
composition or another still-unlanded retained `CubeDesk` slice, while
preserving `KubeTimr` and `cstimer` ownership for their already-correct timer
families.

## Operational answer

Before any new `CubeDesk` bound is reopened:

- do not reopen product code by default
- use the reopened `0400` route with the corrected bound wording and current
  landed-state reminders
- if later widening is justified, start above the existing timer substrate
  rather than reopening a generic timer-shell replacement route
