Reconcile CubeDesk timer trainer hierarchy

This commit is contained in:
axiomlogicnexus 2026-05-27 03:27:55 +02:00
parent 10132b0bb7
commit 1b9c09fde1
5 changed files with 219 additions and 9 deletions

View file

@ -0,0 +1,157 @@
# 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

View file

@ -173,7 +173,7 @@ This packet does not treat all four restrictive rows as equal.
| Algorithm language, parser, AST, validation, and interchange semantics | `cubing/alg.js` | none in `0R-D` | Do not let this row collapse into `cubing/cubing.js` custody. Keep it as a focused clean-room lane for algorithm-language behavior only. |
| Compact embedded viewer/player shell and observer-driven playback behavior | `cubing/twisty.js` | none in `0R-D` | Do not let this row displace `cubing/cubing.js` for classic-cubing semantics or `Hyperspeedcube` for the hyper runtime. Keep it as a compact playback clean-room lane. |
| Melinda `2x2x2x2` random-state, solvability, and flat debug semantics | `HactarCE/2x2x2x2-Scrambler` | none in `0R-D` | Keep it narrow. Do not widen it into a general runtime, trainer shell, or full hyper-puzzle foundation. |
| Broad timer/trainer/stats/smartcube/match product-pattern extraction | `kash/cubedesk` | none in `0R-D` | Do not let the full CubeDesk app shell displace `Hyperspeedcube`, `qbr`, or the already-retained permissive trainer stack. Mine it selectively as a strategic clean-room donor. |
| Trainer-session, solve/session/stats, smart-cube workflow, and match product-pattern extraction | `kash/cubedesk` | none in `0R-D` | Do not let the full CubeDesk app shell displace `Hyperspeedcube`, `qbr`, or the already-retained permissive trainer stack. Mine it selectively as a strategic clean-room donor. |
## Packet outcome summary
@ -415,7 +415,33 @@ Non-promotion decisions and rationale:
Integration call:
- retain as the broad strategic clean-room donor for timer, trainer, solve/session/stats, smart-cube, and multiplayer product-pattern extraction
- retain as the broad strategic clean-room donor for trainer-session coupling, solve/session/training-session/game-session boundaries, integrated smart-cube workflow composition, and multiplayer product-pattern extraction
- use it in `Phase 2R` to freeze product workflow, data-model, timer-backend, smart-cube, drill-session, solve-detail, stats, and match-logic contracts
- refresh the Model A handoff so later Model B work is selective subsystem implementation rather than an accidental whole-app recreation
- if later implementation proceeds, schedule only bounded subsystem Model B work in `Phase 5R`, not a full app-shell clean-room clone
## 2026-05-27 selective hierarchy clarification
Later timer-family and trainer-family comparison sharpens how this row should
be read.
This packet should now be interpreted as:
- `kash/cubedesk` is not the primary same-slice owner for the already landed
first-party local timer subsystem
- `kash/cubedesk` is not the broader competitive timer, scramble-registry, or
smart-device benchmark/oracle owner either
- `Aarav2709/KubeTimr` keeps the landed `R1/F2` local timer lifecycle, split
capture/editing, session stats, persistence, and timer-scoped replay slice
- `cs0x7f/cstimer` keeps the broader restrictive `A1` benchmark/oracle slice
for competitive timer maturity, scramble breadth, and smart-device breadth
- `kash/cubedesk` keeps the retained clean-room owner posture for
trainer-session coupling, solve/session/training-session/game-session
boundaries, integrated smart-cube workflow composition, and multiplayer /
leaderboard product patterns
That later evidence does not reopen the valid repo-local extraction in this
packet.
It only narrows the exact cross-lane ownership wording for the retained
`CubeDesk` slices and the future clean-room implementation route.

View file

