false-green-testslisted
Install: claude install-skill reticlehq/reticle
# The suite is green and the app is broken
A green test is evidence about the test, not about the app. This skill separates the two by running the real app and comparing what it _does_ against what the test _claims_.
It uses **Reticle**, which observes the running app from the inside: DOM, network, console, routing, and framework state. Not installed? `RETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest init`, then see the [`install-and-verify`](https://github.com/reticlehq/reticle/blob/main/skills/install-and-verify/SKILL.md) skill.
## The five shapes, in the order they are worth checking
**1. The assertion cannot fail.** Read the test the user trusts. If it only asserts absence (no console error, no thrown exception, no rejected promise) it passes on a control wired to nothing. A dead button throws nothing, fires nothing, and changes nothing. Prove it in the app instead:
```
reticle_act_and_wait({ sessionId, ref, action: "click", until: { kind: "allOf", predicates: [
{ kind: "net", method: "POST", urlContains: "/api/...", status: 200 },
{ kind: "signal", name: "..." },
]}})
```
A verdict of `no` here, against a green suite, is the false green.
**2. The test drove a mock and the app drives an API.** Compare what the app actually requested with what the test stubbed:
```
reticle_network({ sessionId, since })
```
No request where the test asserted one means the suite verified a fixture. A stale client cache is the same failure with no request at all t