Summary
Adds explicit VTOL mode requests and capture-bound controller observations to the owned vehicle mission runtime. The initial-hover adapter acknowledges observed hover after 200 ms of both decision time and oldest-source coverage; it explicitly aborts unsupported cruise requests. Recorded observations are consumed once on the next mission tick and preserve replay. Plans without mode tasks retain their legacy recording shapes.
mission mode request -> qualified hover observation -> next-tick mission decisionA changed departure phase exposed residual contact sliding. Declared bounded contact friction now settles that fictional skid model without airborne braking, teleportation or a physical landing claim.
Evidence
- Retained public regressions reproduced missing runtime delivery, oldest-source overclaim, position/request mismatch, shortened dwell under variable lag and custom target-iterator substitution. Both independent review axes are clean after fixes.
- Native lint, application/runtime types, 139 focused tests / 4,179 assertions, hover CLI checks and the 90-page docs build pass.
- Exact-source local full suite: 1,596 passes, 27 skips, zero failures, 490,313 assertions, 1,623 tests across 205 files. Tracked source and pinned Bun 1.4.2 bytes remained unchanged.
- Exact-head Linux CI: all five jobs passed, 1,582 passes, 41 skips, zero failures, 490,290 assertions. Original single-download logs verify both standalone hover/host-loss reports and neutral independent outputs.
- Published by normal fast-forward as Chris, without coauthor trailers, to main03cedae. The initial immediate merge-state check raced GitHub bookkeeping; readback confirms this PR merged. No second push or workflow rerun occurred. Automatic main CI is separate and pending.
Merge Danger
Door: Two-way. No database migration.
Blast Radius: Owned VTOL mission policy, runtime observations and fictional ground contact. Full front/cruise/back control is a separate library experiment in #78. Physical actuation, complete VTOL, hybrid energy/abort recovery and upstream feature parity remain unqualified; #12 stays open.