Skip to main content

AEROSIM-TS-25

Project task

Establish the React Three Fiber scene lifecycle

The Web Application owns one explicit React Three Fiber canvas and scene lifecycle with isolated low-level Three.js access.

AEROSIM-TS-25Canonical ID TASK-0025
Verified flow state
Done
Owner
AeroSim Architecture and Delivery
Component
Web Application — R3F flight scene
Repository
corp-v1-aerosim/corp-v1-aerosim

Delivery scope

Create the single R3F Canvas host for the flight route, own mount/resize/frame/unmount behavior in SceneRoot, and isolate manual Three.js renderer or resource operations in three-adapter with explicit dispose calls. Primary files: applications/web/src/flight/FlightCanvas.tsx, applications/web/src/flight/SceneRoot.tsx, applications/web/src/flight/three-adapter.ts, applications/web/tests/flight-scene-lifecycle.test.tsx.

Implementation contract

Implementation artifacts

  • applications/web/src/flight/FlightCanvas.tsx
  • applications/web/src/flight/SceneRoot.tsx
  • applications/web/src/flight/three-adapter.ts
  • applications/web/tests/flight-scene-lifecycle.test.tsx

Inputs

  • FlightCanvasProps {cameraId,onCreated,onFrameError}
  • Container ResizeObserver entries and R3F RootState lifecycle callbacks

Outputs

  • One mounted WebGL canvas and SceneRoot for the active flight route
  • Disposed geometries, materials, textures, controls, and animation subscriptions on unmount

Failure boundaries

  • Render FlightRenderError when WebGL context creation fails; do not start a frame subscription.
  • Treat a zero-sized container as suspended rendering and avoid invalid camera aspect or renderer size.

Excluded scope

  • Aircraft physics, generated terrain, production asset loading, and post-processing effects belong to FT-46 through FT-48 or later work.

Verification steps

  • pnpm --filter @aerosim/web test -- flight-scene-lifecycle.test.tsx
  • Mount and unmount FlightCanvas ten times; assert one canvas per mount and one dispose call per allocated fixture resource.

Traceability

Requirements

Dependencies

UI/UX applicability

non_visual

This Task owns technical or behavioral acceptance and does not claim direct visual conformance to the approved UI/UX package.

Acceptance evidence

Verified delivery: application PR #24 reviewed head f6f4f753f855fbdf5fc276ab13030954510e715b, exact-head validation task 1807 succeeded, merged as 2513379d67f8d848786e220baf092e0c046373ff; Wave 4 integrated application head e8bfe781d3295d445cbc46b297874f066cac8301 passed publish task 1832 and validate task 1833. Release completion verified on product 1.0.0.0 at GitOps revision 5d3712d89dfbf7dacd993348e55f497d126c7bf9 with Argo Synced/Healthy, exact image digests, authenticated API/database access, and three-world configured-flight acceptance.

Current evidence boundary

No current implementation, acceptance, release, or deployment evidence is claimed for this planned Task. Any prior implementation may be used only as prototype and discovery evidence.