Flight plans refuse aircraft that can't engage the targets (issue #28) #29

Manually merged
vinny merged 0 commits from vinny/flightplan-guard into master 2026-10-13 22:59:29 -04:00 AGit
Owner

Closes #28. A flight plan can no longer make CMO interrupt the player.

  • Found live (2026-10-14): the library run's flightplans phase gave an inactive strike two F-24As with an A/A loadout against an airbase. createFlightPlans showed the operator a modal "cannot launch … No contacts can be engaged" dialog and formed no flight. CMO checks launchability whether or not the mission is active.
  • Tool guard (tester 5f2eeb6, synced): missions.create_flight_plans refuses before createFlightPlans unless every assigned aircraft's loaded weapons engage one of the targets by their validTargetList, mapped from the contact's type (categories as the live game names them). The refusal names each such aircraft and its loadout. ScenEdit_QueryDB reads only the CMO database's weapon, mount and sensor records, no scenario state; it is now a reviewed read for bundle and library Lua.
  • Harness: the flight plan probe pairs only aircraft whose loadout reaches the target's domain in the CMO database. navigation.fly_to now aims about 60 nm out, so the aircraft is still on its way at read-back.
  • Evidence: the run before this fix verified 59 of 60 library writes at library-5ed321a5191d (docs/verification/library/library-writes-2026-10-14.json). This sync gives every library write a new revision, so the full harness runs again after the merge.
  • G2 goldens and operations.json follow the new description; the tester carries the same goldens (its 7fd35c9).

🤖 Generated with Claude Code

Closes #28. A flight plan can no longer make CMO interrupt the player. - **Found live (2026-10-14):** the library run's flightplans phase gave an inactive strike two F-24As with an A/A loadout against an airbase. `createFlightPlans` showed the operator a modal "cannot launch … No contacts can be engaged" dialog and formed no flight. CMO checks launchability whether or not the mission is active. - **Tool guard (tester 5f2eeb6, synced):** `missions.create_flight_plans` refuses before `createFlightPlans` unless every assigned aircraft's loaded weapons engage one of the targets by their `validTargetList`, mapped from the contact's type (categories as the live game names them). The refusal names each such aircraft and its loadout. `ScenEdit_QueryDB` reads only the CMO database's weapon, mount and sensor records, no scenario state; it is now a reviewed read for bundle and library Lua. - **Harness:** the flight plan probe pairs only aircraft whose loadout reaches the target's domain in the CMO database. `navigation.fly_to` now aims about 60 nm out, so the aircraft is still on its way at read-back. - **Evidence:** the run before this fix verified 59 of 60 library writes at library-5ed321a5191d (`docs/verification/library/library-writes-2026-10-14.json`). This sync gives every library write a new revision, so the full harness runs again after the merge. - G2 goldens and `operations.json` follow the new description; the tester carries the same goldens (its 7fd35c9). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The live run of 2026-10-14 (AI TEST SCENARIO, build 1900.20, side AI, with the
GRAY fixture fired on) verified 59 library writes at the flight plan sync's
revision, imported with evidence.py import-library (107 records).

- missions.create_flight_plans was refused: the harness paired two F-24As
  whose A/A loadout cannot hit a land target. CMO formed no flight and,
  although the mission was inactive, showed the player a modal "cannot
  launch" dialog. The harness now pairs only aircraft whose loadout has a
  weapon reaching the target's domain in the CMO database (DataLoadoutWeapons
  -> DataWeaponRecord -> DataWeapon Land/SurfaceRangeMax).
- navigation.fly_to read back partial: its waypoint, 12 nm off, was reached
  before read-back and CMO held the aircraft at its orbit speed. It now goes
  about 60 nm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tester's missions.create_flight_plans, synced from its 5f2eeb6, refuses
before createFlightPlans unless every assigned aircraft's loaded weapons
engage one of the targets by their validTargetList: CMO otherwise shows the
player a modal "cannot launch" dialog, inactive mission or not (live run of
2026-10-14). ScenEdit_QueryDB, the CMO database's weapon, mount and sensor
records and no scenario state, is now a reviewed read for bundle and library
Lua. operations.json and the G2 goldens follow; the tester carries the same
goldens (its 7fd35c9). The sync gives every library write a new revision, so
qualify_library verifies them again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version 0.7.14 (flightplan-guard)
Some checks failed
check / check (ubuntu-latest) (push) Has been cancelled
check / check (windows-latest) (push) Has been cancelled
check / check (ubuntu-latest) (pull_request) Has been cancelled
check / check (windows-latest) (pull_request) Has been cancelled
69aff49a18
vinny manually merged commit 69aff49a18 into master 2026-10-13 22:59:29 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
vinny/CMOnet!29
No description provided.