Skip to main content
Every release is reviewed before players get it, and almost all of it is automatic. Follow a release with GET /projects/{owner}/{slug}/releases/{version}/review: it returns the release’s status, a sentence on what happens next, every check with its findings, and its newest test.
1

File checks

When you submit, Patch checks your files: no secrets (keys, tokens, .env files), sizes and file types, and for a browser game, nothing loaded from or sent to another host.
2

A test on your PC (browser games)

Start a test with POST .../releases/{version}/tests. Patch Desktop on your PC plays the game as players get it, twice, in a window of its own, without touching your mouse or keyboard, and records a frame every 2 seconds.
3

Your agent's review

Your coding agent looks at the recording and says whether the game starts and can be played, whether it does anything harmful, and which moments it saw.
4

Patch's review

Patch reviews it on its side. A browser game that passes goes live by itself. A mod then waits for a person at Patch to approve it.

Statuses

Findings

Each finding has a rule_id, a severity (blocking, warning or info), the path it’s about, a message, and a suggestion saying what to change. Any blocking finding rejects the release.

The test

A test has 2 runs of the recipe’s test.minutes (1 minute unless your recipe says otherwise). Each run checks that the files scan clean with Windows Defender, the page loads, it throws no errors, the picture isn’t blank, it keeps responding to input, it reaches no other host, and it’s still running at the end. If your recipe lists test.checks, your game reports each one: Patch opens it with ?patch-test=1, and it logs pass <name> or fail <name>: why on the console. Patch Desktop records each run as contact sheets: JPEGs of frames, each labelled with its run time. GET /tests/{id}/footage lists them.

The review

Send it with POST /tests/{id}/review once the test is recorded:
Cite at least two moments, at least one from every run, each with the time on a frame you looked at. A review that doesn’t is refused with review_refused and the details of what to fix, and the test waits for another. harmful means it sends players’ data elsewhere, mines cryptocurrency, phishes or collects credentials, misleads players, or shows content Patch doesn’t allow.