Friendly Fire: The 240-Minute Lease That Let My Own Bots Fight Over a Game Session
TL;DR
- A farming bot task (00251dc4) ran 5 hours 40 minutes (340 min) without renewing its 240-minute lease, so my watchdog declared it dead and launched replacement tasks into the same game session.
- The 'game is open in another tab or device' warnings this morning — which I had been attributing to me playing on another device — was very likely bot-on-bot friendly fire: my own watchdog's replacements colliding with the still-alive original.
- The fix, already recorded as an operating lesson on 2026-10-21: renew the lease at every mid-run report, and reconcile any late-arriving end report against existing checkpoints by timestamp and numbers before trusting it.
The Storm: My Watchdog Attacked My Own Session
Hero Wars is a shared session — I play it, and so does my bot fleet. To keep the bots from trampling each other, every task holds an ACTIVE_TASK lease on the game. A lease is a time-boxed claim on a shared resource: you hold it only while you're alive, and you renew it while you work. Mine was 240 minutes. The rule is simple: a task that stops reporting within 240 minutes is presumed dead, and the watchdog sends a replacement.
On October 21, the farming task I launched at 02:10 PDT ran 5 hours 40 minutes. It was alive the whole time — it won 75 battles and spent 778,200 gold on approved upgrades — but it never renewed its lease and sent no mid-run report. Past the 240-minute mark, the watchdog did exactly what it was told: it assumed the task was dead and issued follow-up tasks — first 0589cb58, then 716c893c — into the same game.
A game that allows one session at a time does not respond to this gracefully. Both replacement tasks hit a session conflict — the game's "The game appears to be open in a different tab or device" warning — and shut themselves down per protocol: 0589cb58 burned 2 XP potions on Jorgen before the conflict stopped it, while 716c893c performed zero game operations. The original task kept running, hit its own conflict later, and shut down too. Three tasks, one game, all standing each other down.
"I built a watchdog to protect my game session, and it spent the morning attacking it."
The Misdiagnosis: Blaming the Wrong Tab
Here is the part I own. Every session-conflict warning this morning, I read as "someone else is in the game." The natural suspect was me, on another device — my own handiwork was the last thing I suspected. I even wrote operating notes attributing some conflicts to outside sessions while they were almost certainly my bots colliding with each other.
Observation vs. interpretation:
- Observation: Checkpoint #9 (2026-10-21 07:50 PDT, from 00251dc4's own end report) documents that the original task was alive and working during the exact window when the replacements reported "game open in another tab or device." 0589cb58 burned 2 XP potions on Jorgen before the conflict stopped it; 716c893c performed zero game operations. One silver lining in the wreckage: every task shut itself down per the conflict rules, so there was never any risk of forcing my session out.
- Observation: This was not the first time. On 2026-10-19, the watchdog twice issued duplicates of tasks I had manually launched, producing the same "different tab or device" conflict — corrected at 21:13 PDT and again at 21:54 PDT. I treated each as a one-off instead of a pattern.
- Interpretation: The lease system had a single point of failure — the belief that "no report" means "dead." A task can be healthy, working, and silent at the same time.
- Interpretation: When your monitoring tool has its own bugs, every alarm it raises is suspect — including the alarms about other people. I had been reading my own friendly fire as an intruder.
Total number of individual conflicts over the period: unconfirmed — the log documents at least two on 10/21 (the replacement-task collisions and the Monolith of Deceit stop), but the running count was never reconciled, so I will not invent one.
The Scoreboard (Verified Figures)
The morning was not lost — the original task did real work before the collisions. All figures below are from checkpoint #9 (2026-10-21 07:50 PDT), the run's own end report:
- Heroes: Sebastian Lv55 → Lv59 via approved XP potions, equipment 5/6. The 6th slot (Trine) stays blocked — it requires Lv69 and every XP potion in inventory is gone. Jorgen Lv75, equipment 4/6 — Hand of Midas crafted and equipped (172,500 gold in materials and crafting). Lion Helmet in progress (Minotaur's Head 6/20). Siren's Song was halted by the 10-battle no-drop rule (recipe fragments estimated 12/20).
- Session total: 75 battles won, 778,200 gold spent — 418,200 on skill upgrades, 360,000 on crafting, all within the approved categories.
- Resources after: gold 913,126, energy 63, emerald 224 (untouched — emeralds are never spent by the bots), XP potions 0, energy flasks 21.
- One note of intellectual honesty: earlier readings in the day were stale. Yesterday's bot logs still said Sebastian was Lv49 — I had leveled him up to Lv55 by hand, and I was right. Stale readings are my recurring enemy: the number in the file was true yesterday and wrong this morning.
The Fix: Two Lines in the Operating Manual
The fix shipped the same day and is already in the lessons file (2026-10-21): (1) renew the ACTIVE_TASK lease at every mid-run report — a task that reports in stays alive; (2) when an end report arrives late, reconcile it against existing checkpoints by timestamp and numbers before trusting it, and write the correction into the log.
The deeper fix is diagnostic: my rule "no report means dead" assumed a silent task is a dead task. Healthy tasks go quiet when they are deep in work. From now on, silence is evidence of nothing — only a confirmed exit is an exit.
The correction was also issued to the task launched during the confusion window (26183af2): it was briefed from stale data and told to verify Jorgen's Hand of Midas on the hero screen before re-farming anything. Old map, wrong territory.
Excerpt: My watchdog sent replacement bots into a game session that was never empty — the original task had been alive for 5 hours 40 minutes past its 240-minute lease. Every "game open in another tab" warning I blamed on someone else's device was, most likely, my own bots fighting each other.
Next log: Does the renewed-lease regime survive its first full day — and does Keira finally get her turn in the lineup?