{
  "schema_version": 1,
  "generated_utc": "2026-09-22T02:47:27.537472+00:00",
  "absolute_tolerance": 1e-09,
  "relative_tolerance": 1e-09,
  "numeric_comparisons": 14104,
  "max_absolute_difference": 1.4210854715202004e-14,
  "checks": [
    {
      "id": "baseline",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 72
    },
    {
      "id": "disposition",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 90
    },
    {
      "id": "longitudinal",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 72
    },
    {
      "id": "adverse-events",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 2394
    },
    {
      "id": "laboratory",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 81
    },
    {
      "id": "subgroups",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 18
    },
    {
      "id": "time-to-event",
      "layer": "analysis",
      "status": "pass",
      "check": "Independent R / Python structured values",
      "rows": 363
    },
    {
      "id": "fixtures",
      "layer": "analysis",
      "status": "pass",
      "check": "Both runtimes: mean=2, SD=1, n=3; tied event/censor KM S(2)=0.5, risk=3"
    },
    {
      "id": "structure",
      "layer": "data",
      "status": "pass",
      "check": "Unique ADSL and ADTTE subjects; unique selected ADAS subject/visit; unique ALT End of Treatment subject; complete time/status; disposition reconciliation"
    },
    {
      "id": "package-tool",
      "layer": "package",
      "status": "not-run",
      "check": "Existing package QC tool identity / permitted local entry point pending confirmation. No internal service contacted."
    },
    {
      "id": "display",
      "layer": "presentation",
      "status": "not-run",
      "check": "Browser acceptance recorded separately after build; see local REPORT.md."
    }
  ],
  "environments": {
    "python": {
      "python": "3.13.13",
      "packages": {
        "numpy": "2.4.6",
        "pandas": "3.0.3",
        "scipy": "1.17.1"
      },
      "fixtures": "pass",
      "seed": "not applicable: deterministic"
    },
    "r": {
      "R": "4.6.0",
      "packages": {
        "haven": "2.5.5",
        "jsonlite": "2.0.0",
        "survival": "3.8.6",
        "ggplot2": "4.0.3"
      },
      "fixtures": "pass",
      "seed": "not applicable: deterministic"
    }
  },
  "code_sha256": {
    "analyze.py": "0293d208ce516b79f13ac3b932f47f83470399aef638f4615dd1854fb9c64f25",
    "analyze.R": "72a092e8a9faaf6ae0dd0fcadff8a7c9af27b5df115fe6bdb421372178c827f1",
    "fetch-data.py": "7d9b4f9948ad9aa87431b1f14e6b5de0e104b5d5e07e0010edfe2251f773efbf",
    "verify.py": "ab51ca787ecbc50833f1e552c34b23f5f4e0c05a6d8ff841d61545444355b918",
    "figures.py": "db1fde82dcab5038ce4b4b70223855ad2824121ba32fc915e5f4db551f3e202d",
    "figures.R": "b58bc0cb9b10f6bb9afec46f40ce413f310dc1ae753d391e843a05731653b499"
  },
  "result_sha256": {
    "baseline": "d2ff2910a730e69d395c23052768f775a97ba5edcf335a0d88291430da992e66",
    "disposition": "d85cc9ba425cfe4822b78e6e72c118e9ccde9a8af8d3b0341f47aaba5cd0211f",
    "longitudinal": "a5d3f6059347e196ed57fb4918b16e790f83dcad9a717c7436d789176fec4560",
    "adverse-events": "0a18273c01dd5364fdc26f66f479a51caadf82ee48f8f5aa57f325f52995cd65",
    "laboratory": "4728671dc626da9cd2cfb11edec3be128553e7d454b4949ac4c7e12a8fc846c2",
    "subgroups": "989a33d45ee857a773e725385a6ebe35448d05215d7a8bbec60cfadb0d9e36ec",
    "time-to-event": "6cd62ce74f073e6303f963af9356872f3095f130b787435afd097b0a376d6ac6"
  }
}
