{
  "description": "For each case, the exact text of a claims.json file, the bundle's verification inputs, the declared value of each result its claims name, and the claim ID of every claim in it. A claim with evidence binds the verification inputs and, when its evidence names results, a results object mapping each name to its value. Every file under invalid must be rejected, and every case under unresolved must fail because a named result isn't declared.",
  "invalid": [
    {
      "name": "a duplicate property name, which parsers resolve differently",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.1,\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a lone surrogate in a string",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Broken \\ud800 text.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a number outside binary64",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":1e400,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a field the schema doesn't define",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\",\"priority\":\"high\"}]"
    },
    {
      "name": "an empirical claim without evidence",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a confidence above 1",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":1.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a dependency cycle",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[\"C2\"],\"confidence\":0.5,\"local_id\":\"C1\"},{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C2.\",\"evidence\":[],\"depends_on\":[\"C1\"],\"confidence\":0.5,\"local_id\":\"C2\"}]"
    },
    {
      "name": "an unknown local dependency",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[\"C9\"],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a duplicate local ID",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"},{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Another.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a malformed global ID",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[\"claim:7f3a\"],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "evidence given as an object",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":{},\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "evidence given as a string",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":\"\",\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "depends_on given as an object",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":{},\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "depends_on given as a string",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":\"\",\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "evidence fields of the wrong type",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":7,\"produced_by\":false}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "empty evidence strings",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"\",\"produced_by\":\"\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a local ID ending in a newline",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\\n\"}]"
    },
    {
      "name": "an evidence item that is two kinds at once",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1.x\",\"produced_by\":\"code/run.py\",\"measured\":\"data/x.csv\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a computation outside code/",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1.x\",\"produced_by\":\"run.py\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a measurement outside data/",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1.x\",\"measured\":\"results/R1.json\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a proof with a checker the protocol doesn't name",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"proof\":\"proofs/A.thy\",\"theorem\":\"A.t\",\"checker\":\"isabelle\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "a result name with no key",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1\",\"produced_by\":\"code/run.py\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    },
    {
      "name": "an integer outside binary64",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1.x\",\"produced_by\":\"code/run.py\",\"tolerance\":10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]"
    }
  ],
  "unresolved": [
    {
      "name": "a result the bundle doesn't declare",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[{\"result\":\"R1.x\",\"produced_by\":\"code/run.py\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R1.y": 1
      }
    }
  ],
  "cases": [
    {
      "name": "one theoretical claim, no evidence, so the verification inputs don't matter",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Every finite group of prime order is cyclic.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"T1\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {},
      "expected": {
        "T1": "claim:064c6f94da735bbcbe879cccff80904356cb19a01ae882d030bb4130c129c6df"
      }
    },
    {
      "name": "an empirical claim binds the verification inputs",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Method X lowers validation loss vs. baseline Y on dataset Z across 5 seeds.\",\"evidence\":[{\"result\":\"R1.loss_delta\",\"produced_by\":\"code/eval.py\",\"tolerance\":0.002}],\"depends_on\":[],\"confidence\":0.8,\"local_id\":\"E1\",\"falsified_if\":\"A re-run with 5 fresh seeds yields no significant improvement.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R1.loss_delta": -0.031
      },
      "expected": {
        "E1": "claim:8c53b1f66a231974bfb852af37db14652df5a3f7c2d75d1f9e7767354722c7a7"
      }
    },
    {
      "name": "the same empirical claim with different verification inputs gets a different ID",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Method X lowers validation loss vs. baseline Y on dataset Z across 5 seeds.\",\"evidence\":[{\"result\":\"R1.loss_delta\",\"produced_by\":\"code/eval.py\",\"tolerance\":0.002}],\"depends_on\":[],\"confidence\":0.8,\"local_id\":\"E1\",\"falsified_if\":\"A re-run with 5 fresh seeds yields no significant improvement.\"}]",
      "verification_inputs": "sha256:2af60728e4ce584034632820ec484aab9776b8e3a0a436b097cc57a8d6f84bb4",
      "results": {
        "R1.loss_delta": -0.031
      },
      "expected": {
        "E1": "claim:9fdcc8cfa5c639398cf7175ab66657b7616dad89c10323eb9f1852e26ee4d00a"
      }
    },
    {
      "name": "the same empirical claim with a corrected result gets a different ID",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Method X lowers validation loss vs. baseline Y on dataset Z across 5 seeds.\",\"evidence\":[{\"result\":\"R1.loss_delta\",\"produced_by\":\"code/eval.py\",\"tolerance\":0.002}],\"depends_on\":[],\"confidence\":0.8,\"local_id\":\"E1\",\"falsified_if\":\"A re-run with 5 fresh seeds yields no significant improvement.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R1.loss_delta": -0.029
      },
      "expected": {
        "E1": "claim:738a8ffc862806557adcb525d7647a51c184f78593918a22b36e3f9894f8ecf6"
      }
    },
    {
      "name": "local dependencies declared out of order, repeated, and mixed with a ledger ID",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C3.\",\"evidence\":[],\"depends_on\":[\"C2\",\"claim:d117a2e1d23c437d04758cb66fbb7a3594886916c106a3db2a0a3f13435ae0b4\",\"C1\",\"C2\"],\"confidence\":0.5,\"local_id\":\"C3\"},{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C1.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"C1\"},{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement C2.\",\"evidence\":[],\"depends_on\":[\"C1\"],\"confidence\":0.5,\"local_id\":\"C2\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {},
      "expected": {
        "C3": "claim:c0fa5ccf050164573264cb8670077d6fed38130704ad1412b0027d238f7b2397",
        "C1": "claim:809f644931b8a293e54e28e2f348578c440569de40c2db5a83d3074acd3ddc65",
        "C2": "claim:e4b8037ffcba5443fbf3c4946c661fe0601cbe6b725c1818cc9c58a4da739a08"
      }
    },
    {
      "name": "a claim without evidence inherits the inputs through an empirical dependency",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement E1.\",\"evidence\":[{\"result\":\"R2.accuracy\",\"produced_by\":\"code/run.py\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"E1\"},{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Statement T1.\",\"evidence\":[],\"depends_on\":[\"E1\"],\"confidence\":0.5,\"local_id\":\"T1\"}]",
      "verification_inputs": "sha256:2af60728e4ce584034632820ec484aab9776b8e3a0a436b097cc57a8d6f84bb4",
      "results": {
        "R2.accuracy": 0.9137
      },
      "expected": {
        "E1": "claim:e11e4b4637b2ffa990145258a3676b7c2495a48f65fa033248de30167e0be31b",
        "T1": "claim:71716ad0b7f29c3d826147fc1d46a95fbf7e4a0ffbe6d2f709223f41c873fe72"
      }
    },
    {
      "name": "non-ASCII text, quotes, and a control character in strings",
      "claims_json": "[{\"type\":\"methodological\",\"core\":true,\"statement\":\"Ångström-scale \\\"naïve\\\" estimates in 東京 data hold\\tat ≥ 2σ 😀.\",\"evidence\":[],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"U1\",\"falsified_if\":\"A line break\\nin a falsification test.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {},
      "expected": {
        "U1": "claim:c88eeb4634fb1645a2f03c9d5bfb7c106fc734a1084afce1b7b7262b384dce4d"
      }
    },
    {
      "name": "two claims reading different results: correcting one result changes only its reader (first)",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement A1.\",\"evidence\":[{\"result\":\"R6.speedup\",\"produced_by\":\"code/bench.py\",\"tolerance\":0.05}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"A1\"},{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement A2.\",\"evidence\":[{\"result\":\"R6.memory_mb\",\"produced_by\":\"code/bench.py\",\"tolerance\":1}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"A2\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R6.speedup": 1.84,
        "R6.memory_mb": 512
      },
      "expected": {
        "A1": "claim:0c954f2c57ade2a9fd6ef7b4b1a57e1020b178b97f39b138b3c0be0a1a63c66e",
        "A2": "claim:38071e5e60b09923e523158745246a8c3ac642b15f67e4ae9982accdad13d0cc"
      }
    },
    {
      "name": "two claims reading different results: correcting one result changes only its reader (second)",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement A1.\",\"evidence\":[{\"result\":\"R6.speedup\",\"produced_by\":\"code/bench.py\",\"tolerance\":0.05}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"A1\"},{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement A2.\",\"evidence\":[{\"result\":\"R6.memory_mb\",\"produced_by\":\"code/bench.py\",\"tolerance\":1}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"A2\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R6.speedup": 1.79,
        "R6.memory_mb": 512
      },
      "expected": {
        "A1": "claim:fc37790e4e0e0709b48b0687df922b387779f9663d3fdbfe8bf46a8964e3ee00",
        "A2": "claim:38071e5e60b09923e523158745246a8c3ac642b15f67e4ae9982accdad13d0cc"
      }
    },
    {
      "name": "a measurement binds the value read from its raw record",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Compound K melts at 151.8 °C at atmospheric pressure.\",\"evidence\":[{\"result\":\"R7.melting_point_c\",\"measured\":\"data/dsc/run1.csv\",\"tolerance\":0.5}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"M1\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R7.melting_point_c": 151.8
      },
      "expected": {
        "M1": "claim:6038966dfbdba9e3b1312da93771272b299c2547a51e30c7218db5f06714bd7e"
      }
    },
    {
      "name": "a proof binds the verification inputs and no results",
      "claims_json": "[{\"type\":\"theoretical\",\"core\":true,\"statement\":\"Every finite group of prime order is cyclic.\",\"evidence\":[{\"proof\":\"proofs/PrimeOrder.lean\",\"theorem\":\"PrimeOrder.cyclic_of_prime_card\",\"checker\":\"lean4\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"P1\"}]",
      "verification_inputs": "sha256:2af60728e4ce584034632820ec484aab9776b8e3a0a436b097cc57a8d6f84bb4",
      "results": {},
      "expected": {
        "P1": "claim:6ec8fcfafb59e18dd74dd27ce8e0037715443c6d2d75dcddb9145827c4a22942"
      }
    },
    {
      "name": "results that aren't numbers, and one result named twice, which binds once",
      "claims_json": "[{\"type\":\"empirical\",\"core\":true,\"statement\":\"Statement V1.\",\"evidence\":[{\"result\":\"R8.series.2\",\"produced_by\":\"code/run.py\"},{\"result\":\"R8.meta\",\"produced_by\":\"code/run.py\"},{\"result\":\"R8.label\",\"measured\":\"data/notes.txt\"},{\"result\":\"R8.none\",\"produced_by\":\"code/run.py\"},{\"result\":\"R8.series.2\",\"produced_by\":\"code/other.py\"}],\"depends_on\":[],\"confidence\":0.5,\"local_id\":\"V1\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R8.series.2": 0.25,
        "R8.meta": {
          "runs": [
            1,
            2.5
          ],
          "ok": true
        },
        "R8.label": "Ångström",
        "R8.none": null
      },
      "expected": {
        "V1": "claim:114669209cef119c080b1c9cb9b8484eb37dddb93308337bf64c4b268e7e463e"
      }
    },
    {
      "name": "whole-number floats, as Python writes them",
      "claims_json": "[{\"local_id\": \"N1\", \"type\": \"negative_result\", \"statement\": \"Treatment T has no effect on outcome O.\", \"evidence\": [{\"result\": \"R3.effect\", \"produced_by\": \"code/run.py\", \"tolerance\": 0.0}], \"confidence\": 1.0, \"core\": true, \"depends_on\": [], \"falsified_if\": \"The listed result is not reproduced.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R3.effect": 1
      },
      "expected": {
        "N1": "claim:949e17ee897ac1af1be90dcfcc940f8a78af45e980d109c1037101c7c20dd05c"
      }
    },
    {
      "name": "very small numbers, as Python writes them",
      "claims_json": "[{\"local_id\": \"N2\", \"type\": \"empirical\", \"statement\": \"Estimator E converges at the predicted rate.\", \"evidence\": [{\"result\": \"R4.a\", \"produced_by\": \"code/run.py\", \"tolerance\": 1e-07}, {\"result\": \"R4.b\", \"produced_by\": \"code/run.py\", \"tolerance\": 1e-05}, {\"result\": \"R4.c\", \"produced_by\": \"code/run.py\", \"tolerance\": 1.5e-10}, {\"result\": \"R4.d\", \"produced_by\": \"code/run.py\", \"tolerance\": 5e-324}], \"confidence\": 0.0001, \"core\": true, \"depends_on\": [], \"falsified_if\": \"The listed result is not reproduced.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R4.a": 1e-7,
        "R4.b": 0.00001,
        "R4.c": 1.5e-10,
        "R4.d": 5e-324
      },
      "expected": {
        "N2": "claim:3ad83a08f2ac1ae9603899e4b62b699bcff67f34519a25c047871a7cdb435beb"
      }
    },
    {
      "name": "very large numbers and binary-fraction artifacts, as Python writes them",
      "claims_json": "[{\"local_id\": \"N3\", \"type\": \"empirical\", \"statement\": \"Simulation S conserves energy to the stated tolerance.\", \"evidence\": [{\"result\": \"R5.a\", \"produced_by\": \"code/run.py\", \"tolerance\": 1e+16}, {\"result\": \"R5.b\", \"produced_by\": \"code/run.py\", \"tolerance\": 1e+21}, {\"result\": \"R5.c\", \"produced_by\": \"code/run.py\", \"tolerance\": 123456789.125}], \"confidence\": 0.30000000000000004, \"core\": true, \"depends_on\": [], \"falsified_if\": \"The listed result is not reproduced.\"}]",
      "verification_inputs": "sha256:7585cc4258bb6d7147686ab083b1d373c8c7ba648790560dc475c78db48949e8",
      "results": {
        "R5.a": 10000000000000000,
        "R5.b": 1e+21,
        "R5.c": 0.30000000000000004
      },
      "expected": {
        "N3": "claim:84c191f0b2681fac65b975ba621fa99a4ce9d94b6f319dbf29faa8813963441c"
      }
    }
  ]
}
