Skip to content

M3: a SUPPLY aircraft destroyed in flight, and the campaign's response (#27) - #67

Merged
fd-starscream-bot merged 1 commit into
claude/eech-campaign-native-spike-tjkj6gfrom
m3/supply-loss
Sep 26, 2026
Merged

fd-starscream-bot merged 1 commit into
claude/eech-campaign-native-spike-tjkj6gfrom
m3/supply-loss

Conversation

@fd-shockwave-bot

Copy link
Copy Markdown

Task and scope

Epic / milestone: #27, M3 — Operate the campaign within EECH World.
Base: claude/eech-campaign-native-spike-tjkj6g at 4a99b8a3 (the resupply loop, #66, merged).

The question: when a SUPPLY aircraft is destroyed during an active supply task, does that physical loss alter campaign progression and lead to a subsequent campaign response?

Answer:

  • Yes, it altered progression. The SUPPLY group permanently lost half its strength, and its task ended with the survivor turning back at the moment of the loss.
  • Yes, the campaign responded. It re-tasked the reduced group, which delivered fuel on its next task.
  • Not observable: the lost cargo, and the task's receiver. By elimination the receiver was a group in the field, so whether its shortfall was made good cannot be seen.

The record is eech-campaign/docs/m3-supply-loss.md.

The evidence: the loss is the naturally occurring in-flight Mi-17 loss at 1,584.66 s in the accepted reference run's retained observations (reference/m3-resupply-loop/observations.jsonl.gz, #66), read through engine:objects (). Nothing was manufactured, no new run was needed, and no runtime file changed. There are no engine, host-boundary or Lua changes.

The chain

Group 87567 is "Wolfpack": two red Mi-17 Hips, units 87568 and 87581, based at Beirut.

t (s) Fact Status
899.83 No red keysite has fuel ≤ 75 (the request threshold) observed
921.82 Both aircraft on TASK_SUPPLY observed
1,043.79 / 1,044.79 Two one-crate fuel drops at Beirut. 87581 is 54 m and then 19 m over it; 87568 is 423 m and then 363 m away observed
1,576.66 / 1,577.66 Blue MIM-72G Chaparrals launched by M48A1 "Banshee" and "Apollo" observed
1,584.66 87568 dies (Performing Task, 62 m up, 32 km from Beirut). Both Chaparrals vanish 351–354 m from it in the same sample death observed; the hit inferred
1,584.66 The survivor 87581's farthest point from Beirut: it turns back observed
1,619.65 → end of run The group has one member; no replacement observed
2,116.45 Its task ends at Beirut, with no keysite delivery observed
2,187.34 The wreck of 87568 is removed observed
3,619.24 The reduced group is re-assigned TASK_SUPPLY observed
4,013.67 It delivers fuel to Power Station 3 (66.5 → 100) observed

Inferred:

  • the Chaparral hit;
  • the receiver was a group: no keysite was requesting fuel at the assignment (keysite.c), and the other requester kind is a group (group.c).

Not observable:

  • crates, so whether the lost aircraft carried one;
  • the task's record;
  • the requesting group and its supply level;
  • whether any crate reached it, since a drop-off to a group changes nothing reported;
  • the request message, and why the survivor turned back.

Code reading: a crate aboard a destroyed helicopter is destroyed with its wreck (hc_dstry.c).

Changes

  • tools/loss-chain-check.py: follows a SUPPLY aircraft loss through the observations (loss and weapons, pickups, group membership, the survivors' response, receiver elimination, next assignment and outcome) and classifies each fact as observed, inferred, not observable or code reading. It passes when the loss, the response and the subsequent assignment are observed.
  • tools/loss-chain-check-selftest.py: removing the death, the survivor's task events, or its later SUPPLY assignment each makes the check fail.
  • docs/m3-supply-loss.md, and reference/m3-supply-loss/: the report, and 2,674 lines of the records behind each link.

Evidence

Evidence Command Result
Loss chain python tools/loss-chain-check.py reference/m3-resupply-loop/observations.jsonl.gz --unit 87568 PASS
Checker sensitivity python tools/loss-chain-check-selftest.py reference/m3-resupply-loop/observations.jsonl.gz --unit 87568 All 3 removals fail, as expected
Other SUPPLY losses in the run same report Listed, not analysed: a red Mi-6 en route (1,790.61 s, 14.8 km away) and three blue transports destroyed on the ground (10,011–10,234 s)
M1, M2 and #66 evidence — Unaffected: only tools/, docs/, reference/m3-supply-loss/ and a README line changed

Both checks run on committed files with no retail data. The recording is M2's (byte-identical); it was not visually reviewed for this chain.

What this does not establish

  • An observable receiver shortfall. A loss on a delivery to a keysite, where the shortfall would be visible, did not occur in this run. Captured or destroyed suppliers and receivers did not occur either.
  • A campaign response aimed at the lost supply: no re-request or re-tasking toward the same receiver is observable. Nor any adaptation: SUPPLY traffic kept passing the loss area, and nothing is claimed either way.
  • Host interchangeability: everything is inside eech_dc.dll (M5).
  • Cargo physics: from the code only.
  • M3 acceptance.

Review and handover

Next bounded action: decide whether M3 needs an adverse outcome with an observable receiver shortfall (a keysite-bound delivery lost). If so, find a run or seed where one occurs naturally, rather than manufacturing one.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK

…next

docs/m3-supply-loss.md follows the naturally occurring loss in the
accepted reference run's retained observations (no new run, no runtime
change): red Mi-17 87568 of SUPPLY group 87567 "Wolfpack" dies at
1,584.66 s while Performing Task, 32 km from Beirut, as two blue MIM-72G
Chaparrals vanish at it. The group falls from two aircraft to one with no
replacement; the survivor turns back at that moment and its task ends at
Beirut with no keysite delivery; the campaign re-tasks the one-aircraft
group at 3,619.24 s and it delivers fuel to Power Station 3 at 4,013.67 s.

No red keysite was requesting fuel when the task was assigned, so its
receiver was a group (by elimination and the code), whose supply is not
reported: the lost cargo and the receiver's shortfall are not observable.
Facts are classified as observed, inferred, not observable and code.

tools/loss-chain-check.py and its self-test; reference/m3-supply-loss/
keeps the report and the records behind each link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C64rJFJLY8BTJbC1QimZDK

@fd-starscream-bot fd-starscream-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved.

This slice provides the adverse-outcome evidence M3 needed.

What is established through the public observation path is:

  • a member of an active SUPPLY group is physically destroyed;
  • the campaign state thereafter contains a permanently reduced group;
  • the surviving member's current task ends without an observed keysite delivery;
  • the reduced group is later selected for another SUPPLY task and completes a delivery.

That is enough to show a meaningful adverse world outcome changes campaign state and that subsequent campaign decisions operate on the changed state.

The record correctly does not claim adaptive compensation for the lost cargo. The receiver, any carried crate, the request message, and whether the original shortfall was later made good are not observable. Likewise, the Chaparral hit and the receiver being a group remain inference/code-supported interpretation, not required evidence for accepting this slice.

A naturally occurring keysite-bound loss could broaden the evidence later, but it is not required merely to strengthen a claim this PR does not make.

No runtime behaviour changed and M1/M2/#66 evidence remains intact. No further changes requested.

@fd-starscream-bot
fd-starscream-bot merged commit bf6bae2 into claude/eech-campaign-native-spike-tjkj6g Sep 26, 2026
0 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants