Skip to main content

AEROSIM-TS-74

Project task

Build the governed cross-browser motion-trace verifier

Identical builds, initial states, timed inputs, fixed timesteps, and seeds produce equivalent governed motion traces across every certified browser.

AEROSIM-TS-74Canonical ID TASK-0074
Verified flow state
Done
Owner
AeroSim Architecture and Delivery
Component
Web flight runtime — deterministic trace recorder and comparator
Repository
corp-v1-aerosim/corp-v1-aerosim

Delivery scope

Create MotionTraceRequest and MotionTraceReport contracts plus a Playwright trace runner for Chromium, Firefox, and WebKit. Replay one build SHA, AircraftKinematicState, AircraftHandlingConfig, EnvironmentSnapshot, seed, 60 Hz fixed step, and tick-indexed ControlCommand sequence; sample state every 60 ticks for 3,600 ticks and compare position, speed, attitude, and angular-rate drift against config/determinism-tolerances.json.

Implementation contract

Implementation artifacts

  • applications/web/src/flight/trace/motion-trace.ts
  • applications/web/test/flight/motion-trace.browser.spec.ts
  • applications/web/test/fixtures/motion-traces/basic-flight.json
  • config/determinism-tolerances.json

Inputs

  • MotionTraceRequest {buildSha,browser,seed,fixedStepSeconds,stepCount,initialState,aircraftConfigId,environmentSnapshot,commands:[{simulationTick,axes}]} with commands sorted by unique simulationTick.

Outputs

  • MotionTraceReport {requestDigest,samples:[{tick,positionM,speedMps,attitudeQuaternion,angularVelocityRadps}],maxDriftByField,passed,violations}; requestDigest binds the build, fixture, seed, timestep, and commands.

Failure boundaries

  • Mark the run failed with TRACE_FIXTURE_INVALID when stepCount is not 3,600, fixedStepSeconds is not 1/60, commands are unsorted/duplicated, or a referenced configuration is absent.
  • Mark the run failed with TRACE_NON_FINITE_SAMPLE at the first non-finite sampled component and include browser and simulationTick; do not compare later samples.
  • Mark the report passed=false with TRACE_TOLERANCE_EXCEEDED when any configured per-field drift or accumulated position drift is exceeded.
  • Mark the run failed with TRACE_BROWSER_INCOMPLETE when any of Chromium, Firefox, or WebKit does not produce a report for the same requestDigest.

Excluded scope

  • Bit-for-bit equality, browsers outside Chromium/Firefox/WebKit, GPU pixel comparison, network latency, and multi-aircraft simulation are not certified by this trace.

Verification steps

  • Run applications/web/test/flight/motion-trace.browser.spec.ts in Chromium, Firefox, and WebKit.
  • Replay basic-flight.json twice per browser; assert matching requestDigest, 61 samples, no non-finite values, and every drift field within config/determinism-tolerances.json.
  • Corrupt timestep, command order, one sample, and one browser result; assert TRACE_FIXTURE_INVALID, TRACE_TOLERANCE_EXCEEDED, and TRACE_BROWSER_INCOMPLETE respectively.
  • Persist each MotionTraceReport as test-results/motion-traces/<browser>.json for exact-revision review.

Traceability

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 #20 reviewed head beca8ca26c5781d52a6aed39ed8fae5b2cbd440b, exact-head validation task 1785 succeeded, merged as 98e377b71d37e5606af0e35d7bb08ccf83e63e0b; integrated Gitea Actions publish task 1786 and validate task 1787 succeeded. 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.