Verdict: disproven
The DOM beat two vision models at spotting what blocks a click.
Question: before an agent clicks, does something cover the target? A consent banner, a modal, a login wall. We collected 285 real pages in Cloudflare Browser Run, labelled each one by sending a real click, and asked three systems.
| System | F1 | Precision | Recall | p50 |
|---|---|---|---|---|
| ghost-local SmolVLM-256M on WebGPU in the browser. Same screenshot, same question. Scored on its worst of 3 runs. | 0.3485 | 0.3538 | 0.3433 | 301 ms |
| dom-rule One CDP call: does elementFromPoint at the target hit the target? Free. | 0.8833 | 1 | 0.791 | 0 ms |
| workers-ai-vision Workers AI vision model on the host. One screenshot, one yes/no question. | 0.6615 | 0.6825 | 0.6418 | 862 ms |
Rule: ghost-local needed F1 at least 0.8833 + 0.02 on the frozen holdout split. It scored 0.3485.
If your agent drives the browser over CDP, ask the page before you ask a model. The answer is one call and costs nothing. Send pixels to a model only for what the DOM cannot see: canvas, images, video.
Receipt: /proof.json. Frozen hashes: 8 files. Code, raw runs and the gate: https://github.com/acoyfellow/ghost.
A Customer 0 spike. Built on Browser Run, Workers AI, Workers and Transformers.js.