Skip to main content

AEROSIM-TS-90

Project task

Compose and verify the chase-camera flight viewport

The representative viewport keeps the aircraft, flight direction, and nearby hazards legible while the chase camera follows the aircraft within the declared latency budget.

AEROSIM-TS-90Canonical ID TASK-0090
Verified flow state
Done
Owner
AeroSim Architecture and Delivery
Component
Web Application — Three.js flight viewport composition and camera verification
Repository
corp-v1-aerosim/corp-v1-aerosim

Delivery scope

Implement applications/web/src/flight/viewport/chase-flight-viewport.tsx, applications/web/test/flight/chase-flight-viewport.browser.spec.ts. Consume only the inputs listed in this contract, publish only its listed outputs, enforce every failure boundary before commit, and prove the listed exclusions remain unchanged through the verification steps.

Implementation contract

Implementation artifacts

  • applications/web/src/flight/viewport/chase-flight-viewport.tsx
  • applications/web/test/flight/chase-flight-viewport.browser.spec.ts

Inputs

  • PrimaryCameraState for the active attempt and its matching AircraftFrame.
  • FlightSceneSnapshot containing controlled-aircraft and nearby-hazard render handles with bounding volumes.
  • FlightViewportConfig { widthPx, heightPx, nearMetres, farMetres, latencyBudgetMs } for each declared representative viewport and bounded heavy-scene fixture.

Outputs

  • A full-viewport render using PrimaryCameraState with the controlled aircraft in frame and current flight-direction and nearby-hazard cues rendered from the matching sourceStep.
  • LatencySample { attemptId, sourceStep, stateCommittedAt, framePresentedAt, elapsedMs, fixture } for every measured frame.

Failure boundaries

  • Do not present a frame when camera and aircraft attemptId or sourceStep differ; retain the prior valid frame and record ViewportFrameMismatch.
  • Reject zero/negative dimensions, invalid clipping planes, non-finite bounds, or a missing controlled-aircraft render handle before rendering.
  • Fail the browser contract when the controlled aircraft, direction cue, or in-range hazard is outside the viewport fixture, or when a latency sample exceeds FlightViewportConfig.latencyBudgetMs.

Excluded scope

  • Secondary-camera switching and camera registry ownership.
  • Changes to collision, aircraft motion, control commands, pause state, or completion state.

Verification steps

  • Run applications/web/test/flight/chase-flight-viewport.browser.spec.ts for every declared viewport against ordinary and bounded heavy-scene fixtures.
  • Assert camera/aircraft step matching, controlled-aircraft bounds inside the viewport, direction-cue visibility, and each in-range hazard intersection with the rendered frustum.
  • Capture state-to-present latency samples and compare every elapsedMs to the fixture latencyBudgetMs; inject mismatched steps, invalid planes, missing handles, and non-finite bounds and assert no misleading frame is presented.

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 #144 reviewed head 5d6574ede15972c771708ef2659aa5eb27d86e3e merged as 596f158768b10caa645d771e468e071bfbe7e798. The immutable chase viewport validates matching attempt/source-step identity, dimensions, clipping planes, render handles, finite bounds, frustum visibility, and state-to-present latency; retains the prior valid frame on mismatch; and renders controlled-aircraft, flight-direction, and nearby-hazard cues for ordinary and bounded heavy-scene fixtures without changing camera registry, motion, controls, pause, collision, or completion state. Focused viewport tests pass 9/9; canonical web suites pass 1,184/1,184; formatting, lint, typecheck, build, production audit, exact-head CI jobs 4133-4139, integration validation runs 4141 and 4143, and immutable image publication run 4144 passed. 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.