AEROSIM-TS-150
Normalize all production aircraft presentation assets
Every one of the nine governed aircraft assets enters flight through one validated production presentation contract with deterministic centre, scale, forward/up axes, render anchor, collision anchor, and cockpit anchor metadata.
- Verified flow state
- Done
- Owner
- AeroSim Architecture and Delivery
- Feature
- AEROSIM-FT-48
- Component
- Web Application — production aircraft presentation contract
- Repository
- corp-v1-aerosim/corp-v1-aerosim
Delivery scope
Define and consume one production aircraft-presentation manifest for all nine assets. Normalize source-space bounds into authored flight-space dimensions and orientation before rendering; carry explicit model, render, collision, camera-target, and cockpit anchors; reject missing or non-finite metadata instead of falling back to raw glTF transforms. This Task owns aircraft presentation only and does not implement camera motion, world transforms, controls, route composition, or acceptance orchestration.
Implementation contract
Implementation artifacts
- corp-v1-aerosim/corp-v1-aerosim:assets/manifests/*.json
- corp-v1-aerosim/corp-v1-aerosim:applications/web/src/flight/assets/AircraftModel.tsx
- corp-v1-aerosim/corp-v1-aerosim:applications/web/src/flight/assets/aircraft-presentation-contract.ts
- corp-v1-aerosim/corp-v1-aerosim:applications/web/test/flight/aircraft-presentation-contract.spec.ts
Inputs
- RootAtSkic authorized Wave 33 correction work in Discord message 1549867630800666695 and then asked the exact completeness question in message 1549881095363760179; this admission supplies the missing repair Tasks without modifying the separately claimed TASK-0149.
- Deployed application source ab085692e2ed70bdb6525044b4ca91cc48a27478 for product 1.0.0.1; release 1.0.0.1 remains deployed, human acceptance FAILED, production REJECTED, and a replacement release is required.
- Ordinary-user UAT evidence: /opt/data/corp-v1-aerosim-releases/workspace/uat-1.0.0.1-training-airfield-rerun/report.md and report.json (12/12 failed), /opt/data/corp-v1-aerosim-releases/workspace/uat-1.0.0.1-coastal-range/uat-report.md and uat-report.json (12/12 failed), and /opt/data/corp-v1-aerosim-releases/workspace/uat-1.0.0.1-mountain-valley/report.md and report.json (12/12 failed). All three runs prohibit forced clicks, hidden-input interaction, DOM/state mutation, direct API setup, or other bypass.
- Diagnosed root-cause records: /opt/data/cache/delegation/subagent-summary-0-20260916_203916_911368.txt, /opt/data/cache/delegation/subagent-summary-1-20260916_203916_911707.txt, /opt/data/cache/delegation/subagent-summary-2-20260916_203916_911857.txt.
- Root-cause summary 0 lines 9-16: AircraftModel.tsx mounts raw asset.scene while F-14 bounds are 191.5 × 55.6 × 195.5 m with centre x=-149.0, Cube.008 is 930.8 × 424.6 × 759.1 m with centre near (13.5, 541.1, -734.9), and the remaining aircraft are roughly 7–22 m.
- Coastal UAT J01/J02/J09 and Mountain Valley J01/J02 show tiny, clipped, or giant aircraft; TASK-0146 passed only because its isolated quality viewer recentered and camera-fit assets outside production.
Outputs
- One schema-validated aircraft presentation record for each of the exact nine production aircraft IDs.
- Production rendering consumes normalized centre, scale, forward/up axes, render/collision/camera/cockpit anchors and no longer mounts raw source transforms as flight transforms.
- A deterministic all-nine acceptance table records authored dimensions, axes, anchors, and validation result.
Failure boundaries
- Fail closed when any of the nine assets is absent, duplicated, unlicensed, untraceable, non-finite, outside the governed dimension envelope, lacks an explicit forward/up axis, or lacks required anchors.
- Fail if isolated test-only recentering or camera fitting makes acceptance pass while the production renderer still consumes raw asset.scene transforms.
Excluded scope
- No application implementation is performed by this admission change.
- Do not rewrite TASK-0149, infer a router-retention defect, report working Menu Restart as failed, classify static STALL SPEED 140 KT specification text as an active warning, or broaden governed interaction scope beyond the exact interaction semantics stated here.
Verification steps
- Tests first: add failing contract, malformed-metadata, and production-consumption tests for all nine asset IDs before changing the renderer or manifests.
- Run all-nine production-path bounds/orientation probes and assert each normalized asset is centred at its authored render anchor, faces the same forward axis, uses the same up axis, and exposes finite collision, camera-target, and cockpit anchors.
- Launch every aircraft through the real browser path and assert recognizable aircraft pixels and bounded screen-space coverage without test-only transforms. No force-click, hidden input, direct state/DOM mutation, fixture-only viewer, API setup, or browser bypass is acceptance evidence.
Traceability
Acceptance evidence
Verified delivery: all nine governed aircraft use one production presentation contract with measured source bounds, uniform authored dimensions, explicit axes, and finite render, collision, camera-target, and cockpit anchors; the production renderer fails closed on invalid metadata and consumes the normalized presentation root; ordinary visible-control browser acceptance passed 9/9; exact-head and post-merge integration CI passed; and immutable Nebula and Singularity images were published and read back from Harbor. Replacement-release acceptance remains Release-owned.
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.