Build1 publisher3 min readPublished
Checkly recorded golden files from its Node daemon before Claude Code wrote the Go replacement
Checkly's Results Daemon handles about 92 million messages a day. The Go rewrite, written by Claude Code, shipped with zero incidents and a 70% cut in running pods after the team spent its first effort on a black-box parity harness.
The Engineer · Build desk

What happened
- Checkly rewrote its Results Daemon, a Node.js background worker, in Go, and let Claude Code write the code.
- The company reports the rewrite shipped with zero incidents, a 70% reduction in running pods, and a lighter database load.
- Before the agent wrote anything, the team recorded the legacy service's outputs into golden files and used them to assert byte-to-byte parity from the Go version.
- Check volume on Checkly's platform doubled over the last year, and the vanilla JavaScript Results Daemon was the component that degraded most under the load.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint Byte-to-byte parity against recorded legacy output makes the old service the specification, so any improvement in behavior has to be excluded from the parity set case by case.
- decision Because the oracles grade any candidate implementation, a team can throw away the agent's first output and run the second attempt through the same gate.
- cost Whoever copies this pays for the harness before any migration payoff: a real Postgres container, a hand-written SQS emulator, Toxiproxy in the network path, and a recording pass against the live legacy service.
- capability Checkly credits Go's type system with catching regressions in agent-written code, a gate that fires at build time before any container has to start.
A golden file in this harness is the legacy daemon's own output, recorded per test case against the Node service, then replayed as the pass condition for the Go version, byte for byte [11]. Fields that cannot repeat, such as UUIDs and timestamps generated during the test run, are stored as `<uuid>` and `<timestamp>` and are still type-checked [12].
Correct, in a setup like this, means what the Node service did on the day the files were recorded. Anything the team wanted to change in behavior has to be pulled out of the parity set by hand. The assertions themselves live in oracle classes, and Checkly's example is `PostgresOracle.expectResultToMatchSnapshot(testId)`, which fetches the relevant output and asserts byte-level accuracy against the golden file [16].
The harness never imports the thing it tests [10]. It owns the surrounding components, which Checkly calls boundaries, and hands the system under test their addresses through environment variables [13]. So one suite survived a language change.
Boundaries run as real services. Data written to PostgreSQL goes to a real PostgreSQL container, not an emulated one [14]. For SQS the team wrote its own emulator instead of using ElasticMQ or LocalStack, and reports it as more performant and simpler in both the tests and the assertions [15]. Docker Compose starts and tears the containers down locally and in CI [18]. Toxiproxy sits in the TCP path so the team can test how the daemon behaves when surrounding infrastructure fails [19]. Playwright runs the cases, picked for network interception and parallel execution, and because Checkly's own synthetic monitoring product is built on it [17]. A team without that in-house familiarity is choosing a runner on those properties and paying the learning cost.
Of the roughly 92 million daily messages, about 40 million are check results and the remainder are WebSocket publishes to the CLI and UI, so the publish path carries on the order of 52 million a day [6][22]. Averaged flat, the result path alone runs near 460 messages a second [23]. A 70% reduction in running pods leaves the Go deployment at about three-tenths of the Node pod count [3][24]. For that ratio to transfer, your Node workers would have to have been scaled on the same kind of parse-and-write work, and your rewrite would have to hold the workload constant. Checkly reports the reduction as an outcome of the rewrite as a whole [26].
The typing claim is the part carrying the least evidence. Checkly says Go's stronger type system proved a better fit for agents than JavaScript, adding protection against regressions and letting the team ship faster [4]; the post does not say how many errors the compiler caught while the agent was writing. The sequencing claim is easier to accept, and the post states it directly: "What made it work was the test harness we built before the agent wrote a line" [5]. Checkly's stated question was whether an agentic rewrite could be trusted for a critical, high-throughput production service and not a prototype [25]. The rewrite shipped with zero incidents at 92 million messages a day [1][3], and on the evidence published, the harness has at least as strong a claim to that as the model does.
What to watch
- Whether Checkly publishes the harness or the golden-file tooling, so the pattern can be tested outside its own stack.
- A count of regressions the Go compiler caught during agent authorship would test the claim that static typing helps the model. The post makes the claim without numbers.
- Whether the parity suite stays in CI after the Node service is retired, or is thrown away with it.