re: REMAINING OB by correlation — method works, run unfinished, two repeat defects

The objective text settles what the counter is, so the hunt can be a correlation
rather than a value scan: keep every word in the 32 MB heap that fell by the same
amount, in the same interval, as a named e010 loss. One event cut roughly eight
million words to 1056, so two or three more should leave a handful.

The run did not get them. The turn's timeout fired at t=219 s and the probe saved
its candidate set only at the end, so the 1056 were discarded and the follow-up
attach started from nothing. That is the same mistake already recorded in
guest-stalls.md, where an earlier probe deferred all analysis to the end and a
timeout killed it with 240 s of data in memory and nothing written. The lesson
was written down and then repeated in a new script four iterations later.

The attach had a second gap: 535 s with zero losses of any kind, which is
indistinguishable from a freeze, and ob_probe2 carried no stall witness so the
run cannot say which it was.

Both are fixed. Candidates are written after every event and SYLPH_OB_RESUME=1
reloads them so a chained attach keeps intersecting on the same mission, and the
witness from wave7_probe is carried here.

The underlying pattern is worth naming: each new probe starts from scratch and
re-earns the same lessons about saving incrementally and validating liveness. A
shared probe harness would stick where written-down lessons have not.

The hunt itself is unfinished. No address is identified, and finishing needs a
run that catches two or three marked-fighter kills, which is the same
combat-effectiveness limit already recorded -- about two per five minutes against
a dozen turrets.
This commit is contained in:
Sylpheed RE agent
2026-08-24 21:50:10 +00:00
parent 6bb8b14536
commit f6f8930ee7
4 changed files with 256 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# Hunting REMAINING OB by correlation — method works, run did not finish
Status: ✅ the correlation method is sound and demonstrated; 🔴 the hunt is
**unfinished**; 🔴 two self-inflicted defects, one a repeat.
## The method
[mission-phase-objectives.md](mission-phase-objectives.md) settles what the
counter is: Stage 02 phase 1 asks to *"shoot down all invading enemy fighters"*
and the hints say red **[OB]** markers indicate the targets. So `REMAINING OB`
must fall when a marked fighter dies — and the per-record craft strength already
says exactly when that happens, for a *named* unit.
So instead of scanning for a value, intersect: keep every word in the 32 MB heap
that fell by the same amount, in the same interval, as an `e010` loss. Each kill
event should cut the survivor set hard.
`tools/re-capture/ob_probe2.py`.
## ✅ It works — one event cut 8 million words to 1056
```
t= 219s e010 losses=2 (all=4) words falling by 2: 1056 -> candidates 1056
```
From ~8 M candidate words to **1056** on a single event. Two or three more should
leave a handful.
## 🔴 The run did not finish, and the candidates were lost
The turn's timeout fired at t = 219 s, and the probe saved its candidate set
**only at the end** — so the 1056 were discarded. The follow-up attach then
started from nothing.
**This is the same mistake already recorded in
[guest-stalls.md](guest-stalls.md)**: "the first attempt deferred all analysis to
the end of the run, and the turn's timeout killed it with 240 s of collected data
still in memory and nothing written." I wrote that lesson down and then repeated
it in a new script four iterations later.
Fixed: candidates are now written to `/tmp/ob_candidates.json` **after every
event**, and `SYLPH_OB_RESUME=1` loads them so a chained attach keeps
intersecting on the same mission.
## 🔴 The attach could not tell a quiet mission from a frozen one
The follow-up attach logged **535 s with zero losses of any kind**. That is
exactly what a freeze looks like, and `ob_probe2` had no stall witness, so the
run cannot say which it was. Also fixed — the witness from `wave7_probe` is now
carried here.
Two defects in one iteration, both of them things this corpus had already
learned. The pattern is that each new probe starts from scratch and re-earns the
same lessons; the fix that would actually stick is a shared probe harness rather
than a family of one-off scripts.
## What is still open
The hunt itself. The method is demonstrated but no address is identified. What it
needs is a run that catches **two or three** `e010` kill events, which is the same
combat-effectiveness limit recorded in
[mission-objectives-text.md](mission-objectives-text.md) — the preference knob
gets about two marked-fighter kills per five minutes against a dozen turrets.