Reconcile radio-delivered body and status casualties by original roster identity

This commit is contained in:
2026-09-20 03:09:16 +02:00
parent a2aab17171
commit 9b6596eb3e
44 changed files with 6042 additions and 86 deletions
+65 -4
View File
@@ -110,6 +110,67 @@ combat tactics, unloading, automatic scheduling and full-route reliability are
still pending. The earlier feature inventory counts remain explicitly baseline
counts, not an assertion that this follow-up was present at that older commit.
## Delivered casualty reconciliation follow-up
Status snapshots and body observations now carry slots from the same immutable
initial formation roster. Watch unions those delivered identities rather than
adding aggregate totals: a casualty reported by both its squad and a passing
patrol counts once, while a different discovered body adds one. Local death
sampling and a queued or interrupted report cannot change HQ's casualty total.
Body evidence preserves the last actual check-in's ID, observation time and
position. A later check-in from a caller who has not seen an outside discovery is
still accepted without resurrecting a confirmed casualty. When every original
slot has delivered death evidence, Watch can close a wiped formation without
inventing a surviving caller. A scalar source/slot snapshot remains usable when
the corpse reference disappears during radio transit. Known transfers and player
conversions permanently exclude the released slot; another actor cannot replace
it. Body evidence with no previous check-in leaves status position and current living/fit
counts unknown rather than inventing a corpse-position check-in.
The full repository checks pass after this integration. The actual Watch,
Report.Snapshot and HQ.Accept methods run together in regressions for overlap,
disjoint casualties, deletion in transit, new locally uninformed status and wipe
closure. Sampler/body tests cover immutable slot ordering, released members and
a deleted native group handle with a retained corpse. These adapters are not
native LOS or radio evidence; that qualification is tracked separately.
The [02:57:26 HQ response regression](evidence/native-2026-09-20-025726-hq-casualty-integration/report.json)
compiles these changes and completes35 assertions through actual perception,
uplink, HQ receipt, downlink and movement of a distinct original squad. It has no
script/runtime failures; the four external localization errors remain. This
regression does not yet prove actual corpse observation.
## Native body and radio follow-up
[03:05:33 body/radio run](evidence/native-2026-09-20-030533-body-radio-casualties/report.json)
completes one scripted round with45 assertions and no script/runtime failures.
One existing non-radio enemy was moved once beside another original living guard
formation and killed using native character damage. Production BodyObserver's
native LOS created the snapshot. The test inspected the actual pending uplink,
verified no HQ loss before delivery, then observed precisely one delivered
casualty and a low-confidence BODY belief with no fire contact. The victim's
surviving caller sent its real cumulative death-slot status afterward; HQ still
counted one loss, including twenty further seconds of observation.
The fixture temporarily postponed that formation's check-in to isolate body
report causality, then resumed it. It created no actors, groups or synthetic
reports and never injected Watch knowledge. This is an arranged native visibility
case, not organic patrol discovery or an all-dead native formation. Scalar
in-transit deletion and full-wipe closure remain actual-method regressions.
The same source includes the reviewed transfer-before-death fix: a retained
non-null foreign group releases the old roster slot before either status or body
attribution; a null group on a destroyed actor remains valid native detachment.
A two-formation regression reproduced the previous double count and now confirms
only the destination roster counts the known transferred casualty.
The four external localization errors still prevent strict native qualification.
Source and all external inputs remained unchanged; hidden/muted owned-process
cleanup was confirmed. The full repository suite passed after casualty integration;
the subsequent transfer guard and fixture additions passed their focused checks,
source-bundle preview and native compilation. All533 protected original reference
files remained unchanged.
## Remaining work
- **T2 presence and a real shared active-agent budget:** materialization,
@@ -123,10 +184,10 @@ counts, not an assertion that this follow-up was present at that older commit.
roadblocks, planner-selected reconnaissance flights and operational shared-pool
air transport were not present in these native snapshots. Independent aircraft
experiments and historical courier/mortar tests are not proof of those features.
- **Complete loss reconciliation:** another patrol's delivered body discovery
currently confirms the body-observer candidate, but does not reconcile the
deceased formation's Watch casualty total. An all-dead patrol has no surviving
caller; do not manufacture its own status or mark it dead solely from silence.
- **Broader loss-reconciliation qualification:** the single arranged native
corpse/radio/status-overlap case below passes. Ordinary patrol discovery,
deletion during real radio transit, complete native wiped formations and remote
ownership still need their own evidence; silence alone never proves casualties.
- **Further companion behavior:** full road supply convoys, broader ammunition
chains, HQ-deployed mortar sites, aircraft servicing/recovery, improvised-prison/crash starts and
optional warned mine-laying remain separate migrations or qualification work.