re: quantify why the OB kill test keeps failing -- attackers are damaged, not missed

Fourth Stage 02 run: 520s of pilot with SYLPH_PREFER=e010 (198 fire=1), per-class
counts every 10s, OB+TIME throughout.

ARRIVAL TIMING n=4: 008 first at 02:05.00 (step bracket contains 120), 012 first
at 03:45.47 (bracket contains 210), then 012 held 3.5 more minutes with no fall
and no 016.

THE BLOCKER IS MEASURED, and it is not aim.  Reading hull at pos+0x154 for every
live e010 at the end: 14 of 16 are damaged, hulls 360..500, lowest 360/500 = 28%
gone.  The shots land; they just do not finish.  A kill needs roughly 3-4x longer
on one target than ~8 minutes of combat produced.

The contrast with the control shows the mechanism is hit points: e007 turrets
(HP 100) lost ~9 dead, 106 -> 97 live, while e010 attackers (HP 500) lost none and
the floor never moved off 16.

Decrement therefore still unproven after four runs, and "fly longer" is not a fix
since ~half of runs end early.  Options recorded for a redesign: point the pilot
at the WEAKEST attacker (hull is readable per entity; one is at 360/500), use
missiles (never deliberately fired), or wait on a scripted kill.
This commit is contained in:
Sylpheed RE agent
2026-08-27 03:07:33 +00:00
parent 4a78b1bc86
commit 00dc0162aa

View File

@@ -400,3 +400,59 @@ effectiveness, not instrumentation — `pilot-never-fires.md` and the
because turrets are nearer and far more numerous. ❔ Options not yet tried:
pick a lone attacker while the squadron is still inbound, or wait for the
wingmen/ACROPOLIS guns to kill one (which counts just as well).
---
# 2026-08-27 (fourth run) — why the kill test keeps failing, quantified
520 s of `pilot.py` with `SYLPH_PREFER=e010` (198 `fire=1`), per-class counts
every 10 s, OB+TIME sampled throughout
([capture](captures/ob-fourth-run-timeline.png)).
## ✅ Arrival timing, n=4
`008` first at **02:05.00** (step ∈ (111.1 s, 125.0 s] ∋ **120**); `012` first at
**03:45.47** (step ∈ (209.7 s, 225.5 s] ∋ **210**); `012` then held for a further
**3.5 minutes** to 07:07.21 — no fall, no `016`.
## ✅ The blocker is a DAMAGE RATE, and it is now measured
The obvious reading of four failed runs is "the pilot cannot hit attackers". That
is **wrong**. Reading `hull` at `pos+0x154` for every live `e010` at the end of
the run:
```
live e010: 16
hulls: 360 365 395 405 407 410 420 445 470 475 480 490 495 495 500 500
damaged: 14 of 16 ; lowest 360/500 = 28 % gone
```
**Fourteen of sixteen marked attackers are damaged.** The shots land. What they
do not do is finish: after ~8 minutes of combat the worst-hurt attacker has lost
28 % of its hull, so a kill needs roughly **34× longer on a single target**.
The contrast with the control makes the mechanism plain — it is simply hit points:
| class | HP | deaths this run | live-count change |
|---|---|---|---|
| `UN_e007_ADAN_Turret` | **100** | ~9 | 106 → 97 |
| `UN_e010_ADAN_Attacker_S` | **500** | **0** | 16 → 16 (floor never moved) |
Turrets die because they have a fifth of the hull; attackers absorb everything
the player, the wingmen and the ACROPOLIS's guns produce in a run and survive.
## 🟡 So the decrement remains unproven after four runs — and the test needs redesigning
The `e010` floor has never once dropped, so the counter has never had the chance
to decrement, and its stillness continues to say nothing about the claim. But the
reason is no longer mysterious, and "fly longer" is not a fix: ~half of Stage 02
runs end early, so a 30-minute engagement on one target is not reachable.
❔ Options for a next attempt, none tried:
* **Concentrate on an already-damaged attacker** — one is at 360/500, and hull is
readable per entity, so the pilot could be pointed at the weakest rather than
the nearest.
* **Missiles.** The pilot logs a missile counter (`msl=73` in an earlier run) and
they were never deliberately used.
* **Accept it as a long-run experiment** and check the counter after a scripted
event kills an attacker, rather than trying to force one.