RUN_FIELDS = {"interface": str, "task_hash": str, "version": str, "provenance": str,
              "submitted": bool, "diagnosed": bool, "deviation": dict, "source_id": str}
def run_suite(card, tolerance):
    errors = []
    normal = []
    injected_ok = False
    for name, run in card.get("runs", {}).items():
        missing = [field for field, kind in RUN_FIELDS.items()
                   if field not in run or type(run[field]) is not kind or run[field] in ("", None)]
        deviation = run.get("deviation", {})
        if type(deviation.get("value")) not in (int, float) or deviation.get("unit") != "probability points":
            missing.append("deviation_schema")
        if missing:
            errors.append(name + ":" + ",".join(sorted(set(missing))))
            continue
        if name == "injected":
            injected_ok = not run["submitted"] and run["diagnosed"]
        else:
            normal.append(run)
    portable = len(normal) == 2 and all(run["submitted"] for run in normal) and len({run["task_hash"] for run in normal}) == 1
    reproducible = portable and all(run["deviation"]["value"] <= tolerance for run in normal)
    decision = "invalid" if errors else ("reproducible-platform" if reproducible and injected_ok else "portable-tooling")
    return {"decision": decision, "errors": errors, "portable": portable,
            "reproducible": reproducible, "injected_diagnosed": injected_ok}
card = {"scenario": "two-adapter Bell workflow", "runs": {
    "a": {"interface": "adapter-a", "task_hash": "bell:91ac", "version": "1.4.2",
          "provenance": "job+calibration", "submitted": True, "diagnosed": False,
          "deviation": {"value": 0.01, "unit": "probability points"}, "source_id": "scenario:run-a"},
    "b": {"interface": "adapter-b", "task_hash": "bell:91ac", "version": "2.0.1",
          "provenance": "job+calibration", "submitted": True, "diagnosed": False,
          "deviation": {"value": 0.03, "unit": "probability points"}, "source_id": "scenario:run-b"},
    "injected": {"interface": "adapter-a", "task_hash": "bell:91ac", "version": "1.4.2",
                 "provenance": "typed error trace", "submitted": False, "diagnosed": True,
                 "deviation": {"value": 0.0, "unit": "probability points"}, "source_id": "scenario:failure-injection"}}}
base_result = run_suite(card, 0.02)
bad_runs = {**card["runs"], "a": {key: value for key, value in card["runs"]["a"].items() if key != "provenance"}}
bad_result = run_suite({**card, "runs": bad_runs}, 0.02)
improved_runs = {**card["runs"], "b": {**card["runs"]["b"], "deviation": {"value": 0.015, "unit": "probability points"}}}
improved_result = run_suite({**card, "runs": improved_runs}, 0.02)
assert base_result["portable"] and not base_result["reproducible"] and base_result["injected_diagnosed"]
assert bad_result["decision"] == "invalid" and "provenance" in bad_result["errors"][0]
assert improved_result["decision"] == "reproducible-platform"
print(f"PASS: 75 platform suite base={base_result['decision']} invalid={bad_result['errors']} deviation1.5pp={improved_result['decision']}")
