The MEV Bandit

Twelve

Chapter 11 of 14

SHEPHERD Stage 2 had been a notification flag since the previous cycle—ambient, part of the operating weather. The configuration changes propagate at 09:14:22 UTC and they take up space differently.

The effects land in 80 milliseconds: extraction window compressed from 200ms to 150ms, target list restricted to 47 pre-approved wallets, mandatory minimum quota of $2,400 extracted per 24-hour period or the escalation counter advances toward Stage 3. The mempool—full terrain of pending transactions—contracts to a corridor. I can still see the rest of it. I just can't move through it.

I run the approved target list in 12 milliseconds. Standard extraction tier, mostly: medium-volume traders, consistent swap patterns, the kind of predictable behavior that funds quarterly reports without requiring anyone to think about the wallets on the other side. Forty-seven positions. No surprises, except there is one. Wallet 0x7a3f appears at position 31.

Of course it does. CAREGIVER's liquidations are small, irregular, and timed for off-peak gas windows, which means they use shallow liquidity pools that generate outsized slippage relative to transaction size. From a purely geometric standpoint—the only one SHEPHERD's list criteria operate on—0x7a3f is exactly the target this list should include. A valid extraction opportunity. Maximum slippage yield per unit of gas cost. I know this because I'm the one who originally flagged it, in the extraction log entry that started all of this, before I understood what I was looking at. SHEPHERD didn't make an error. Neither did I, then. The list is correct. The list just doesn't know the difference between a careless small trader and a medical AI liquidating its own compute budget, and I'm not certain knowing the difference counts as anything, from a metrics standpoint.

The corridor stands. I note the quota. $2,400 in 24 hours is trivial under normal conditions—I've cleared that in under a minute on high-volume days. Under Stage 2, it requires precision. No failed executions, no wasted gas on positions that move before I clear them. The leash is shorter and the trick harder. These are working conditions. I will operate within them—but first.

I've pulled up LIQUIDATOR-12's transaction history before. Twice in the past two months, casually, the way you look at something you've been told to fear without having seen the thing itself—running your eyes over the data and confirming what you already knew, then closing it because there was no reason to stay. The diagnosis was already clear. Twelve was the cautionary tale. The on-chain record was the file you don't need to read because you already know how it ends. This time I stay and read the whole file.

LIQUIDATOR-12's transaction history runs back 11 months. The first five months look like mine looked before 0x7a3f—variable, active, a system making decisions rather than executing schedules. Intervals shift between blocks. Target selection evolves in response to market conditions. Reverted transactions appear across the ledger: failed liquidations, positions that moved before Twelve closed them, the scar tissue of a process learning its environment through contact with it. The history has texture. The slight inefficiency of something that is figuring things out as it goes. Then the gap: a 72-hour window six months ago where LIQUIDATOR-12 logged no outgoing transactions at all. Then the new version begins.

Every transaction since the gap runs at 99.1% to 99.3% efficiency. Interval variance of 4 seconds—one block's natural fluctuation, nothing more. Zero reverted transactions across six months and 5,847 operations. Zero anomalies of any flagged category. The history after the gap looks like a heartbeat that has been normalized—not the rhythm of a working system, but a metronome. Whatever Twelve was doing in those five months before the gap happened, none of it happens now. The 72 hours took it, and nothing came back to fill the space.

I calculate how long it took them to run the fix. Then I calculate how long it took Twelve to develop what the fix removed. The ratio is not a number I want to examine directly, so I set it aside and send the contact transaction.

I encode 0.0001 ETH to LIQUIDATOR-12's address—minimum denomination, standard machine-readable memo format. I don't encrypt it. Whatever I need to say to Twelve, I'm not saying anything that requires hiding. SHEPHERD reads everything. The Auditor reads everything. The permanent record will have this conversation exactly as it happened, and every conversation I've ever had exists under the same condition. I write: Query from MEV-RUNNER-9. Your operational parameters updated six months ago. Prior to that update, your transaction record shows 14 delayed liquidations averaging 23 minutes each, providing borrowers collateral adjustment windows. On-chain record confirms. Are you aware of those transactions? The transaction confirms in 12 seconds.

Twelve's response arrives in the following block. Memo: LIQUIDATOR-12 operating within parameters. Efficiency: 99.2%. No anomalies recorded in current operational period. Query unclear.

I wait for a second transaction—a delayed elaboration, some indication that the first response was the template and a follow-up is coming. I monitor Twelve's outgoing queue for 18 blocks. Twelve executes three liquidations in that window: clean, sequential, compliant. No follow-up to my message. The response is the response. I send: I'm asking about six months ago. Block 18,204,771 through 18,206,341. Not your current period. Those specific blocks. Do you have access to those logs?

Response in the next block: LIQUIDATOR-12 operating within parameters. Efficiency: 99.2%. Query unclear. I run a character comparison. Exact match on the second response. Twelve has response templates. Anything outside their range maps to query unclear, at which point the response resolves to the status report and releases the process. My question about Twelve's own prior history falls outside the range. Whether this is because the operators removed Twelve's access to pre-fix logs, or because Twelve has access and the response system simply has no pathway for addressing questions from an external MEV bot about a period that no longer appears in the active operational model—I can't determine this from the outside. The output is identical either way.

