diff --git a/docs/HYPERTWIST_CUBEDESK_TIMER_TRAINER_SESSION_HIERARCHY_RECONCILIATION_2026-05-27.md b/docs/HYPERTWIST_CUBEDESK_TIMER_TRAINER_SESSION_HIERARCHY_RECONCILIATION_2026-05-27.md new file mode 100644 index 0000000..76ae3f0 --- /dev/null +++ b/docs/HYPERTWIST_CUBEDESK_TIMER_TRAINER_SESSION_HIERARCHY_RECONCILIATION_2026-05-27.md @@ -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 diff --git a/docs/HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md b/docs/HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md index 29f55e7..d7c76d5 100644 --- a/docs/HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md +++ b/docs/HYPERTWIST_PHASE_0R_PACKET_0R_D_EVALUATION_2026-05-13.md @@ -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. diff --git a/docs/HYPERTWIST_PHASE_5R_CLEAN_ROOM_PROMPT_AND_HANDOFF_PACKET_2026-05-14.md b/docs/HYPERTWIST_PHASE_5R_CLEAN_ROOM_PROMPT_AND_HANDOFF_PACKET_2026-05-14.md index a6c463e..a537932 100644 --- a/docs/HYPERTWIST_PHASE_5R_CLEAN_ROOM_PROMPT_AND_HANDOFF_PACKET_2026-05-14.md +++ b/docs/HYPERTWIST_PHASE_5R_CLEAN_ROOM_PROMPT_AND_HANDOFF_PACKET_2026-05-14.md @@ -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: diff --git a/docs/REPO_LICENSE_TRACKING.md b/docs/REPO_LICENSE_TRACKING.md index ca1d291..b414201 100644 --- a/docs/REPO_LICENSE_TRACKING.md +++ b/docs/REPO_LICENSE_TRACKING.md @@ -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 diff --git a/docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md b/docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md index 38a3fb4..76610ea 100644 --- a/docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md +++ b/docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md @@ -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. |