AEROSIM-TS-86
Define and validate aircraft handling archetype configurations
Each supported aircraft has one validated configuration for stability, responsiveness, speed, and control authority.
- Verified flow state
- Done
- Owner
- AeroSim Architecture and Delivery
- Feature
- AEROSIM-FT-9
- Component
- @corp-v1-aerosim/flight-core — aircraft handling catalogue
- Repository
- corp-v1-aerosim/corp-v1-aerosim
Delivery scope
Define AircraftHandlingConfigV1 and validate a versioned catalogue containing trainer and sport archetypes. Fields are massKg, inertiaTensorKgM2, wingAreaM2, liftSlope, zeroLiftDrag, inducedDragFactor, maxThrustN, pitch/roll/yawAuthorityNm, staticStability, angularDamping, maxOperationalSpeedMps, and controlResponseSeconds. Load by aircraftConfigId and return an immutable record with a SHA-256 content digest.
Implementation contract
Implementation artifacts
- packages/flight-core/src/config/aircraft-handling-config.ts
- packages/flight-core/src/config/aircraft-catalogue.ts
- packages/flight-core/test/config/aircraft-catalogue.spec.ts
- packages/flight-core/config/aircraft/trainer.v1.json
- packages/flight-core/config/aircraft/sport.v1.json
Inputs
- AircraftHandlingConfigV1 JSON with schemaVersion='1', unique aircraftConfigId, all named aerodynamic/mass/control fields, and values within schema-declared inclusive bounds.
Outputs
- AircraftConfigSnapshot {aircraftConfigId,schemaVersion:'1',contentDigest,config}; config is deeply frozen and its digest is computed from canonical key ordering.
Failure boundaries
- Reject with AIRCRAFT_CONFIG_SCHEMA_UNSUPPORTED when schemaVersion is not '1'.
- Reject with AIRCRAFT_CONFIG_INVALID and JSON-pointer error paths for missing, non-finite, non-positive, or out-of-bound fields.
- Reject catalogue startup with AIRCRAFT_CONFIG_ID_DUPLICATE when two files declare the same aircraftConfigId.
- Reject with AIRCRAFT_CONFIG_DIGEST_MISMATCH when loaded bytes do not match the digest bound into a FlightSessionConfig.
Excluded scope
- A user-editable tuning UI, runtime config mutation, real-aircraft certification data, damage variants, payload/fuel mass changes, and additional archetypes beyond trainer and sport are excluded.
Verification steps
- Run packages/flight-core/test/config/aircraft-catalogue.spec.ts.
- Validate trainer.v1.json and sport.v1.json, assert unique IDs, stable content digests, frozen output, and every required field.
- Mutate each bounded field below and above its limit, remove required keys, duplicate an ID, change schemaVersion, and alter bytes after digest capture; assert exact error code and path.
- Assert trainer and sport differ in at least staticStability, controlResponseSeconds, maxOperationalSpeedMps, and one control-authority field.
Traceability
Requirements
Dependencies
- AEROSIM-TS-75Canonical ID: TASK-0075
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 #28 reviewed head 685313b23543f77c301a364889a02f5a61b91a86, exact-head validation task 1842 succeeded, merged as e6212bf637045138da191634fe113285156426b3; Wave 5 integrated application head e6212bf637045138da191634fe113285156426b3 passed publish task 1856 and validate task 1857. 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.