@ -11,6 +11,17 @@ Update on `2026-05-18`:
- the current next live restrictive repo inside that packet is `kash/cubedesk`
- the active per-repo execution file is `0400-kash-cubedesk.clean-room-prompt-sequence.md`
Update on `2026-05-27`:
- `kash/cubedesk` is no longer the default next live restrictive repo
- the row is already partially landed through bounded publication /
entitlement and local social challenge slices
- any future `kash/cubedesk` widening now requires repo-local reconciliation
against the corrected `KubeTimr` / `cstimer` / `qqTimer` hierarchy before a
new bound is reopened
- `0400-kash-cubedesk.clean-room-prompt-sequence.md` remains the canonical
per-repo route file when such a reopening is explicitly selected
## Status
This document is now the canonical `Phase 5R` clean-room prompt, operator, and
@ -41,10 +52,12 @@ Current truth:
- permissive and boundary-sensitive implementation is closed through `Phase 4R-F`
- the active restrictive phase packet remains `Phase 5R-A`
- `cubing/alg.js`, `HactarCE/2x2x2x2-Scrambler`, and `cubing/twisty.js` are already closed inside that packet
- the current next live restrictive repo is `kash/cubedesk`
- `kash/cubedesk` is the only remaining live restrictive repo in the accepted current order
- `kash/cubedesk` is no longer the automatic next live restrictive repo
- any future `kash/cubedesk` widening is reopened-later only and must pass
repo-local reconciliation first
That means the next work is:
That means the next restrictive work, if any later reopening is explicitly
selected, is:
1. source-exposed `Model A` refresh and strengthening per restrictive repo
2. clean `Model B` contributor passes per restrictive repo
@ -331,10 +344,11 @@ Boundary:
Primary retained lane:
- selective subsystem extraction only
- timer and trainer coupling
- trainer-session coupling above the existing first-party timer substrate
- timer-modal drill-session composition
- session domain
- analytics
- smart-device bridge
- integrated smart-cube workflow composition
- local persistence
- profile/public progression
- entitlement and gated features
@ -419,7 +433,8 @@ Current project truth:
- the active restrictive phase packet remains Phase 5R-A
- cubing/alg.js is already closed inside that packet
- HactarCE/2x2x2x2-Scrambler is already closed inside that packet
- the current next live restrictive repo is kash/cubedesk
- there is no default current next live restrictive repo
- kash/cubedesk may reopen only after repo-local reconciliation says a specific remaining bound is still justified
Your first operating references are:

View file

@ -912,6 +912,7 @@ Decision date:
- `2026-04-24`
- refreshed on `2026-05-13`
- refreshed on `2026-05-27`
- refreshed on `2026-05-21`
Current licensing judgment:
@ -1302,6 +1303,14 @@ Approved working posture:
- do not rely on a naive GPL-only assumption without resolving the contradiction
- keep the mirror in restrictive custody
- treat the repo as a clean-room strategic donor for product-subsystem extraction only
- preserve it as the primary clean-room donor for trainer-session coupling,
solve/session/training-session/game-session boundaries, integrated
smart-cube workflow composition, and multiplayer / leaderboard product
patterns
- do not blur this row into the already landed `Aarav2709/KubeTimr` local
timer subsystem slice
- do not blur this row into the broader `cs0x7f/cstimer` competitive timer,
scramble, and smart-device benchmark/oracle slice
### `cs0x7f/cstimer`
@ -1333,6 +1342,9 @@ Approved working posture:
behavior, and smart-device expectations
- preserve the distinction between the broader `cstimer` oracle slice and the
narrower already landed `KubeTimr` local timer subsystem slice
- preserve the distinction between this broader oracle slice and
`kash/cubedesk` as the retained clean-room owner for trainer-session,
solve/session, and integrated smart-cube workflow product patterns
- preserve its `0R-E` status as the primary restrictive timer/stats/scramble/smart-device oracle row
- if later implementation value remains high, route it through a dedicated clean-room handoff rather than ordinary donor intake

View file

@ -105,7 +105,7 @@ Do not collapse those three tiers into one undifferentiated "features" voice.
| Native Unreal training runtime | Implemented now | first-party runtime + kickoff note | Current runtime center is real, not speculative. |
| Training session orchestration and coaching cockpit | Implemented now | current training/coaching surfaces | `UHyperTwistTrainingSubsystem`, `UHyperTwistTrainingRuntimeLibrary`, `UHyperTwistTrainingPanelWidget`, and `UHyperTwistCoachDashboardWidget` are real first-party anchors. |
| Curriculum/catalog materialization and generated-mode launch | Implemented now | first-party catalog/training surfaces | Imported training packs and generated-mode launch flows are live. |
| Classic-cube timing, drill, and training-session flows | Implemented now | landed timer/training packets | Current training surface is broader than a timer-only shell, but the live timer implementation is still the narrower landed `KubeTimr`-derived local subsystem slice; broader competitive timer parity, smart-device breadth, and legacy session-format reference value remain retained under `cs0x7f/cstimer` and `cubing/qqTimer` rather than fully implemented. |
| Classic-cube timing, drill, and training-session flows | Implemented now | landed timer/training packets | Current training surface is broader than a timer-only shell, but the live timer implementation is still the narrower landed `KubeTimr`-derived local subsystem slice; broader competitive timer parity remains retained under `cs0x7f/cstimer`, trainer-session / solve-session / integrated smart-cube workflow pattern ownership remains retained under `kash/cubedesk`, and legacy session-format reference value remains retained under `cubing/qqTimer` rather than fully implemented. |
| Publication/leaderboard projection and entitlement gating | Implemented now | landed `kash/cubedesk` bounded packets | Publication and entitlement are live first-party training surfaces. |
| Local social challenge bundle | Implemented now | landed `kash/cubedesk` `Bound 5` | Challenge/social training slice is real, but bounded. |
| Classic-cube calibration and ordered face observation | Implemented now | landed `qbr` packet | Calibration contract and ordered face-observation contract are live. |