{
  "verified_on": "2026-09-22",
  "run_window_utc": [
    "2026-09-22T22:23:40.186Z",
    "2026-09-22T22:24:29.944Z"
  ],
  "ptah": {
    "version": "0.8.0",
    "commit": "061fac0c6b2607f9442b440168fb45c3dfe5ba39",
    "release": "https://github.com/stokaro/ptah/releases/tag/v0.8.0",
    "checksums_txt_sha256": "50dedfd99fbf32acffd290ebb65a3ee57ebc08570daf8ffe499f462b0d36a0d4",
    "linux_amd64": {
      "archive": "ptah_0.8.0_linux_amd64.tar.gz",
      "archive_sha256": "524daaf3caff9f6894a613e481bdda2d724e455af1c2913e7485c09bc158b871",
      "binary_sha256": "238e4929a3ca0e88957fd3317caec159b0b89f3565e3c8c0a0476a7ec26bf2e0",
      "used_for": "online and release examples, inside the PostgreSQL container"
    },
    "darwin_arm64": {
      "archive": "ptah_0.8.0_darwin_arm64.tar.gz",
      "archive_sha256": "d0d3845a0b11871d4ea2c5d057f7f4cbd42494f4244db7bb7316f3a8197789e5",
      "binary_sha256": "d495115d59bd6faff68e1d58d04db528e34dba61e6a8893f82cd865b7c452fe2",
      "used_for": "release example on SQLite"
    }
  },
  "postgres": {
    "version": "18.6",
    "image": "postgres@sha256:1957b2ff3137e4ef7f3bc813e74fff50b1e1ffddc85c8b9d6f14ade972be8687",
    "docker_context": "remote-dev-container"
  },
  "sqlite": {
    "engine": "the SQLite driver built into ptah 0.8.0 darwin/arm64",
    "rows_loaded_with": "sqlite3 3.51.0"
  },
  "checks": [
    "online generate with diff.online_alter: exit 0; no_transaction, ADD CONSTRAINT ... NOT VALID, VALIDATE CONSTRAINT",
    "online generate without ptah.yaml: exit 0; one ADD CONSTRAINT with lock_timeout=3s and statement_timeout=30s",
    "after migrations generate, ptah.sum still listed only the first pair (sha256 647ef5e1...); migrations hash rewrote it (sha256 5152d4c5...)",
    "lint, default rules, latest 1: exit 0; PG305 warning on the NOT VALID line",
    "lint, online: require, latest 1: exit 0; no ON101 finding; PG305 warning",
    "up --lock-timeout 3s: exit 2; migration is marked no_transaction",
    "online mode, up --dry-run: exit 2; lock timeout required on PostgreSQL",
    "online mode, up --dry-run --lock-timeout 3s: exit 2; migration is marked no_transaction",
    "online mode, up --dry-run --tx-mode none: exit 0",
    "read before the migration: psql exit 0",
    "migration behind a 10-second blocking transaction: exit 0; applying from 22:24:02.725Z to 22:24:10.671Z",
    "pg_stat_activity during the wait: ALTER TABLE ... ADD CONSTRAINT waiting on Lock",
    "read during the wait with lock_timeout 2s: psql exit 3; canceling statement due to lock timeout",
    "online schema compare: exit 0; status --exit-code: exit 0; accounts_plan_known convalidated t",
    "release up: exit 0; schema compare --exit-code: exit 0; status --exit-code: exit 0",
    "db verify: exit 1; 1 verified, 1 failed",
    "db verify on an empty directory: exit 1; not verified",
    "down to 1790100000: exit 0; status afterwards: 1 pending",
    "migrations log: exit 0; up applied, up applied, down rolled_back; actor release-bot, source provided",
    "SQLite: compare exit 0; verify exit 1 with a report byte-identical to PostgreSQL; log with the same three attempts",
    "article-output: every titled block matches its file (npm run check:examples)"
  ],
  "output_files": {
    "rule": "A .txt or .json file under measured/ is the command's standard output byte for byte, and a .stderr.txt file its standard error. Two files are excerpts, listed in excerpts.",
    "excerpts": {
      "online/measured/1790115827_plan_known.up.sql": "online/migrations/1790115827_plan_known.up.sql with a final newline added; the generator writes none",
      "online/measured/lock-timeout-refused.txt": "the last line of online/measured/up-lock-timeout.stderr.txt"
    }
  },
  "scope": "Three rows in the release example and none in the online example. One blocking transaction and one read in the lock-queue measurement. No application workload, large-table validation timing, replication, or MySQL and MariaDB run.",
  "files_sha256": {
    "README.md": "71e68e0a711d36ac405383f17ac1c7c919a4ed64cd2c98ffbbfeb98cfbcc1b1d",
    "commands.json": "0bb0213bf3e330fb3d674a4d14eb102ecf181d11ffb42c11a9e0ac9f6428dd57",
    "online/blocker.sql": "9babeeb7d3d57cd8ff06c9a642fec2089cca6c11c447cc3f0175a4bb77d922b1",
    "online/measured/1790115827_plan_known.up.sql": "50efa01d0457bef357b2ab5866ffc7ae7d2056c027c6de5d1fd048a88e91e892",
    "online/measured/blocker.txt": "0de27195fae83c175c32a654b0d62946f267bed026d76e284cb8613dfe14e17c",
    "online/measured/compare.txt": "b44e534fcc70af3b7c2b1c7e48c74f5f3378e01a2c98bed574f841f16633e040",
    "online/measured/constraint.txt": "4c9d69ef505aa043cce6cb5a50771d3cafab9725d1b23b1dc83233fc1377bd2c",
    "online/measured/generate-without-online-alter.txt": "7678d8e395c20ac9dece1f01e8fc0b9f872b2c6f48429f5ca7b2336b0c92d8cc",
    "online/measured/generate.txt": "49601f5ffa079550d951ed858e10b0634a09759375ffcb244d50d79b80dde8e9",
    "online/measured/lint-online-mode.txt": "82ea55401ff41288238755a96839c5273e64f849f5fe9dd80e8a0b0bd3f82f25",
    "online/measured/lint.txt": "82ea55401ff41288238755a96839c5273e64f849f5fe9dd80e8a0b0bd3f82f25",
    "online/measured/lock-timeout-refused.txt": "59553f186932091b2be7d4a0e79998864343e8fc47a099fff183a110cbd025d5",
    "online/measured/log.txt": "7fa605c50ad7b71a7447dc972715cdd3f394163ad3a663ebfa601d1abd51ffbb",
    "online/measured/online-mode-up-lock-timeout.stderr.txt": "f86d9c8e46537be8b38cb65914d9ef69916b46bfdd4fe493b3a8ab74a4ed94b8",
    "online/measured/online-mode-up-lock-timeout.txt": "0eecd713ddfe0a8d399fa1e5e3750eafeed73b13ba2df4986c1bbca116f81ab6",
    "online/measured/online-mode-up-tx-none.stderr.txt": "a9e6d6f06516d6a93420b00437c00c22e4e80be2357a7cb05bce863915d8724d",
    "online/measured/online-mode-up-tx-none.txt": "e44e882476792bcf54e19530a8c6c69667a3a6b30a89f48ecadeaac25a2e6a47",
    "online/measured/online-mode-up.stderr.txt": "3f51bf5eb3cc0309e30376e2c748702bc8ae379668a16b4ad80c61ff127cd622",
    "online/measured/reader-before.txt": "200944247fd5ca936189f811b2e0b628a4d5fb851db25774bed28176dd2c98cd",
    "online/measured/reader-during.stderr.txt": "5cebf8363fa32488e9a09c4b89b343ca4d23fb94d08468517f42b4774231c9dc",
    "online/measured/reader-during.txt": "ea9929b54aa8dfc21ceaf1351c394f058a724787c04939c844981e2e89958578",
    "online/measured/status.txt": "4398f18e6af315ddde26cb785de7cbc33b839887c7b1f27521b0940f49181ccd",
    "online/measured/up-behind-blocker.stderr.txt": "56d6838d582e9b0c5d27a7ac9b0184d09e0f68f382061fcd1655e5818c53949b",
    "online/measured/up-behind-blocker.txt": "99a56e88ed0195bf22c713c403193880412fd7f833ab5a45df9ae460797a287c",
    "online/measured/up-lock-timeout.stderr.txt": "4994c0f0116c9b1a096231f1fdb9b4d5ffe7129924f8b1a3f9b4dabdd16f7346",
    "online/measured/up-lock-timeout.txt": "9d89ffd62402c974d94022be924484bde2eb980199d39d8e5038310101c4334d",
    "online/measured/waiting.txt": "c00abbbbab62915e5ab6dd760b67d11ab9df6cd3507685b9ba1be9cf720def36",
    "online/measured/without-online-alter.up.sql": "38542b2fd4491b360e1b43e244e1147fb451f8bf90719d48a80d4619657b892e",
    "online/migrations/1790100000_create_accounts.down.sql": "d2614c18fc0cdf5c1f5ed3bdfa125e8d8d8bb95f994663a5e3a68a04f1738ae9",
    "online/migrations/1790100000_create_accounts.up.sql": "3b33e2663cb1328fedf9cd691faac47630059f035c9d824d23cb9fc8ab1fd223",
    "online/migrations/1790115827_plan_known.down.sql": "6ebac69bf77a457b79a359d8ec37fc54c22ef6515884112b28dc04e3ff003eed",
    "online/migrations/1790115827_plan_known.up.sql": "92115c802562173775e548e3c86dec0c4a3bd3cab97acab70056cf0faabf6ba2",
    "online/migrations/ptah.sum": "5152d4c580a795c52529791172550ce99ca2ad64946cd510ba8cfbdeaf7f8b2f",
    "online/online-lint.yaml": "e52dfee0c2002acb48b616c9a4b18a37f6739516645e2dba11284a5fdb2b2b86",
    "online/ptah.yaml": "be6d20bef2f5eca7606091ec6a1e25420204c9ecb3665a64b7ade91503418842",
    "online/reader.sql": "b745592615ff8a49e6308b421db76a794a93e6b7d42da934e0bae8883878db73",
    "online/schema.sql": "76a3a46bbe035ef3fdea0429ac7dc2ac3bb0edbec3da5e7f40e1b286ab2bab7c",
    "online/waiting.sql": "f71fab448cc4063c48d4474d3d8711570c8693048ca86f26136ae426bedc0623",
    "release/existing-accounts.sql": "2fb05bac885b308b5fdd6489f9f0a51f614a75905cfb016df1aee91f5369c830",
    "release/measured/compare.txt": "28891ce4a103ed91e7674682472c5a2cb8a9b2cbc57639f118f02860c8fd091f",
    "release/measured/down.stderr.txt": "9474d2aefdd65d6b8cf9ec74c8c92bca20b03cead168838b397ae7e05629c1aa",
    "release/measured/down.txt": "476fefeef45d4bad70091c81cc0835efff359715465b25eea340a08b22ba2f32",
    "release/measured/existing-rows.txt": "454525997acc1e769ec6a30df26ae3a89c6c91c7e9adf391718d61f9a7a8a1e6",
    "release/measured/log.json": "38b97b5c0fb402c7057409a1913315d9318ad1ecf850683840bd420eb41ece7e",
    "release/measured/log.txt": "e842c1a55560505a0377515515512448002a458ec2cee699f6be01afed49f72f",
    "release/measured/sqlite/compare.txt": "c180cc014166278776b433063a5db408d28c43eed640d1c85b54e4de55a7ff1b",
    "release/measured/sqlite/log.txt": "f96827decfc5379ef7b6adb32f1886d6857c37e866af74d449488f8c163e1a92",
    "release/measured/sqlite/verify.txt": "271827062a95cc475f56d7c34d619a7cbe61afb5b9117eb2d8864937892b3242",
    "release/measured/status-after-down.txt": "fadb23b70391ef49be2e6793c7371e95207763bc4f045d32451855ca64a3815d",
    "release/measured/status.txt": "5d08227f56c06659b8d0f4ef9ee33d5d924688266b369d5cd04a6ef4d1ef7c7e",
    "release/measured/up-create.stderr.txt": "2c6b9663b737e48c05a1b828bf5f1cff190cba8fda3145ebaae5ffbbcadaabdc",
    "release/measured/up-create.txt": "caff5366b3fa0d6d720a9e0bf5e8cf284200440b71381ac425bff04de54756bb",
    "release/measured/up-release.stderr.txt": "a507c81048a93638f1954ce6eda973a56a03f2f44d34372e46aaa82d99563903",
    "release/measured/up-release.txt": "70d08327f322be2a0d2c5599e63fbe87a611914b87591e0ff48ad04c56656faf",
    "release/measured/verify-empty.txt": "f81d4088b5297e1066e9def5ae5a274409427f2aa922403e1423febb6c8c39e7",
    "release/measured/verify.json": "4cca07e0cfc69540ff88bd275190108a41b216754b1b1e90b9e215d23c6a21fc",
    "release/measured/verify.txt": "271827062a95cc475f56d7c34d619a7cbe61afb5b9117eb2d8864937892b3242",
    "release/migrations/1790100000_create_accounts.down.sql": "d2614c18fc0cdf5c1f5ed3bdfa125e8d8d8bb95f994663a5e3a68a04f1738ae9",
    "release/migrations/1790100000_create_accounts.up.sql": "3b33e2663cb1328fedf9cd691faac47630059f035c9d824d23cb9fc8ab1fd223",
    "release/migrations/1790100060_add_tier.down.sql": "e479c2f688974e6ebe5e724abef2331a86ba340d10025a68a889521b6b17cbc9",
    "release/migrations/1790100060_add_tier.up.sql": "f80a8ad2dffb0d213cf2dc26adcb0be91c00fe8146a2dcbec996511c78b42792",
    "release/migrations/ptah.sum": "3a49483cb8fc063f7525482e76041233ad5fa6d346994514ce332660c046ea43",
    "release/release-checks/010_tier.sql": "d427728791efea26dfaeac70b8879ec77938942a370471a3c03c4be3eef8b3e7",
    "release/schema.sql": "70ced712783a1fa1d3e41d305e471a258e1527c2e60129e1811f4f2239ffcce0"
  }
}
