---
title: "Code Is a Claim. The Proof Is in the Playing. | DUZZ Blog"
description: "At 19:31 UTC on October 12, Cursor's Bugbot finished seven minutes of reviewing a pull request: no issues found. Forty seconds later, Duzz finished…"
url: https://duzz.ai/blog/code-is-a-claim-the-proof-is-in-the-playing
---

[← All posts](https://duzz.ai/blog)

OPINION · October 28, 2026 · 6 min read

# Code Is a Claim. The Proof Is in the Playing.

[Roy Pasternak](https://www.linkedin.com/in/roy-pasternak-4728b8170/)

CTO

_Coding agents test the code. Duzz tests the software the way users meet it._

At 19:31 UTC on October 12, Cursor's Bugbot finished seven minutes of reviewing a pull request: no issues found. Forty seconds later, Duzz finished playing the same change on four real Android devices: three bugs.

The review wasn't careless. It looked in the only place it can look, the code. The evidence was somewhere else: in what a player sees, and in what the phone sends. No software will be tested solely by looking at the code. Proof of work will always be signals from the end user's device, and here the end user was a Duzz agent.

## The loop in thirty seconds

We build a slot game in-house to exercise Duzz, on web, Android and iOS. Lior, one of our engineers, had Claude Code add a new machine, "Cash Heist". Claude Code wrote it, opened PR #73, and set up a Duzz run plan for its own change through the Duzz MCP. It wrote the checks itself, from the PRD, the code changes and what Duzz already knows about the game: previous runs, app knowledge, skills.

From there, agents took turns. While Bugbot reviewed the diff, the build was uploaded to Duzz, which grabbed real devices, installed it and played the scenarios like a player, and a separate Duzz agent judged the recording. Failures went to Cursor with the evidence. Cursor fixed and pushed, and Duzz played again.

![Coding agents own the author side. Duzz owns the user side.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/duzz-pr-loop.webp)

_Coding agents own the author side. Duzz owns the user side._

## Why reading the code isn't proof

The SDLC put a different person at each step: someone wrote the code, someone reviewed it, QA played the build, and production told you the rest. Shift left pulled testing earlier. Shift right learned from real users after release. Both leaned on time that the ADLC, the agentic development lifecycle, doesn't have.

Today one agent writes the change and its tests in minutes, and the agent that reviews it sees only the code. A second agent reading the same diff is a second opinion, not an independent check. Every check in that loop reads the author's claim. None of them uses the product.

## Three bugs nobody could read

Three of the four runs failed, and each failed run passed three of its four checks. The game worked. It was still wrong.

**"Symbols aligned" on a Pixel 8a.** The lobby, the spin result and the heist symbols all passed. Then the tester looked at the reels and wrote that the symbols "are not uniformly level or contained within their respective cells." The new cash bundles landed tilted and hung into the cell below. Caught on video.

![Pixel 8a, before the fix. The cash bundles land tilted, hang into the cell below and clip at the bottom of the reel window.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1041-259-symbols-fail.webp)

_Pixel 8a, before the fix. The cash bundles land tilted, hang into the cell below and clip at the bottom of the reel window._

**"Graphics overlay" on a Galaxy Tab S11.** The tester's verdict: "a visual asset depicting a vertical stack of cash topped with a money bag overlays the lower-right area of the reel frame and fifth reel." The same build passed the same check on a Pixel 10 Pro XL, which uses a wide layout. Caught on video.

Same code, different screen, different truth. A diff has no aspect ratio. The PR even shrank the lobby cards for a 16:10 tablet. It thought about the tablet. It just couldn't see one.

![Galaxy Tab S11, a 16:10 tablet, before the fix. The loot tower, cash bricks topped with a money bag, stands over the lower cells of the fifth reel.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1043-199-overlay-fail.webp)

_Galaxy Tab S11, a 16:10 tablet, before the fix. The loot tower, cash bricks topped with a money bag, stands over the lower cells of the fifth reel._

![Same build on a Pixel 10 Pro XL. The wide layout keeps the loot beside the cabinet, so this check passed. (The tilted CASH is here too; alignment was another scenario's job.)](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1042-200-overlay-pass-widephone.webp)

_Same build on a Pixel 10 Pro XL. The wide layout keeps the loot beside the cabinet, so this check passed. (The tilted CASH is here too; alignment was another scenario's job.)_

**"privacy works" on a Pixel 8 Pro.** A player in Germany declines tracking, then plays three spins. Everything on screen was right: the prompt came first, the buttons were equal, and the game played on after DECLINE. The fourth check was judged on the device log, where Duzz picks out the analytics events. The tester's verdict: after DECLINE, `cash_landed` events still showed up. Tracking kept firing after the player said no. A GDPR-shaped bug, caught in the log.

No screenshot can show that bug. The only witness was a signal the player never looks at but is entitled to: what their phone sends. Here an agent makes a better end user than a person. It sees what the player sees, and it reads the log.

![The EU player run on a Pixel 8 Pro: the Duzz agent taps DECLINE. Everything a player can see here passed.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1044-decline-tap.webp)

_The EU player run on a Pixel 8 Pro: the Duzz agent taps DECLINE. Everything a player can see here passed._

![The same run after DECLINE: each spin, its sound on the audio track, and a cash_landed event from the device log after every one.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1044-timeline-cash-landed.webp)

_The same run after DECLINE: each spin, its sound on the audio track, and a cash\_landed event from the device log after every one._

## Evidence in, fix out

When the runs failed, Duzz posted on the PR on Lior's behalf, addressed to `@cursor`: what failed, the tester's verdicts, and how to pull everything it recorded on the device through the Duzz MCP: video frames, audio, logs, metadata and analytics events. It asked Cursor to "Decide whether the frames show a real bug in the code or a scenario or device issue," and if it wasn't a code bug, to "Reply here with the frames that show why." Cursor was allowed to disagree. It just had to bring evidence.

It didn't disagree: "All three failures were real bugs in Cash Heist." It pushed a fix and added checks so the three stay fixed. Shift right found the bugs. Shift left now keeps them found.

```
19:24  Claude Code opens PR #73. Bugbot starts reviewing the code.
19:25  The build reaches Duzz. Four runs start on four real Android devices.
19:31  Bugbot: no issues found.
19:32  Duzz: 3 of 4 fail. Symbols aligned · Graphics overlay · privacy works
       The failures go to @cursor, with the evidence.
19:49  Cursor pushes its fix.
19:58  Duzz, on four other devices including another 16:10 tablet: 4 of 4 pass.
```

Thirty-four minutes from PR opened to green. Lior asked for the feature, the agents ran the loop, and a human decides the merge.

![After the fix, on a Galaxy Tab S9 (16:10). The loot sits small in the bottom-right corner, clear of the reels and the controls, and every bundle is level in its cell.](https://duzz.ai/media/blog-code-is-a-claim-the-proof-is-in-the-playing/sr1047-223-overlay-pass-tab.webp)

_After the fix, on a Galaxy Tab S9 (16:10). The loot sits small in the bottom-right corner, clear of the reels and the controls, and every bundle is level in its cell._

## What comes next

Coding agents will keep getting better at writing and reviewing code, and they'll run more of the loop with no person in it. That raises the bar for verification: a judge independent of the author, checks on what the software actually does, and evidence instead of confidence. Duzz hands the coding agent that piece, the one it can't reach from inside a repository: real devices; a harness where one agent plays and another judges; a data layer that lines up the DECLINE tap and every `cash_landed` on one timeline; and an ontology of scenarios and verifications the coding agent reads through an MCP. That is shift right, arriving at the shift-left moment, before merge.

Code is the author's claim. **Proof of work is what the user's device shows, plays and sends.** Here is my bet: within a year, merging a pull request that no agent has played will look as strange as merging one with no tests.

[Mobile Gaming](https://duzz.ai/blog?topic=mobile-gaming) [Technical](https://duzz.ai/blog?topic=technical)

Share

## Keep reading

-   [DUZZ RESEARCH · September 1, 2026

    ### Spatial Grounding - Practical Computer Use | Part 1

    Technical AI Agents Simulation Read post](https://duzz.ai/blog/spatial-grounding-practical-computer-use-part-1)
-   [OPINION · August 6, 2026

    ### Why We Decided to Build Duzz

    AI Agents Mobile Gaming Read post](https://duzz.ai/blog/why-we-decided-to-build-duzz)
-   [OPINION · July 27, 2026

    ### Gaming: The King of Testing

    Mobile Gaming AI Agents Simulation Read post](https://duzz.ai/blog/gaming-the-king-of-testing)

## Want to see it in action?

We'll show agents validating a workflow from your world.

[Book a demo](https://duzz.ai/contact) [Explore the platform](https://duzz.ai/platform)
