# Evidence for "A Big Update to the Ptah Playground"

Everything here was captured from the live site, <https://play.ptah.run/>, on
September 23, 2026, after the deployment of
[stokaro/ptah-sandbox#7](https://github.com/stokaro/ptah-sandbox/pull/7)
(commit `7b22563`). Nothing was run against a local copy.

## What was running

The About dialog of the page read, in that session:

```text
Ptah v0.8.0 (061fac0c6b26), built with go1.27.1, 63 commands registered.
SQLite 3.53.4 (2026-07-24), VFS unix-none, memdb, kvvfs, unix-excl,
unix-dotfile, unix. Every value on this line was read from the module running
in this tab.
```

The browser was headless Chrome 153, driven by Playwright, with the light
theme. The first-visit tour was marked as seen before the page loaded, so it
does not appear in the screenshots.

## Terminal output

Each file under `measured/` is the terminal transcript of one command, from
its `$` line to its last line of output, as the page's terminal drew it. The
exit code is the one the terminal's bar showed.

| File | Scenario and step | Exit |
| --- | --- | --- |
| `measured/a1-drift.txt` | Change a schema, keep the data: 01 Explore | 0 |
| `measured/a3-dry-run.txt` | Change a schema, keep the data: 03 Preview SQL | 0 |
| `measured/a4-apply.txt` | Change a schema, keep the data: 04 Apply, answered `YES` | 0 |
| `measured/a5-drift.txt` | Change a schema, keep the data: 05 Verify | 0 |
| `measured/b1-drift.txt` | Detect drift: 01 Start in sync | 0 |
| `measured/b3-drift.txt` | Detect drift: 03 Run drift, after `ALTER TABLE users ADD COLUMN nickname TEXT;` | 1 |
| `measured/b4-drift-json.txt` | Detect drift: 04 Read the report, with `--format json` | 1 |

Step 02 of each scenario runs no Ptah command: the first applies the step's
patch to `schema.sql`, and the second runs its statement from the SQL pane.

## Screenshots

| File | Window | Device pixel ratio | State |
| --- | --- | --- | --- |
| `../overview@2x.png` | 1280 x 800 | 2 | After step 03, with the Plan pane showing the dry run |
| `../patch@2x.png` | 1280 x 1000 | 2 | After Apply patch, with the mark on line 9 opened. The file list and the editor |
| `../apply-asks@2x.png` | 1024 x 1000 | 2 | While `schema apply` waits for its answer. The strip and the terminal |
| `../rows@2x.png` | 1280 x 1000 | 2 | The users table after the apply. The top 388 pixels of the editor and the Database pane |
| `../scenarios@2x.png` | 1280 x 1000 | 2 | The scenario picker, with 150 pixels of the dimmed page on each side |
| `../phone@2x.png` | 390 x 844 | 3 | Three screens placed side by side on a plain background |

The blog shows every image at the full width of its column, so each detail
shot covers a region between 768 and 1048 pixels wide, close to that width,
and its text comes out near the size of the post's own. The three phone
screens come from one session in an emulated phone browser (mobile viewport,
touch enabled): the Console tab after step 01, the editor over the whole
screen after Apply patch, and the Database tab after the apply.

## The download

The figures for the first visit come from the smoke job of the site's
deployment run for `7b22563`, which fetched the binary from play.ptah.run:

```text
smoke: OK  sha256 of the served binary matches the manifest
smoke: transfer  wire 23.2 MiB, decoded 120.0 MiB, 19.4% of raw, 2.836369s
smoke: OK  content-encoding: gzip, the transfer is 19.4% of the raw size
```

## What this does not establish

The probe the post mentions, 50 checks, runs in a 1440 by 1100 frame in
headless Chrome. The phone figures come from browser emulation, not from a
device. None of the output here says anything about PostgreSQL, MySQL or any
engine other than SQLite, because the page cannot reach one.
