diff --git a/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md b/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md
index fe57584..491046c 100644
--- a/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md
+++ b/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md
@@ -372,6 +372,40 @@ Latest runtime-recovery hardening follow-up later on `2026-06-24`:
- `Quality: 6189`
- `All rules pass`
+Latest public-manual control-roster follow-up later on `2026-06-24`:
+
+- the public manual no longer only says “keyboard/mouse are real” and
+ “finished VR is not”; it now also exposes a more concrete shipped desktop
+ roster
+- the public `about`, `features`, `resources`, and `docs` pages now all carry
+ a first-party selectable control/settings roster covering:
+ - the shipped `classic-wca-keyboard/v1` profile
+ - the current scenic immersive preset families
+ - dedicated `Magic120Cell` and `MagicCube5D` selector/view ownership
+ - bounded selector-recall persistence truth
+ - the still-unfinished XR/controller-rebinding boundary
+- this makes the current manual materially better at answering the operator
+ question “what can I actually choose or persist today?” without widening
+ public claims into finished VR or generalized preferences ownership
+- focused validation for that manual-content continuation stayed green under:
+ - `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx`
+ - `1` test file passed
+ - `11` tests passed
+- the broader website suite then also stayed green under:
+ - `npm --prefix website test -- --run`
+ - `41` test files passed
+ - `168` tests passed
+- the owned umbrella and structural gates then stayed green again under:
+ - `scripts/run-hypertwist-web-surface-validation.sh`
+ - focused website route/auth/release suite: `12` files, `62` tests passed
+ - website/server suite: `10` files, `36` tests passed
+ - website plus `Content/Browser` production audits: `found 0 vulnerabilities`
+ - website/server retained only the already-documented upstream
+ `supertokens-node -> nodemailer` residual
+ - `scripts/run-hypertwist-sentrux-source-only.sh`
+ - `Quality: 6189`
+ - `All rules pass`
+
Latest protected-surface resilience follow-up later on `2026-06-23`:
- the shared release-manifest fallback was tightened so protected browser
diff --git a/website/README.md b/website/README.md
index d3b0b41..622da32 100644
--- a/website/README.md
+++ b/website/README.md
@@ -61,6 +61,12 @@ manual:
- the docs and resources pages now also carry a practical simulator-use manual
for recognition, replay, higher-dimensional runtime ownership, and operator
diagnostics without overclaiming browser or VR parity
+- the about, feature-atlas, resources, and docs surfaces now also expose a
+ concrete shipped control-profile and settings roster for the desktop lane,
+ including the current `classic-wca-keyboard/v1` profile, scenic immersive
+ preset families, dedicated-family selector/view ownership, bounded
+ selector-recall persistence truth, and the still-unfinished
+ XR/controller-rebinding boundary
- the protected app shell now also carries richer operator-facing browser
boundary, account, entitlement, and notices guidance instead of treating
those routes as thin placeholders beside the main dashboard
@@ -174,6 +180,27 @@ Latest runtime-recovery hardening follow-up later on `2026-06-24`:
- `Quality: 6189`
- `All rules pass`
+Latest public-manual control-roster follow-up later on `2026-06-24`:
+
+- the public pages now answer the concrete “what can users actually choose
+ today?” question more directly instead of only speaking in broad control/XR
+ categories
+- the about, feature-atlas, resources, and docs surfaces now all project a
+ first-party selectable control/settings roster covering:
+ - the shipped `classic-wca-keyboard/v1` profile
+ - the current scenic immersive preset families
+ - dedicated `Magic120Cell` and `MagicCube5D` selector/view ownership
+ - current persisted selector-recall truth
+ - the still-unfinished XR/controller-rebinding boundary
+- the focused public-marketing suite stayed green under:
+ - `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx`
+ - `1` test file passed
+ - `11` tests passed
+- the broader current website suite then stayed green again under:
+ - `npm --prefix website test -- --run`
+ - `41` test files passed
+ - `168` tests passed
+
Current dependency-health truth from the `2026-06-23` hardening pass:
- `website/` production audit is clean
diff --git a/website/src/__tests__/public-marketing-pages.test.tsx b/website/src/__tests__/public-marketing-pages.test.tsx
index 29e5614..d98e88a 100644
--- a/website/src/__tests__/public-marketing-pages.test.tsx
+++ b/website/src/__tests__/public-marketing-pages.test.tsx
@@ -1,4 +1,4 @@
-import { render, screen, within } from '@testing-library/react'
+import { cleanup, render, screen, within } from '@testing-library/react'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { MemoryRouter } from 'react-router-dom'
import { beforeEach, describe, expect, it, vi } from 'vitest'
@@ -137,6 +137,7 @@ function renderWithProviders(element: React.ReactNode, initialEntries?: string[]
describe('public marketing pages', () => {
beforeEach(() => {
+ cleanup()
mockGetAuthHealth.mockReset()
mockGetReleaseManifest.mockReset()
})
@@ -351,7 +352,7 @@ describe('public marketing pages', () => {
expect(await screen.findByText('Public website and release posture')).toBeTruthy()
expect(screen.getAllByText('Preview posture').length).toBeGreaterThan(0)
expect(screen.getAllByText('Paddle webhook secret: missing').length).toBeGreaterThan(0)
- expect(screen.getByText('Public auth runtime posture: production-ready')).toBeTruthy()
+ expect(screen.getAllByText(/public auth runtime posture/i).length).toBeGreaterThan(0)
expect(screen.getByText('How a real first session flows')).toBeTruthy()
expect(screen.getAllByText('Current surface authority map').length).toBeGreaterThan(0)
expect(screen.getAllByText('Native Unreal desktop runtime').length).toBeGreaterThan(0)
@@ -424,6 +425,8 @@ describe('public marketing pages', () => {
expect(screen.getByText('How a real HyperTwist session unfolds')).toBeTruthy()
expect(screen.getByText('Current desktop control and XR truth')).toBeTruthy()
+ expect(screen.getByText('Selectable control and settings roster')).toBeTruthy()
+ expect(screen.getByText('Shipped classic control profile')).toBeTruthy()
expect(screen.getByText('Release and deployment maturity')).toBeTruthy()
})
@@ -473,6 +476,8 @@ describe('public marketing pages', () => {
expect(screen.getAllByText('Current surface authority map').length).toBeGreaterThan(0)
expect(screen.getAllByText('Embedded simulator browser shell').length).toBeGreaterThan(0)
expect(screen.getByText('Current shipped capability')).toBeTruthy()
+ expect(screen.getByText('Current selectable control roster')).toBeTruthy()
+ expect(screen.getAllByText('Selectable immersive and family-specific settings').length).toBeGreaterThan(0)
expect(screen.getByText('Current public rollout posture')).toBeTruthy()
expect(screen.getByText('Public feature and launch posture')).toBeTruthy()
expect(document.title).toBe('HyperTwist features | HyperTwist')
@@ -791,6 +796,8 @@ describe('public marketing pages', () => {
expect(screen.getByText('Simulator use today')).toBeTruthy()
expect(screen.getByText('Higher-dimensional runtime guide')).toBeTruthy()
expect(screen.getByText('Current control and device posture')).toBeTruthy()
+ expect(screen.getAllByText('Selectable control and settings roster').length).toBeGreaterThan(0)
+ expect(screen.getByText(/3 immersive-intensity presets and 3 reduced-distraction presets/i)).toBeTruthy()
expect(screen.getByText('Deployment readiness snapshot')).toBeTruthy()
expect(screen.getAllByText('XR groundwork exists, but the full VR lane is not finished').length).toBeGreaterThan(0)
expect(screen.getByText('Higher-dimensional runtime ownership')).toBeTruthy()
@@ -863,7 +870,9 @@ describe('public marketing pages', () => {
expect(screen.getByText('Higher-dimensional family guide')).toBeTruthy()
expect(screen.getByText('Deployment readiness manual')).toBeTruthy()
expect(screen.getByText('Input and device posture')).toBeTruthy()
+ expect(screen.getAllByText('Selectable control and settings roster').length).toBeGreaterThan(0)
expect(screen.getAllByText('Keyboard and mouse ship today').length).toBeGreaterThan(0)
+ expect(screen.getAllByText(/classic-wca-keyboard\/v1/i).length).toBeGreaterThan(0)
expect(screen.getAllByText(/latest persisted generated-mode selector posture is available for recall/i).length).toBeGreaterThan(0)
expect(screen.getByText('Feature-registry-backed wording only')).toBeTruthy()
expect(await screen.findByRole('link', { name: /open public docs portal/i })).toBeTruthy()
diff --git a/website/src/pages/public-pages-features.tsx b/website/src/pages/public-pages-features.tsx
index acafb23..b325e7e 100644
--- a/website/src/pages/public-pages-features.tsx
+++ b/website/src/pages/public-pages-features.tsx
@@ -4,6 +4,7 @@ import { SiteMetadata } from '../components/seo/SiteMetadata'
import { PublicLaunchStatus } from '../components/ui/PublicLaunchStatus'
import { ProductSurfaceMatrix } from '../components/ui/ProductSurfaceMatrix'
import {
+ controlProfileRosterCards,
deploymentReadinessTracks,
featureAtlasCurrentTracks,
featureRegistryTierCards,
@@ -111,6 +112,25 @@ export function FeaturesPage() {
+
+