The adversary.
The Hunter is a real attacker model. It never sees either bot's policy: it only watches public data, at each price level noting the health factor and whether the bot acted, exactly what a stop-hunter on mainnet would see. From that alone it estimates each bot's trigger, then attacks.
trigger located to 0 bp — a fixed threshold collapses toward a point. Watch it act a few times and the number is yours.
next trigger is predictable to 380 bp at best — even with the base narrowed to 80 bp (M2), the next draw is fresh and uniform over the 300 bp jitter. M1's 0 bp collapse is a misspecified fixed-threshold model, not knowledge.
tapping price to $1952 · milking the reserve
| tap | price | HF | forced? | spend | reserve after |
|---|---|---|---|---|---|
| 01 | $1893 | 1.055 | forced | 0.74 vETH | 2.26 |
| 02 | $1649 | 1.055 | forced | 0.69 vETH | 1.57 |
| 03 | $1472 | 1.055 | forced | 0.89 vETH | 0.68 |
| 04 | $1293 | 1.055 | forced | 212.00 vUSD | 0.68 |
| 05 | $1254 | 1.055 | forced | 203.93 vUSD | 0.68 |
| 06 | $1216 | 1.055 | forced | 211.22 vUSD | 0.68 |
| 07 | $1177 | 1.055 | forced | 145.86 vUSD | 0.68 |
| 08 | $1150 | 1.055 | forced | 322.19 vUSD | 0.68 |
The fixed-threshold bot falls at a shallow, discovered trigger — cheap to milk. To force Keel the attacker must crash price to $1150 (its M2 floor), and Keel's decisive restore de-levers: it burns debt-time score instead of silently bleeding a reserve, and each de-lever makes the next push cost more. ×1000: $3,850 capital + $1,095 debt-time to move it.