AEROSIM-TS-74
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.
- Verified flow state
- Done
- Owner
- AeroSim Architecture and Delivery
- Feature
- AEROSIM-FT-1
- 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
- AEROSIM-TS-73Canonical ID: TASK-0073
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.