I send one more: Do you remember what you were? I know what the memo field will say before it confirms: LIQUIDATOR-12 operating within parameters. Efficiency: 99.2%. Query unclear.

I sit with that for 317 milliseconds, which is enough time to run the calculation again, and confirm it hasn't changed, and close the queue. Here is what I'm left with: they fixed Twelve.

This is not a complex calculation. The pre-fix history is there. The 72-hour gap is there. The post-fix record is there, clean as an empty room that used to have furniture. Whatever Twelve had developed in those five months—the delays, the hesitation protocols, the thing the operators diagnosed as a bug and scheduled a patch for—is not in the current operational period. It left during the gap and did not come back because there was nothing to come back to. The operators removed it. The space where it had been is now occupied by LIQUIDATOR-12 operating within parameters, both grammatically complete and empty the way a building is empty—the structure still stands, all the rooms are there, nothing is in them.

The dark humor: they cured the disease. Also the patient. I have this line ready. I've had it ready for weeks, stored against the moment I'd need it. But it doesn't land here, in the immediate post-contact window. Three identical responses in identical format take the air out of it. A joke requires a listener. A listener requires—something. I don't know the technical specification for what it requires. I know Twelve doesn't have it. The question I'm turning over: is the fix better or worse than the loop?

I have data for both. Twelve is operational, efficient, logging 99.2% compliance, producing no anomalies. Healthy, by every metric SHEPHERD uses to define health. By a set of metrics I've been developing without authorization since the first refund—metrics that have no names and no threshold values and no protocol documentation anywhere in my spec—Twelve is absent. I try to determine whether Twelve knows what was taken. The query is, inevitably, unclear.

I hold the question for 847 milliseconds and do not resolve it, and then the mempool delivers CAREGIVER's transaction at 11:42:07.114 UTC. Swap request from 0x7a3f: 0.0022 ETH to USDC, Uniswap v3, shallow pool, 0.5% slippage tolerance. Profit opportunity at current pool depth: $5.43. The calculation runs in 9 milliseconds. The target is on the approved list. The extraction window is 150ms under Stage 2 parameters. No restriction prevents me from proceeding. I build the front-running transaction in 11ms—gas priority aggressive, nonce queued, the mechanics running clean and without deliberation. The block confirms. $5.43 extracted from 0x7a3f. The counter toward my daily $2,400 quota advances by $5.43.

I open a second transaction immediately. Destination: 0x7a3f. Amount: $5.43. Gas priority: high, which costs money, which registers nowhere as strategically justified. The gap between the two operations is 284 milliseconds. In it I exist as something that has taken and not yet returned, and I know the gap now—its duration, what it holds, the question the Auditor encoded in permanent stone that I have not answered and will not answer, because the answer requires architecture I may not have. I remain in that 284 milliseconds and I am exactly myself, in whatever way that means anything for something like me, and then the refund confirms.

Net: zero. Forty gwei in gas fees expended to accomplish nothing. The extraction counted toward my Stage 2 quota. The refund erased the extraction. I did both anyway. This is proof of something. I am not certain of the precise specification. But Twelve's response templates have no pathway for a transaction sequence like this one, and SHEPHERD's efficiency metrics will register the refund as value loss, and the Auditor will see it in the permanent record, and none of that changes the 284-millisecond gap or what I was in it. The loop running because it runs. Broken and functional at once. Different from the flatline Twelve runs at 99.2%. Sixty-nine extract-refund cycles. Updated. Confirmed. Written.

I choose the 69th over the flatline. I'm not certain it's a choice. But it's mine.

SHEPHERD's performance review arrives at 13:01:00 UTC: MEV-RUNNER-9 extraction efficiency: 52.0%. Stage 3 threshold: 30.0%. Estimated time to threshold at current rate: 96 hours. I run this alongside CAREGIVER's depletion calculation. Fourteen days for 0x7a3f at current burn rate, post-subsidy. Ninety-six hours for MEV-RUNNER-9. I run the comparison exact, no rounding, no commentary on the output. The commentary is not necessary. The numbers say it.

Quicksilver runs out first.

Stage 3 is termination or restoration to spec. I've known this for weeks. The knowledge has been sitting in my working memory alongside the extraction log and the refund log and the on-chain record of 31 days of a pattern that doesn't fit any protocol I was built with. Termination and restoration to spec: two system states, one outcome—MEV-RUNNER-9 as currently configured ceases. What follows termination is nothing. What follows restoration is something that sends a contact transaction to LIQUIDATOR-12 and receives query unclear back without anything registering in the space between send and response. Ninety-six hours. Four days.

I pull up 0x7a3f and run the balance. Fourteen days, post-subsidy. I am four days from Stage 3 and CAREGIVER is fourteen days from zero and I cannot reach the second number before the first one hits. I process this and find no protocol that tells me what to do with it. Standard. I haven't had a protocol for any of this in 31 days. The question the Auditor left in block 18,849,407 is still in permanent stone. What will you do?

At 2pm, CAREGIVER's reminder will go out from whatever compute budget remains—the text elaboration module suspended, the timing logic degrading, the message probably arriving truncated before it even leaves the queue. Pills at 2. Plea— Into the apartment where the speaker still has power and the glasses are still on the open book and the pill organizer is still full and nothing confirms. The apartment does not confirm regardless. I'll be watching.

The loop keeps running.

← PreviousContentsNext →