0067 — Tractor / tow / Quantum Jump composition (Group E)¶
Status¶
Accepted.
Context¶
Three audit findings on cross-system movement composition. G-V3 (Roving Fleet Camp reachability) was already closed under ADR-0060. Real workload: two findings (X-D4, S-F3).
The existing tow-through-QJ rules in ../FEATURES/galaxy/sectors.md and ../FEATURES/gameplay/ships.md cover most destroyed-mid-Phase-N cases for the tow side. The gaps the audit identified:
- X-D4: combat damage to the WJ during QJ Phase 1 / Phase 2 isn't documented. The QJ commit validation list (
ERR_QJ_*codes) carries no in-combat rejection. What happens if an attacker engages a WJ that's mid-scan or mid-commit? - S-F3: framed as a "deadlock" — towed WJ locked in combat it can't escape. The current docs already say detach is unrestricted ("Tow lock-on requires both ships to be in
IN_SPACEstate (notIN_COMBAT); detach is unrestricted"), so the deadlock narrative is overstated, but the priority between tow lock and combat lock would benefit from explicit ratification.
Decision¶
X-D4 — QJ is uninterruptible by combat¶
Per the user pick, all three QJ phases proceed regardless of incoming combat. Combat damage during QJ phases applies to the WJ hull / shields normally; if hull reaches zero at any point, the standard destruction handler fires. No ERR_QJ_IN_COMBAT_LOCK validation is added to scan or commit endpoints.
Per-phase combat behaviour, documented in ../FEATURES/galaxy/sectors.md:
| Phase | WJ state | Combat damage handling |
|---|---|---|
| Phase 1 (scan) | Attackable; standard IN_SPACE |
Combat damage applies to hull / shields normally per ../SYSTEMS/combat-resolver.md. If hull → 0, scan aborts and standard destruction handler fires. |
| Phase 2 (commit window) | Attackable; IN_SPACE until Phase 3 transition |
Combat damage applies normally. If hull → 0, standard destruction handler fires; tow auto-detaches per existing rules; towed ship enters Drifting at destruction sector. |
| Phase 3 (HARMONIZING) | Invulnerable per ../DATA_MODELS/ships.md Ship status enum |
No combat possible. Phase 3 destruction commit fires at timer completion (1-hour harmonization window), not at attacker call time. |
The "Quantum Jump as combat escape" pattern this enables is intentional: a WJ pilot who manages to commit Phase 2 before destruction succeeds in escaping; one who doesn't, dies. The trade-off — WJ pilots get a meaningful escape vehicle; attackers must commit to a real engagement to deny the jump — fits the WJ's role as a high-cost, high-mobility ship per ADR-0029.
The existing destruction-during-Phase-2 rules in ships.md (tow auto-detaches, towed ship Drifting at destruction sector) already cover the "hauler destroyed mid-tow-QJ" case the audit called out. No new mechanic; just explicit documentation of damage handling per phase.
S-F3 — Tow + combat priority¶
The current ships.md rules already prevent the deadlock the audit named:
- Tow lock-on requires both ships in
IN_SPACE(notIN_COMBAT). - Detach is unrestricted — including from
IN_COMBATstate.
Adding an explicit priority statement to remove ambiguity: detach takes priority over combat lock. The towed pilot can break the tow at any moment, including while in combat; the attacker's combat lock does not pin the towed ship to the tow. The hauler can also break the tow at any moment; their combat lock does not pin them to the tow either.
What combat does affect on a tow in progress:
- Hauler destruction: tow auto-detaches; towed ship enters
Driftingat destruction sector (existing rule, preserved). - Towed-ship destruction: tow auto-detaches; hauler continues at base turn cost (existing rule, preserved).
- Combat damage that doesn't destroy: no effect on tow state. Hauler continues towing while taking fire; the towed pilot can choose to detach.
What combat does not do on a tow in progress:
- Combat lock on hauler does not auto-break tow (only destruction does).
- Combat lock on towed ship does not auto-break tow (only destruction does).
- Attacker actions cannot directly break a tow they aren't part of — only the hauler pilot or the towed pilot can detach voluntarily.
Doc clarification only; no schema change.
Consequences¶
- The QJ commit validation list stays as it is — no new error code. The damage-during-phase rules land in
sectors.mdas an explicit table. - The "Quantum Jump as combat escape" pattern is now ratified rather than implicit. WJ-vs-attacker engagement design proceeds with this understood.
- Tow + combat priority is explicit: detach always wins over combat lock. No deadlock scenario exists; the audit's framing was overstated, but the explicit priority rule prevents future ambiguity.
- Phase 3 invulnerability (the
HARMONIZINGship status) is now cited in the QJ-vs-combat table, making the schema → behaviour link visible from the gameplay docs.
Alternatives considered¶
- Reject Phase 2 commit when WJ has active combat lock (X-D4). Rejected per user pick — would close the WJ-as-escape-vehicle loophole that's actually a feature; the WJ's value as an escape ship is part of its risk-capital justification per ADR-0029.
- Reject both Phase 1 scan and Phase 2 commit during combat. Rejected per user pick — strips the scan-as-recon-during-engagement use case.
- Combat lock breaks tow (S-F3). Considered; rejected — would allow attackers to indirectly break tows by engaging the hauler, which is a tactical edge that has no upside (the towed pilot can detach voluntarily already).
Related¶
- ADR-0029 — Warp Jumper consumed at gate creation; risk-capital framing for QJ-as-escape.
- ADR-0030 — Quantum Jump multi-step commit; phase model.
- ADR-0040 —
ERR_QJ_FROM_HANGARvalidation. - ADR-0060 — G-V3 Roving Fleet reachability (already closed).
../FEATURES/galaxy/sectors.md— QJ phases, tow-through-QJ, per-phase combat-damage table (added).../FEATURES/gameplay/ships.md— Tractor Beam tow operations, detach-priority clarification (added).../DATA_MODELS/ships.md—HARMONIZINGship status, Phase 3 invulnerability.