{
  "$note": "Independent re-execution record. Written by scripts/reexecute.py; read by scripts/render_papers.mjs to render the verification badge. A match here means the analysis code, re-run from its pinned inputs, reproduced the published numbers \u2014 a computational reproduction, not peer review.",
  "object": "examples/invacost-invasion-costs",
  "slug": "invasion-economics-invacost-cost-structure",
  "method": "re_execution",
  "runner": {
    "kind": "self-hosted-deterministic",
    "note": "the object's analysis code, re-run in an isolated work dir from its pinned inputs (fetched by id + md5), on a library stack independent of the authoring environment"
  },
  "authoring_environment": "local:python3 \u2014 statsmodels/scipy/numpy/pandas/matplotlib/openpyxl; Figshare API resolves file url, md5-verifies, reproduces every number",
  "ran_at": "2026-07-07T20:14:48Z",
  "environment": {
    "python": "3.13.12",
    "packages": {
      "numpy": "2.4.4",
      "pandas": "2.3.3",
      "scipy": "1.17.1",
      "statsmodels": "0.14.6",
      "matplotlib": "3.10.9"
    }
  },
  "inputs_pinned": [
    {
      "source": "figshare",
      "source_id": "12668570",
      "source_doi": "10.6084/m9.figshare.12668570.v5",
      "license": "CC BY 4.0",
      "files_used": [
        "Descriptors 4.1.xlsx",
        "Update_Invacost_4.1.xlsx",
        "InvaCost_database_v4.1.xlsx"
      ]
    }
  ],
  "tolerance": {
    "rel": 1e-06,
    "abs": 1e-09
  },
  "code": {
    "component": "analysis",
    "path": "analysis.py",
    "sha256": "71a710893713823981a757da4a2b5ef641c39ceff26700dd5dbc0309d52e4bf2"
  },
  "results_sha256": {
    "committed": "0a74b0ec5dfbb64b85680bd9547ce241fd64ef5c00e50eefb1141e5341904f6b",
    "reexecuted": "0a74b0ec5dfbb64b85680bd9547ce241fd64ef5c00e50eefb1141e5341904f6b"
  },
  "wall_seconds": 22.1,
  "results_compared": {
    "committed": "results.json",
    "values_compared": 40,
    "numeric_mismatches": 0,
    "max_abs_diff": 0.0
  },
  "mismatches": [],
  "claims_covered": [
    "claim-1",
    "claim-2",
    "claim-3",
    "claim-4"
  ],
  "status": "matched"
}
