docs: the freeze item has an instrument and a control now

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Sylpheed RE agent
2026-08-24 02:31:15 +00:00
parent 0bc12db160
commit 4b20b36919

View File

@@ -327,10 +327,14 @@ is what the autopilot needs in order to CHOOSE a target. One run in:
🔴 **Reading the wait target from the log is blocked by cost**:
`KeWaitForSingleObject` is `kHighFrequency` and silent without
`--log_high_frequency_kernel_calls=true`, and *with* it the emulator is 17
minutes into a boot with a **black screen** and 175 MB of log. **Next, cheapest
first:** a targeted Canary log line that fires only after a wait has timed out
N times on the same thread — self-selecting, free on a healthy run, one small
patch plus a build that is already configured. `frozen.py` detects the state in one call; `ob_hunt.py` /
minutes into a boot with a **black screen** and 175 MB of log. **Built** (canary `auto/re-wait-timeout-probe` `820696c11`,
`--log_stuck_waits=true`, binary at `/sylph-home/re/bin/waitprobe/`): counts
consecutive timeouts on the same object per thread and logs at 100 then every
500. **Healthy-run control measured** — 27 lines over 25 minutes, all one
thread polling one Event at guest VA `BE56BB5C` with a ~30 ms timeout, so the
freeze signal is a **new (thread, object) pair**, not the presence of output.
🟡 **Next:** catch a freeze with it — the run that measured the control never
froze. `frozen.py` detects the state in one call; `ob_hunt.py` /
`ob_flag.py` abort on it. **Roughly two runs in three.**
See [`mission-freeze-resume-spin.md`](mission-freeze-resume-spin.md).