{ "finding": "A deleted exact shell leaves ERR_MortarSupplyTransfer.Unresolved true indefinitely when accepted native move never supplies a failure callback. Deadline invalidates authority but never resolves uncertainty. Battery.SupplyPending remains true, so MortarSystem skips new orders even with other physical shells.", "source_boundary": [ "ERR_MortarSupplyTransfer.Poll/Unresolved", "ERR_MortarBattery.SupplyPending and SupplyState", "ERR_MortarSystem.Assign: battery.SupplyPending gate" ], "fix": "Mirror existing ERR_MortarCourierTransfer.Poll null-shell rule after server guard: mark exact deletion resolved and invalidated, clear ready, return FAILED. No damage/capture/unknown-storage inference, no refund/retry/spawn/new transfer.", "red": "Updated actual Poll+Unresolved+Battery.SupplyPending program compiles then assertion-fails on exact weak identity deletion; red.log.", "green": "All existing test_mortar_transactions.py programs pass plus zero/success/failure callbacks, already-cancelled branch, late acknowledgement, timeout, and nonnull detached ambiguity. green.log.", "limits": "Entity deletion modeled by native weak-reference invalidation; no engine run. Other mortar cancellation guard pattern was not reproduced because success is authorized by later Poll. Existing test had asserted null remains pending; changed explicitly to permanent loss, matching existing courier behavior.", "preservation": "One source and one existing test proposal; baseline working/index hashes retained. Original and successor untouched.", "apply_check_exit": 0, "test_command": "PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=/home/jakub/devel/escapistsrereintroduced/tests ERR_MORTAR_SUPPLY_TRANSFER_SOURCE=/tmp/erri-mortar-review-1804/addons/core/Scripts/Game/ERR/10_AI/ERR_MortarSupplyTransfer.c python3 /tmp/erri-mortar-review-1804/tests/test_mortar_transactions.py" }