Reconcile CubeDesk timer trainer hierarchy
This commit is contained in:
parent
10132b0bb7
commit
1b9c09fde1
5 changed files with 219 additions and 9 deletions
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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. |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue