---
path: /studio/isis/gaussian-splatting
surface: studio
domain: isis
auth:
  signed-in + studio entitlement (AAA-gated — segment `gaussian-splatting` in
  `AAA_ONLY_STUDIO_ROUTES`)
source: apps/oshun/web/src/app/studio/isis/gaussian-splatting/page.tsx
status: walked
last_walked:
  '2026-07-21 automated production-artifact walk (Playwright, one worker, zero
  retries) — 9/9 desktop and mobile scenarios passed, including auth/scope
  denial, exact BFF contracts, malformed and inflated response rejection, reload
  loss, touch containment, local renderer interaction, and applicable axe
  checks. The disposable database applied all 32 migrations and was dropped
  after the walk.'
---

# Isis Gaussian Splatting

## Purpose

Browser-local 3D Gaussian Splatting review workspace: a client-side expert shell
with real typed `.ply`/`.splat`/`.igsplat` parsing, compression roundtrips,
coverage-driven LOD, mesh extraction, animated 4D playback, and WebGPU/fallback
profiling. Scene inputs, derived data, and displayed telemetry exist only in the
current browser tab; the shell creates no retained scene, artifact, telemetry,
provider-execution, approval, governance, or release record.

The embedded admin lane — the **Request-local Splat Storage Preview** — calls
`/v1/admin/isis/gaussian-splatting` for a deterministic, non-authoritative
float32 storage-footprint calculation. It accepts caller-supplied splat count
and spherical-harmonics degree, retains nothing beyond the request, and fails
closed on missing, extra, malformed, or authority-inflated response data.

## Entry points

- Breadcrumb in-page: `Studio` → `Isis 3D Generation` → `Gaussian Splatting`
- Sibling quick-actions from `/studio/isis/3d-generation`,
  `/studio/isis/texture-enhancement`
- Direct URL / bookmark (AAA entitlement required)

## Layout regions

`page.tsx` mounts `<ShellLayout active="studio">` with a breadcrumb panel, the
workspace, the Route Map, and sibling quick-actions.

- **Header**: shell header
- **Breadcrumb panel** (`data-isis-gaussian-splatting-breadcrumbs`): `Studio`
  (link) → `Isis 3D Generation` (link → `/studio/isis/3d-generation`) →
  `Gaussian Splatting` (`aria-current="page"`)
- **Workspace panel** (`data-isis-gaussian-splatting-workspace`):
  - `<h1>` (`WorkspaceHeading`) "Isis Gaussian Splatting Workspace"
  - Summary paragraph (`data-isis-gaussian-splatting-summary`)
  - **Client-side review shell** (real WebGPU algorithms, no `/v1` fetch):
    capability summary (`data-isis-gaussian-splatting-capability-summary`),
    WebGPU canvas (`data-isis-gaussian-splatting-canvas`), file picker
    (`data-isis-gaussian-splatting-file-picker`), viewer controls
    (`data-isis-gaussian-splatting-controls`), compression panel
    (`data-isis-gaussian-splatting-compression-*`), LOD panel
    (`data-isis-gaussian-splatting-lod-*`), mesh-extraction panel
    (`data-isis-gaussian-splatting-mesh-*`), telemetry
    (`data-isis-gaussian-splatting-telemetry`), hydration shell
    (`data-isis-gaussian-splatting-hydrating`), implementation notes
    (`data-isis-gaussian-splatting-implementation-notes`)
  - **Embedded admin lane** `StudioIsisGaussianSplattingStorageLane`
    (`data-gsl-lane`) with `<h2>` (`data-gsl-heading`) "Request-local Splat
    Storage Preview"
- **Route Map panel** (`data-isis-gaussian-splatting-route-map`):
  `<h2>Route Map</h2>` over `STUDIO_ISIS_GAUSSIAN_SPLATTING_ROUTE_MAP` (one
  mounted route and five documented-contract entries)
- **Sibling quick-actions panel**: `/studio/isis/3d-generation`,
  `/studio/isis/texture-enhancement`, `/studio`

## States

### Client-side review shell

- [ ] **GPU available / fallback** — WebGPU canvas renders; otherwise the shell
      shows its fallback notice
- [ ] **Hydrating** — deterministic server/client shell is shown until browser
      runtime capabilities and responsive stage dimensions can be measured
- [ ] **Ingest** — file picker accepts `.ply`/`.splat`/`.igsplat`; errors
      surface in `data-isis-gaussian-splatting-ingest-error`
- [ ] **Compression / LOD / mesh** — each panel runs its own client-side
      computation (loading + error sub-states, e.g.
      `data-isis-gaussian-splatting-compression-error`,
      `data-isis-gaussian-splatting-mesh-error`)

### Storage Planner lane (`data-gsl-lane`)

- [ ] **Loading** — `outcome === null`; `data-gsl-loading`
- [ ] **Unauthorized** — 401/403 admin-scope fail-closed;
      `data-gsl-unauthorized`
- [ ] **Error** — non-OK, malformed, partial, extra-key, or authority-inflated
      catalog; `data-gsl-error`
- [ ] **Ready (form)** — catalog present; `data-gsl-form` renders
- [ ] **Result** — after a plan POST, an exact echoed input and deterministic
      arithmetic render in `data-gsl-result` (`data-gsl-floats`, `data-gsl-mb`,
      `data-gsl-breakdown`, `data-gsl-sh`); malformed, inflated, or failed
      results render in `data-gsl-plan-error`

## Interactions

### Storage Planner form (`data-gsl-form`)

- [ ] **Storage payload** (`data-gsl-payload`) — splat count `1..50,000,000`
      plus SH degree `0..4`; the source-defined layout uses four-byte floats
- [ ] **Submit** (`data-gsl-submit`) —
      `POST /v1/admin/isis/gaussian-splatting/plan-storage`

### Client-side shell

- [ ] **File picker** (`data-isis-gaussian-splatting-file-picker`) — load a
      splat scene
- [ ] **LOD toggle** (`data-isis-gaussian-splatting-lod-toggle`)
- [ ] **Compression profile**
      (`data-isis-gaussian-splatting-compression-profile`)
- [ ] **Mesh-extraction profile** (`data-isis-gaussian-splatting-mesh-profile`)

### Route Map

- [ ] **Route-map articles** ×6 — one mounted calculator; scene ingest, renderer
      execution, artifact output, governance record, and release authority
      remain documented contracts only

### Sibling quick-actions

- [ ] **Open Isis 3D Generation workspace** → `/studio/isis/3d-generation`
- [ ] **Open Isis Texture Enhancement workspace** →
      `/studio/isis/texture-enhancement`
- [ ] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/gaussian-splatting` returns exactly
  `{generatedAt, planner, inputBounds, disposition}`; the rest of the workspace
  reads no BFF data and computes from browser-local inputs
- **Writes**: `POST /v1/admin/isis/gaussian-splatting/plan-storage` (per-splat
  layout + footprint), returning exactly `{ok, input, result, disposition}`
- **Disposition**: `request_local_non_authoritative_storage_footprint_preview`;
  persistence `none`, retention `request_only`, producer
  `caller_supplied_splat_count_and_sh_degree`, deterministic source-defined
  float32 layout, authoritative `false`
- **Realtime**: none; displayed measurements are browser-local and not retained
- **Caching**: storage lane uses client fetch on mount, `cache: 'no-store'`,
  `buildBffAuthHeaders()`
- **Auth/role check**: storage lane is admin-scoped, fail-closed (401/403);
  route gated on signed-in + studio entitlement (AAA segment)
- **Component sources**:
  - `apps/oshun/web/src/components/studio/StudioIsisGaussianSplattingWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisGaussianSplattingStorageLane.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisGaussianSplattingRouteMap.ts`

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- AAA gating: `libs/isis/entitlements/src/studio-boundary.ts`
- Sibling routes:
  - [`studio-isis-3d-generation.md`](./studio-isis-3d-generation.md)
  - [`studio-isis-texture-enhancement.md`](./studio-isis-texture-enhancement.md)

## Open questions / known gaps

- [ ] No durable scene registry, revision history, collaborative review record,
      artifact/export authority, provider execution, retained telemetry,
      governance approval, or release authority exists. Those capabilities need
      separate contracts and lifecycle evidence if required; this surface does
      not imply them.
