{
  "builtFrom": "2a06e1b2cafb4dbdf06aad3754930907cfd94db2",
  "builtOn": "2026-09-29",
  "staleAfterDays": 30,
  "repository": "async-digital-ltd/seen-to-fail",
  "checks": [
    {
      "id": "ci-format-check",
      "name": "Format check",
      "area": "Code",
      "protects": "A file reaching main formatted differently from every other one.",
      "howToTellArmed": "The \"Check formatting\" step appears in every run of the CI workflow.",
      "status": "Unproven",
      "runCount": 0,
      "caughtCount": 0,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": null,
      "lastRunOn": null,
      "lastSettledOn": null,
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [],
      "observations": [
        {
          "id": "5739de89-6e62-34a7-adc1-b147dce0dbc2",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-format-check.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    },
    {
      "id": "ci-codegen-check",
      "name": "Generated types are current",
      "area": "Code",
      "protects": "A schema or query edited without regenerating the types both sides read.",
      "howToTellArmed": "The \"Check the generated types are current\" step appears in every run of the CI workflow.",
      "status": "Unproven",
      "runCount": 0,
      "caughtCount": 0,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": null,
      "lastRunOn": null,
      "lastSettledOn": null,
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [],
      "observations": [
        {
          "id": "04affd7d-6078-35b4-9c9a-4c0609998c4d",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-codegen-check.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    },
    {
      "id": "ci-lint",
      "name": "Lint",
      "area": "Code",
      "protects": "A lint rule being broken on main.",
      "howToTellArmed": "The \"Lint\" step appears in every run of the CI workflow.",
      "status": "Unproven",
      "runCount": 0,
      "caughtCount": 0,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": null,
      "lastRunOn": null,
      "lastSettledOn": null,
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [],
      "observations": [
        {
          "id": "03bb5767-0f08-3171-906a-60acdae9137b",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-lint.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    },
    {
      "id": "ci-test",
      "name": "Tests",
      "area": "Code",
      "protects": "A defect the test suite covers reaching main.",
      "howToTellArmed": "The \"Test\" step appears in every run of the CI workflow.",
      "status": "Unproven",
      "runCount": 0,
      "caughtCount": 0,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": null,
      "lastRunOn": null,
      "lastSettledOn": null,
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [],
      "observations": [
        {
          "id": "0ac9eb66-68a1-36bf-a853-73cc96f19196",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-test.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    },
    {
      "id": "ledger-export-agreement",
      "name": "The build refuses to publish a disagreement",
      "area": "Published record",
      "protects": "A published page that quietly holds fewer runs, or different counts, than the record it was built from.",
      "howToTellArmed": "The \"Build the published ledger\" step appears in every run of the CI workflow, and it writes nothing when the two disagree.",
      "status": "Proven",
      "runCount": 5,
      "caughtCount": 5,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": "2026-09-29",
      "lastRunOn": "2026-09-29",
      "lastSettledOn": "2026-09-29",
      "lastSeenArmedOn": null,
      "lastArmed": null,
      "runs": [
        {
          "id": "22546a1d-b261-32aa-8732-bafe2b0a6eab",
          "runOn": "2026-09-29",
          "planted": "One observation dropped from the export, inside the function that builds it, so the page holds one fewer than the ledger.",
          "expected": "The build refuses to publish, exits non-zero, and writes no files at all.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ledger-export-agreement-38ec12fa9e00.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "15252b3b-c31e-3a64-bf1c-e37f45ad9d37",
          "runOn": "2026-09-29",
          "planted": "The status tally counts nothing, so every tile on the page says zero however many checks hold that status.",
          "expected": "The build refuses to publish, exits non-zero, and writes no files at all.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ledger-export-agreement-1bc2c80d0f92.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "7b0a7090-b0a0-3920-b7a3-415eae3c2d6c",
          "runOn": "2026-09-28",
          "planted": "The status tally counts nothing, so every tile on the page says zero however many checks hold that status.",
          "expected": "The build refuses to publish, exits non-zero, and writes no files at all.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ledger-export-agreement-1f7adac26088.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "26a19ab8-bffb-3b39-bc69-ff9b2b612517",
          "runOn": "2026-09-28",
          "planted": "One observation dropped from the export, inside the function that builds it, so the page holds one fewer than the ledger.",
          "expected": "The build refuses to publish, exits non-zero, and writes no files at all.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ledger-export-agreement-3272e738be86.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "ebff4e2d-2e62-33c8-ad04-3fe622792d40",
          "runOn": "2026-09-18",
          "planted": "One record dropped from the export, inside the function that builds it, so the page held five arming observations where the ledger held six.",
          "expected": "The build refuses to publish, exits non-zero, and writes no files at all.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": "Seen on 2026-09-18 while building #63. The build published before the plant, refused with it in place and left no output directory behind, and published again once it was removed.",
          "source": "hand",
          "sourceCommit": null,
          "sourceRunUrl": null,
          "sourceFile": "ledger/runs/2026-09-18-ledger-export-agreement-b0e325dd50f8.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ],
      "observations": []
    },
    {
      "id": "ci-build-web",
      "name": "The client builds",
      "area": "Build",
      "protects": "A client that type checks and cannot be bundled, which the tests cannot see because they import modules rather than the page.",
      "howToTellArmed": "The \"Build the client\" step appears in every run of the CI workflow.",
      "status": "Unproven",
      "runCount": 0,
      "caughtCount": 0,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": null,
      "lastRunOn": null,
      "lastSettledOn": null,
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [],
      "observations": [
        {
          "id": "6b849f97-0e28-3cc9-9a96-5dbf94a3e06c",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-build-web.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    },
    {
      "id": "ledger-record-validation",
      "name": "The ledger refuses a malformed record",
      "area": "Published record",
      "protects": "A record that breaks a rule being committed, and then published as though it were true.",
      "howToTellArmed": "Both recording workflows run \"pnpm ledger:validate\" before they commit, and CI runs it again on every pull request and every push to main or a ci-control branch.",
      "status": "Proven",
      "runCount": 5,
      "caughtCount": 5,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": "2026-09-29",
      "lastRunOn": "2026-09-29",
      "lastSettledOn": "2026-09-29",
      "lastSeenArmedOn": null,
      "lastArmed": null,
      "runs": [
        {
          "id": "e07559ed-1b5b-3861-bff4-0cd6f1a92700",
          "runOn": "2026-09-29",
          "planted": "A run file naming a check that is not in the ledger.",
          "expected": "The validator refuses the ledger and exits non-zero, and nothing is recorded.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ledger-record-validation-59528dca73b0.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "4d5288e6-8f84-36a3-83f5-25558d950582",
          "runOn": "2026-09-29",
          "planted": "A run file whose outcome is a word the ledger does not know.",
          "expected": "The validator refuses the ledger and exits non-zero, and nothing is recorded.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ledger-record-validation-4f98cc886dcc.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "90c227b9-7d97-394b-b0ab-a54acbe09f3e",
          "runOn": "2026-09-28",
          "planted": "A run file whose outcome is a word the ledger does not know.",
          "expected": "The validator refuses the ledger and exits non-zero, and nothing is recorded.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ledger-record-validation-0de186eacea0.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "5bc20684-6439-334b-bdfc-3e2a4d7627cb",
          "runOn": "2026-09-28",
          "planted": "A run file naming a check that is not in the ledger.",
          "expected": "The validator refuses the ledger and exits non-zero, and nothing is recorded.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ledger-record-validation-68755d034582.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "ca7d60da-b70c-3352-bde1-b74332d6e899",
          "runOn": "2026-09-18",
          "planted": "A run file whose outcome was neither caught nor missed, and a second file naming a check that does not exist, dated in the future.",
          "expected": "The validator refuses the ledger and exits non-zero, and nothing is recorded.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": "Seen on 2026-09-18 while building #63. The validator exited 0 before the plant, 1 with each plant in place, and 0 again once both were removed.",
          "source": "hand",
          "sourceCommit": null,
          "sourceRunUrl": null,
          "sourceFile": "ledger/runs/2026-09-18-ledger-record-validation-718c6198ebf1.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ],
      "observations": []
    },
    {
      "id": "ci-published-output",
      "name": "The published page is checked after it is built",
      "area": "Published record",
      "protects": "A published page that names no commit it was built from, or that works something out in the reader's browser rather than at build time.",
      "howToTellArmed": "The \"Check the published output\" step appears in every run of the CI workflow.",
      "status": "Proven",
      "runCount": 4,
      "caughtCount": 4,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": "2026-09-29",
      "lastRunOn": "2026-09-29",
      "lastSettledOn": "2026-09-29",
      "lastSeenArmedOn": null,
      "lastArmed": null,
      "runs": [
        {
          "id": "c1362f8e-905b-3e55-b89b-76b2b2e4f4ea",
          "runOn": "2026-09-29",
          "planted": "The build writes a script tag into the page after the page it checked, so the file on disk is not the page it verified.",
          "expected": "The check of the published output fails, so the run does not go green.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ci-published-output-c5c1ff79f93e.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "a266cfc1-3f30-3f10-b250-1b58a200c2e3",
          "runOn": "2026-09-29",
          "planted": "The build reads the commit it was built from as the parent of HEAD, so the page's \"Built from\" lines name a commit the page was not built from.",
          "expected": "The check of the published output fails, so the run does not go green.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ci-published-output-0db979a46e0f.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "6b45dc6f-4256-38aa-b9c3-a47ccfffb0af",
          "runOn": "2026-09-28",
          "planted": "The build writes a script tag into the page after the page it checked, so the file on disk is not the page it verified.",
          "expected": "The check of the published output fails, so the run does not go green.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ci-published-output-473ea576412d.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "b700842e-d0f2-32aa-a177-1c1cd8b82285",
          "runOn": "2026-09-18",
          "planted": "A script tag appended to the built page, which the step exists to refuse.",
          "expected": "The step fails, so the run does not go green.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": "Seen on 2026-09-18 while building #63, against a copy of the real built page. Worth knowing how it got here: the step was first written as a negated grep, and set -e does not apply to a command whose status is inverted, so that version went green with the script sitting in the page. The plant is what showed it up. It was rewritten as an if and seen to deny before it ran anywhere.",
          "source": "hand",
          "sourceCommit": null,
          "sourceRunUrl": null,
          "sourceFile": "ledger/runs/2026-09-18-ci-published-output-3ead8c5899bb.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ],
      "observations": []
    },
    {
      "id": "ci-type-check",
      "name": "Type check",
      "area": "Code",
      "protects": "A type error reaching main.",
      "howToTellArmed": "The \"Type check\" step appears in every run of the CI workflow.",
      "status": "Proven",
      "runCount": 11,
      "caughtCount": 11,
      "missedCount": 0,
      "inconclusiveCount": 0,
      "lastCaughtOn": "2026-09-29",
      "lastRunOn": "2026-09-29",
      "lastSettledOn": "2026-09-29",
      "lastSeenArmedOn": "2026-09-18",
      "lastArmed": true,
      "runs": [
        {
          "id": "969d461f-88b6-3658-9cce-d7d3dc47c704",
          "runOn": "2026-09-29",
          "planted": "STATUSES loses its as const, so Status widens to string.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ci-type-check-2a67a77ce759.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "3d51bce8-4d13-3cd4-afcb-850b01fabe0c",
          "runOn": "2026-09-29",
          "planted": "STALE_AFTER_DAYS is written as a string rather than a number.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "ec2b3bd91178bf641bb1fe7c69812891aaafd267",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36588226891",
          "sourceFile": "ledger/runs/2026-09-29-ci-type-check-672fd6aec802.json",
          "recordedIn": "bb3e0112cb1cc244a35d1be3d6999696b099ef7e"
        },
        {
          "id": "e4f0bddf-e915-354f-b625-35e2f607e086",
          "runOn": "2026-09-28",
          "planted": "STALE_AFTER_DAYS is written as a string rather than a number.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ci-type-check-a9ddd985b07c.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "458f744b-60dd-3db6-b185-cc6d3add9036",
          "runOn": "2026-09-28",
          "planted": "STATUSES loses its as const, so Status widens to string.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "33b5238e3063101cbe2b43e19a42e1cf26144514",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/36412371539",
          "sourceFile": "ledger/runs/2026-09-28-ci-type-check-77cdfb5fa46d.json",
          "recordedIn": "6f29d42d4c8ddeace0ec592c279b8d76dd197f3f"
        },
        {
          "id": "d57485e4-b8fa-3908-9caa-de70ed6f65a5",
          "runOn": "2026-09-21",
          "planted": "STATUSES loses its as const, so Status widens to string.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "81e159cc56193008c60e83abdbe18b9b45e32a30",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35585966476",
          "sourceFile": "ledger/runs/2026-09-21-ci-type-check-f56163952474.json",
          "recordedIn": "f1348f8c93d4ffba043ecd2d92ee361c3034b424"
        },
        {
          "id": "a3781b50-63b9-38ee-97fc-2dc6ace2d851",
          "runOn": "2026-09-21",
          "planted": "STALE_AFTER_DAYS is written as a string rather than a number.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "81e159cc56193008c60e83abdbe18b9b45e32a30",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35585966476",
          "sourceFile": "ledger/runs/2026-09-21-ci-type-check-6b64c0a25549.json",
          "recordedIn": "f1348f8c93d4ffba043ecd2d92ee361c3034b424"
        },
        {
          "id": "d8b9e0db-b5de-3ec6-a590-cba1e41c5f69",
          "runOn": "2026-09-19",
          "planted": "STALE_AFTER_DAYS is written as a string rather than a number.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "333dab1f1608f615b1791098d0fca2e712033376",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35437095049",
          "sourceFile": "ledger/runs/2026-09-19-ci-type-check-439c19b44ff6.json",
          "recordedIn": "4cb7a8282d591cf4bc1bd9a030065fac31952247"
        },
        {
          "id": "a50a4786-eb2d-356e-acb6-0373a315e9aa",
          "runOn": "2026-09-19",
          "planted": "STATUSES loses its as const, so Status widens to string.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "62e34e977f2241cbe33b948cc31afd287b5420ed",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35429662430",
          "sourceFile": "ledger/runs/2026-09-19-ci-type-check-91afe63166af.json",
          "recordedIn": "f488228725c0a25a24b94fd81de820a858383132"
        },
        {
          "id": "814fbb6d-9d68-3669-adcd-48828512deb5",
          "runOn": "2026-09-19",
          "planted": "STATUSES loses its as const, so Status widens to string.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "333dab1f1608f615b1791098d0fca2e712033376",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35437095049",
          "sourceFile": "ledger/runs/2026-09-19-ci-type-check-81b07663df04.json",
          "recordedIn": "4cb7a8282d591cf4bc1bd9a030065fac31952247"
        },
        {
          "id": "3e52ee84-0019-3d96-831a-fa7a694370c7",
          "runOn": "2026-09-19",
          "planted": "STALE_AFTER_DAYS is written as a string rather than a number.",
          "expected": "The type check fails.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": null,
          "source": "replay",
          "sourceCommit": "62e34e977f2241cbe33b948cc31afd287b5420ed",
          "sourceRunUrl": "https://github.com/async-digital-ltd/seen-to-fail/actions/runs/35429662430",
          "sourceFile": "ledger/runs/2026-09-19-ci-type-check-a45615c23c38.json",
          "recordedIn": "f488228725c0a25a24b94fd81de820a858383132"
        },
        {
          "id": "c4a18ce8-6af9-3097-aa5e-069415a446a4",
          "runOn": "2026-09-18",
          "planted": "STALE_AFTER_DAYS was changed from the number 30 to the string 30 in quotes, on a ci-control branch pushed to this repository.",
          "expected": "The Type check step fails, so the CI run does not go green.",
          "outcome": "caught",
          "inconclusiveReason": null,
          "note": "Planted on the ci-control lane the README documents. Run 35405796729 on branch ci-control/63-type-check-plant at d6c0575 concluded failure, with Type check the only step that failed and every other step green or skipped. The branch was deleted and the constant put back afterwards.",
          "source": "hand",
          "sourceCommit": null,
          "sourceRunUrl": null,
          "sourceFile": "ledger/runs/2026-09-18-ci-type-check-26e856cc7276.json",
          "recordedIn": "a113f0f0ef428587c80b49432c7df7ab0bb78427"
        }
      ],
      "observations": [
        {
          "id": "99684f57-be55-3147-9c16-8576b05e2918",
          "observedOn": "2026-09-18",
          "armed": true,
          "note": "Read from run 35375392138 of the CI workflow on main at 14b479e, where the step ran and the run concluded success.",
          "sourceFile": "ledger/observations/2026-09-18-ci-type-check.json",
          "recordedIn": "7b4739846cddee1899986149736e1befeaa3ff53"
        }
      ]
    }
  ],
  "statusCounts": {
    "Unarmed": 0,
    "Broken": 0,
    "Proven": 4,
    "Stale": 0,
    "Unproven": 5
  }
}
