Execute a burn — Tsiolkovsky on-trigger, tank decrement, cycles bump
When a burn actually fires (planned or contingency), log it under Executed Burns. The trigger does several things atomically:
Inputs (you provide):
- TIG (actual)
- Burn duration (actual)
- Start mass (auto-pulled from last known state)
- Engine(s) used + Isp
- Propellant burned (measured from tank delta if telemetry, else computed)
Computed (auto):
- **Actual Δv** — Tsiolkovsky: ve × ln(m0 / m1) where ve = Isp × g0 and m1 = m0 - prop_burned
- **Δv budget impact** — subtracts from Available, recomputes Reserved
- **Tank state** — fuel decremented by prop_burned × fuel_fraction (from engine mixture ratio), oxidizer by ox_fraction, pressurant by ullage demand
- **Engine cycles** — each used engine's cycle count increments by 1
Saved record:
- All inputs + computed outputs are written to the burn doc
- Mission Events log gets a "Burn executed" entry with the Δv result
- If actual Δv differs from planned by more than the configured tolerance, an alarm fires (under-burn / over-burn)
Abort feasibility is recomputed live as tanks decrement. `propulsion_logExecutedBurn` does the same from chat.