Skip to content

Fix 19 problems from the log (runner, perf, db) - #207

Merged
danielehrhardt merged 3 commits into
mainfrom
godmode/57-fix-19-problems-from-the-log-runner-perf
Oct 19, 2026
Merged

danielehrhardt merged 3 commits into
mainfrom
godmode/57-fix-19-problems-from-the-log-runner-perf

Conversation

@danielehrhardt

Copy link
Copy Markdown
Contributor

Missing-login entries from an answer's text

The real bug was the fallback that reads an agent's final answer for a failed login (detectMissingLogin in packages/core/src/runner/runner.ts). When the run had no browser page open, it still filed an entry, named "Unknown service" and with no URL. Most of the time the matched sentence was just a quote: Claude's own "Failed to authenticate." error, or an agent reporting on another agent's missing login. That fed itself: each report on such an entry created the next one.

Fix: the fallback now files an entry only when all three are true:

  • the agent has the browser on (and a VM run has its VM browser);
  • the run itself called a tool of the browser server (usedBrowser in runner/stream.ts: mcp__browser__*, which covers both the host and the VM's browser-use; Godmode's own browser_profile* tools and other servers' browser_* tools don't count);
  • a real http(s) page is open in the run's tab. Its hostname becomes the service.

An explicit report_missing_login call works as before.

Tests:

  • New usedBrowser test in test/stream.test.ts.
  • test/runner.test.ts: the old test expected an "Unknown service" entry. It now checks that a login-failure answer from a run without a browser page files nothing.
  • pnpm -r typecheck is clean. stream, runner, missing-logins and missing-login-totp tests: 77 pass, 0 fail.
  • A separate review pass found no logic errors. I applied its suggestion to match the browser server's prefix exactly.
  • Not covered end to end: the case where an entry is filed. That needs a running browser with an open tab, which the test harness doesn't have.

Latest origin/main (v0.2.19 version bump) is merged in, with no conflicts.

Not code bugs (nothing changed)

  • Watchdog "before its first step" (38 runs, 2026-10-17 11:34–19:52Z): all ran on 0.2.17 while the Mac was asleep in clamshell mode. Secrets never block a task: take them out of the branch and push it #54 (in 0.2.18) fixed this: the watchdog now counts awake time only. None since.
  • Watchdog after 60 min on a background task: a correct stop. The run kept waiting on a long-running background task it had started itself.
  • Slow database query: only one on 0.2.18, the known slow chat load caused by inline screenshots. The other 25 were on older builds.
  • Event loop blocked: the 0.2.18 entries don't say what work was running, meaning no timed step (database statement or run update) was slow. They line up with network drops and the start of the nightly memory review, and I couldn't trace them to a specific piece of code.
  • "persist in-flight message failed": the error was SQLite's "database or disk is full". The disk was full at that moment; the transaction rolled back and the run finished normally.
  • Network and sleep: the GitHub fetch timeouts happened during that sleep. The "Can't reach the API server" (ENOTFOUND) failure and "Connection lost while your computer was asleep" are network or sleep, and the browser's CDP disconnects follow sleep or a one-off drop.
  • 403 "Request not allowed": handled by Fix what the reviews of questions, tickets and the team found #56, which isn't in the installed build yet.
  • Runner offline: "could not copy the setup" and the failed runner update happened because the runner was asleep.
  • pmset disablesleep failure: by design, from before the one-time admin prompt was answered.

What you need to do

  • Dismiss the two noise entries (the Self-Healer's and the COO's "Unknown service" entries from 2026-10-19) on your "waiting on you" list. I couldn't do it: no agent tool can change a missing login, and the app's API needs its access token, which I don't touch.
  • Free up some disk space. It is at 98% used with 24 GB left, and it already filled up once overnight, which is why that database save failed.

Task #57 · done by Self-Healer with Godmode Bot

The fallback that reads the final answer for a failed login now only
files an entry when the run used the browser and a real page is open.
Without one it named no service and only quoted an error or another
agent's report.
@danielehrhardt
danielehrhardt merged commit c3a1efc into main Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant