# Powered-flight fixture footprint gate This WORKBENCH-only addition measures the existing fixture-owned stock Mi8 before its single normal engine request. It is test safety, not production flight or HQ support implementation. No flight gain, axis, engine, health, fuel, or actor creation behavior is substituted. The previous 15 m clearance column did not cover the allowed 22 m centre drift. Even a 15 m footprint cannot be assumed from this airframe's simulation diameter: installed `VehPart_Mi8_rotor_main_base.et` has a 12 m damage sweep radius and 1.5 m thickness; `VehPart_Mi8_rotor_tail_base.et` has a 2.3 m sweep radius, 0.75 m thickness, and a tail centre-of-mass authored near z=-13.6 m. Centre of mass is not used as a substitute for the actual native bone/pivot position. `ERR_NativeFlightFootprint.Measure` requires the exact unarmed transport resource, a valid native simulation, exactly two simulation rotors, and one actual damage sweep for each rotor. It traverses the actual entity hierarchy iteratively, with limits of 256 entities, 16 levels and 512 unique hitzones; cycles, incomplete enumeration, absent sweeps and invalid/non-finite extents fail closed. Every renderable root/child model contributes all eight corners of its native world bounding box. Their greatest distance from the physics origin encloses that assembled hierarchy under any rigid orientation of the whole airframe. Each real damage sweep contributes its native `PointInfo.GetWorldTransform` pivot and public `GetRotorRadius`. Its known stock thickness is included; there is no public thickness getter. The exact stock resource and expected public radii are checked. The world transform's Frobenius norm bounds stretching even without assuming an orthonormal basis. Distance to pivot plus transformed radius plus transformed thickness conservatively encloses the full one-sided rotor cylinder, including every rotor rotation. Native simulation rotor local pivots and radii independently contribute another bound. The maximum of model, damage-sweep and simulation bounds is the final measured sphere radius. The pad's cylinder check and swept box now have 40 m horizontal radius/half-width; the swept-box top moves from 35 to 60 m to contain the conservative sphere at the existing maximum flight height. The unchanged 208 coarse/refinement candidates, 0.8 m terrain-height variation limit, and native collision rejection remain. The drift abort tightens to 8 m. Qualification requires measured radius plus initial settled drift from the selected pad plus 8 m travel plus 1 m margin to fit inside 40 m; the measured radius must also be below 32 m. Initial height plus 18 m flight height plus radius plus 1 m must fit below 60 m. Thus an assumed 15 m footprint is never certified. Both engine-off state and actual qualification are required before engine start. Home telemetry is then based on the measured physics origin; no transform is changed. ## Limits and evidence This is a bound on the measured assembled models and complete rotor envelopes, independent of whole-aircraft yaw/pitch/roll and rotor rotation. It does not certify future deformation, detached debris or other scene actors moving into the corridor. No such condition is turned into successful flight evidence. The native `TraceCilinderUtil` is only four diagonal traces, not a filled-volume cylinder sweep. The actual `TraceBox` with ENTS|WORLD supplies the filled-volume check from pad height2 m upwards. Near-ground terrain/objects below that height retain the pre-existing slope/contact/diagonal-query limitations; this helper does not claim comprehensive terrain or dynamic obstacle avoidance. Enlarging the box can legitimately cause more pad refusals. Do not shrink the measured bound, loosen the gate, or reuse a best-effort candidate to obtain a pass. Four new local geometry/source tests pass, as do the existing four flight policy tests and the 208-candidate pad geometry check. These execute extracted rule bodies as C++ and verify source invariants. Native helper compilation, actual hierarchy/hitzone enumeration, real footprint measurements and any powered flight remain unverified until the parent runs the targeted native fixture. ## Coordinate correction after 100422 The measured center/basis now comes from the actual aircraft entity's `GetWorldTransform`, in the same world space as model bounds and damage-sweep PointInfo pivots. The simulation method documents internal physics space and returned identity/origin zero in 100422 despite physical placement at the airport. Using that return as a world center would correctly make the old guard refuse wildly separated bounds, but would measure incompatible coordinate spaces. The correction changes the read API, never the entity, and retains every footprint/clearance bound. Native simulation rotor transforms remain local as their API documents. Qualification of the complete measured envelope still awaits the next native run.