{
  "schema": 1,
  "repository": "brunnojob/vercel-home-telemetry-api",
  "source_commit": "dbdf44fe0567cb3db8444598b58815a961ebab7a",
  "generated_at": "2026-10-10T05:28:18.758258+00:00",
  "run_url": "https://github.com/brunnojob/vercel-home-telemetry-api/actions/runs/38027604887",
  "inputs_sha256": {
    ".proof/scenarios.json": "ad401bca7a9bba8971b8f2054c784bf8c50459d16aae6b5d61fd6dd8a1f5e495",
    ".proof/demo.mjs": "1f210ae20f36e98f9a1e01751c21b73bfdfbbfd815a7bcc6a444a3f6fd9d3220",
    "cloud/outbox.rb": "6dc5d9aec48ca3ba5ed9696b0f65f9c583f6bc416ea88ca4b3547b73c3738c08",
    ".proof/ruby-demo.rb": "03cc071ba41a1f7610428e0983011cf240b6e390ff1d2478157dfe612062747c"
  },
  "cases": [
    {
      "display": false,
      "name": "npm ci",
      "argv": [
        "bash",
        "-e",
        "-o",
        "pipefail",
        "-c",
        "npm ci"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 9.797,
      "output": "npm warn deprecated stream-to-promise@2.2.0: Deprecated. Use node:stream/promises and node:stream/consumers instead.\nnpm warn deprecated path-match@1.2.4: This package is archived and no longer maintained. For support, visit https://github.com/expressjs/express/discussions\nnpm warn deprecated tar@6.2.1: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me\n\nadded 336 packages, and audited 337 packages in 10s\n\n26 packages are looking for funding\n  run `npm fund` for details\n\n32 vulnerabilities (1 low, 10 moderate, 20 high, 1 critical)\n\nTo address all issues (including breaking changes), run:\n  npm audit fix --force\n\nRun `npm audit` for details.\nnpm warn install-scripts 10 packages have install scripts not yet covered by allowScripts:\nnpm warn install-scripts   esbuild@0.23.1 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.27.0 (postinstall: node install.js)\nnpm warn install-scripts   esbuild@0.14.47 (postinstall: node install.js)\nnpm warn install-scripts\nnpm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve <pkg>` to allow.\n",
      "output_sha256": "f1f7f3e12ef3b66d48a5dff5c57017cb7b1072bc1adb179eade5c2deb7600e2a"
    },
    {
      "display": true,
      "name": "npm test",
      "argv": [
        "bash",
        "-e",
        "-o",
        "pipefail",
        "-c",
        "npm test"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 0.303,
      "output": "\n> vercel-home-telemetry-api@2.0.0 test\n> node --test tests/*.test.mjs\n\n✔ Netlify preserves authentication denial and response headers (41.967069ms)\n✔ ambiguous query parameters never reach a handler (0.791402ms)\n✔ streamed body limits apply without Content-Length (3.642383ms)\n✔ malformed JSON and unsupported content are rejected (1.734886ms)\n✔ status, user token, query and parsed payload survive adaptation (1.38226ms)\n✔ passes parsed input and preserves endpoint status and headers (46.372951ms)\n✔ rejects duplicated query parameters before calling the handler (0.695273ms)\n✔ limits a streamed payload even without Content-Length (1.234065ms)\n✔ invalid JSON and unsupported content types never reach domain logic (1.47189ms)\n✔ rejects requests without a session before database access (1.787283ms)\n✔ rejects oversized results and never invokes the RPC (50.379751ms)\n✔ forwards the user JWT and maps the RPC persistence result (1.466677ms)\nℹ tests 12\nℹ suites 0\nℹ pass 12\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 140.020899\n",
      "output_sha256": "c13f903d8c98191b3f6767e42d8d66296059b6bc1b9aa6cf0b85e2ba30bab1c3"
    },
    {
      "display": true,
      "name": "npm run typecheck",
      "argv": [
        "bash",
        "-e",
        "-o",
        "pipefail",
        "-c",
        "npm run typecheck"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 1.005,
      "output": "\n> vercel-home-telemetry-api@2.0.0 typecheck\n> tsc --noEmit\n\n",
      "output_sha256": "968ee6be561084ff731c511ad62fa60eab74fd99eeeddaa5956595246d7cb5d0"
    },
    {
      "display": true,
      "name": "python -m unittest discover -v -s cloud",
      "argv": [
        "bash",
        "-e",
        "-o",
        "pipefail",
        "-c",
        "python -m unittest discover -v -s cloud"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 0.452,
      "output": "test_confirmed_receipt_marks_the_report_sent (test_receipts.ReceiptTests.test_confirmed_receipt_marks_the_report_sent) ... ok\ntest_events_reject_empty_values_of_the_wrong_type (test_receipts.ReceiptTests.test_events_reject_empty_values_of_the_wrong_type) ... ok\ntest_invalid_receipts_keep_the_report_pending (test_receipts.ReceiptTests.test_invalid_receipts_keep_the_report_pending) ... ok\ntest_omitted_events_and_empty_list_have_the_same_key (test_receipts.ReceiptTests.test_omitted_events_and_empty_list_have_the_same_key) ... ok\ntest_conflicting_key_cannot_overwrite_a_report (test_sync.OutboxTests.test_conflicting_key_cannot_overwrite_a_report) ... ok\ntest_retries_keep_reports_until_confirmed (test_sync.OutboxTests.test_retries_keep_reports_until_confirmed) ... ok\n\n----------------------------------------------------------------------\nRan 6 tests in 0.082s\n\nOK\n",
      "output_sha256": "a6f7fbc9f23a7f97fcc6d03e32a152e5e7d7bdbf01613d83b03207a0afd8c51a"
    },
    {
      "display": true,
      "name": "Run real Request/Response adapter and enforce input limits",
      "argv": [
        "node",
        ".proof/demo.mjs"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 0.101,
      "output": "{\"accepted\":{\"method\":\"POST\",\"body\":{\"status\":\"passed\"},\"query\":{\"project\":\"proof\"}},\"status\":201,\"duplicate_query\":400,\"oversized_body\":413}\n",
      "output_sha256": "b82f8566345c2c68fd2e8f5ff36e628b6221069222fa92fc087e54b40491a012"
    },
    {
      "display": true,
      "name": "Ruby delivery receipt and retry regression tests",
      "argv": [
        "ruby",
        "cloud/test_outbox.rb"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 1.404,
      "output": "Ruby outbox checks passed\n",
      "output_sha256": "2a16fc27598e0a581cb085b63ee3974470bb660e5c18a444a2ae0e259d394718"
    },
    {
      "display": true,
      "name": "Persist Ruby outbox, recover after restart and reject corrupt records",
      "argv": [
        "ruby",
        ".proof/ruby-demo.rb"
      ],
      "exit": 0,
      "expected_exit": 0,
      "passed": true,
      "seconds": 0.201,
      "output": "{\"recovered\":{\"pending\":1,\"delivered\":0,\"failedAttempts\":0},\"idempotent_replay\":true,\"capacity_rejected\":true,\"corrupt_record_rejected\":true,\"network_requests\":0}\n",
      "output_sha256": "bbce48bc919ae583251f1d50b7ce852908ad4bbbac0a9931e3462de5df093b47"
    }
  ],
  "passed": true
}
