AEROSIM-TS-77
Apply governed wind conditions to aircraft motion
The deterministic runtime applies the frozen wind vector and configured variation to aircraft forces at each fixed step.
- Verified flow state
- Done
- Owner
- AeroSim Architecture and Delivery
- Feature
- AEROSIM-FT-10
- Component
- @corp-v1-aerosim/flight-core — deterministic wind sampler and force integration
- Repository
- corp-v1-aerosim/corp-v1-aerosim
Delivery scope
Implement sampleWind(snapshot, simulationTick): WindSample using seeded deterministic phase and apply relative air velocity (aircraft velocity minus WindSample.windWorldMps) to TASK-0001 drag/lift calculations. A gust is sampled only from snapshot seed, amplitude, period, and simulationTick; no wall clock or frame delta enters physics.
Implementation contract
Implementation artifacts
- packages/flight-core/src/environment/sample-wind.ts
- packages/flight-core/src/physics/relative-air-velocity.ts
- packages/flight-core/test/environment/wind-effects.spec.ts
Inputs
- EnvironmentSnapshotV1, uint64 simulationTick, and AircraftKinematicState.velocityMps; sampleWind receives no mutable random generator or wall-clock time.
Outputs
- WindSample {simulationTick,steadyWindWorldMps,gustWorldMps,windWorldMps} and RelativeAirVelocity {worldMps,speedMps}; both are passed into FlightForceInput for the same tick.
Failure boundaries
- Throw WindModelError(code='ENVIRONMENT_SNAPSHOT_INVALID') for unsupported schema, digest mismatch, or non-finite wind/gust fields.
- Throw WindModelError(code='SIMULATION_TICK_INVALID') for a negative, fractional, or regressing tick.
- Throw WindModelError(code='GUST_PERIOD_INVALID') when gustPeriodTicks is not a positive integer.
- Stop the simulation step with WIND_FORCE_NON_FINITE if wind sampling or relative-air calculation produces a non-finite value; do not advance aircraft state.
Excluded scope
- Wind collision geometry, rotor wake, terrain-induced flow, stochastic turbulence, precipitation forces, and visual effects are excluded.
Verification steps
- Run packages/flight-core/test/environment/wind-effects.spec.ts.
- Assert calm, headwind, tailwind, and crosswind committed vectors, including expected relative-air speed/direction and resulting force change.
- Repeat 3,600 gust samples with the same snapshot/ticks and assert exact sample equality; change only the seed and assert a changed phase with unchanged bounds.
- Inject invalid snapshot schema/digest, tick, gust period, and non-finite values; assert exact failure and no state advancement.
Traceability
Requirements
Dependencies
- AEROSIM-TS-76Canonical ID: TASK-0076
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: final application PR #97 reviewed head 5ef9244af0387dd31e49ffbda115dd9c9fa60ae5 passed exact-head application validation run 3961, merged as 09628fbb828380fbe159be7530da26f4bbf02129, and integration runs 3962 and 3963 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.