{
  "reqcov": "0.2.0",
  "generated_at": "2026-09-22 20:47 UTC",
  "git_sha": "cfd4bb7",
  "summary": {
    "total": 8,
    "uncovered": 1,
    "covered": 0,
    "verified": 5,
    "failing": 0,
    "skipped": 0,
    "n/a": 2,
    "test_coverage_pct": 83.33,
    "verified_pct": 83.33,
    "unknown_ids": 0,
    "orphan_tests": 1,
    "errors": 1,
    "warnings": 2
  },
  "requirements": [
    {
      "id": "SRS-10",
      "level": "SRS",
      "title": "Hysteresis control",
      "parents": [
        "SYS-1"
      ],
      "children": [],
      "verification": "test",
      "req_status": "approved",
      "status": "verified",
      "tests": [
        {
          "req_id": "SRS-10",
          "file": "tests/test_controller.py",
          "line": 6,
          "kind": "test",
          "marker": "req",
          "symbol": "test_hysteresis_turns_on_below_band"
        },
        {
          "req_id": "SRS-10",
          "file": "tests/test_controller.py",
          "line": 12,
          "kind": "test",
          "marker": "req",
          "symbol": "test_hysteresis_turns_off_above_band"
        }
      ],
      "results": [
        {
          "name": "test_hysteresis_turns_on_below_band",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_hysteresis_turns_off_above_band",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        }
      ],
      "sources": [
        {
          "req_id": "SRS-10",
          "file": "src/thermostat/__init__.py",
          "line": 22,
          "kind": "source",
          "marker": "implements",
          "symbol": "update"
        }
      ],
      "file": "docs/requirements/SRS.md",
      "line": 3
    },
    {
      "id": "SRS-11",
      "level": "SRS",
      "title": "Over-temperature cut-off",
      "parents": [
        "SYS-2"
      ],
      "children": [],
      "verification": "test",
      "req_status": "approved",
      "status": "verified",
      "tests": [
        {
          "req_id": "SRS-11",
          "file": "tests/test_controller.py",
          "line": 19,
          "kind": "test",
          "marker": "verifies",
          "symbol": "test_overtemp_cutoff"
        }
      ],
      "results": [
        {
          "name": "test_overtemp_cutoff",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        }
      ],
      "sources": [
        {
          "req_id": "SRS-11",
          "file": "src/thermostat/__init__.py",
          "line": 22,
          "kind": "source",
          "marker": "implements",
          "symbol": "update"
        }
      ],
      "file": "docs/requirements/SRS.md",
      "line": 8
    },
    {
      "id": "SRS-12",
      "level": "SRS",
      "title": "Setpoint validation",
      "parents": [
        "SYS-3"
      ],
      "children": [],
      "verification": "test",
      "req_status": "approved",
      "status": "verified",
      "tests": [
        {
          "req_id": "SRS-12",
          "file": "tests/test_controller.py",
          "line": 27,
          "kind": "test",
          "marker": "req",
          "symbol": "test_setpoint_validation"
        }
      ],
      "results": [
        {
          "name": "test_setpoint_validation[5.0-True]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[30.0-True]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[4.9-False]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[30.1-False]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        }
      ],
      "sources": [
        {
          "req_id": "SRS-12",
          "file": "src/thermostat/__init__.py",
          "line": 15,
          "kind": "source",
          "marker": "implements",
          "symbol": "set_setpoint"
        }
      ],
      "file": "docs/requirements/SRS.md",
      "line": 14
    },
    {
      "id": "SRS-13",
      "level": "SRS",
      "title": "Sensor fault handling",
      "parents": [
        "SYS-2"
      ],
      "children": [],
      "verification": "test",
      "req_status": "approved",
      "status": "uncovered",
      "tests": [],
      "results": [],
      "sources": [
        {
          "req_id": "SRS-13",
          "file": "src/thermostat/__init__.py",
          "line": 22,
          "kind": "source",
          "marker": "implements",
          "symbol": "update"
        }
      ],
      "file": "docs/requirements/SRS.md",
      "line": 19
    },
    {
      "id": "SRS-14",
      "level": "SRS",
      "title": "Logging format",
      "parents": [],
      "children": [],
      "verification": "inspection",
      "req_status": "approved",
      "status": "n/a",
      "tests": [],
      "results": [],
      "sources": [],
      "file": "docs/requirements/SRS.md",
      "line": 24
    },
    {
      "id": "SYS-1",
      "level": "SYS",
      "title": "Temperature regulation",
      "parents": [],
      "children": [
        "SRS-10"
      ],
      "verification": "demonstration",
      "req_status": "approved",
      "status": "n/a",
      "tests": [],
      "results": [],
      "sources": [],
      "file": "docs/requirements/SYS.md",
      "line": 3
    },
    {
      "id": "SYS-2",
      "level": "SYS",
      "title": "Safety cut-off",
      "parents": [],
      "children": [
        "SRS-11",
        "SRS-13"
      ],
      "verification": "test",
      "req_status": "approved",
      "status": "verified",
      "tests": [
        {
          "req_id": "SYS-2",
          "file": "tests/test_controller.py",
          "line": 19,
          "kind": "test",
          "marker": "verifies",
          "symbol": "test_overtemp_cutoff"
        }
      ],
      "results": [
        {
          "name": "test_overtemp_cutoff",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        }
      ],
      "sources": [],
      "file": "docs/requirements/SYS.md",
      "line": 7
    },
    {
      "id": "SYS-3",
      "level": "SYS",
      "title": "Setpoint range",
      "parents": [],
      "children": [
        "SRS-12"
      ],
      "verification": "test",
      "req_status": "approved",
      "status": "verified",
      "tests": [
        {
          "req_id": "SYS-3",
          "file": "tests/test_controller.py",
          "line": 27,
          "kind": "test",
          "marker": "req",
          "symbol": "test_setpoint_validation"
        }
      ],
      "results": [
        {
          "name": "test_setpoint_validation[5.0-True]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[30.0-True]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[4.9-False]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        },
        {
          "name": "test_setpoint_validation[30.1-False]",
          "classname": "examples.pytest-project.tests.test_controller",
          "status": "passed",
          "file": "",
          "message": ""
        }
      ],
      "sources": [],
      "file": "docs/requirements/SYS.md",
      "line": 11
    }
  ],
  "unknown_ids": [],
  "orphan_tests": [
    {
      "name": "test_default_setpoint",
      "classname": "examples.pytest-project.tests.test_controller",
      "status": "passed",
      "file": "",
      "message": ""
    }
  ],
  "findings": [
    {
      "severity": "warning",
      "code": "UNCOVERED",
      "message": "SRS-13 has no linked test",
      "file": "docs/requirements/SRS.md",
      "line": 19
    },
    {
      "severity": "warning",
      "code": "DERIVED",
      "message": "SRS-14 has no parent requirement (derived?)",
      "file": "docs/requirements/SRS.md",
      "line": 24
    },
    {
      "severity": "error",
      "code": "COVERAGE",
      "message": "test coverage of requirements 83.3% is below the required 100.0%",
      "file": "",
      "line": 0
    },
    {
      "severity": "info",
      "code": "ORPHAN_TEST",
      "message": "test examples.pytest-project.tests.test_controller::test_default_setpoint is not linked to any requirement",
      "file": "",
      "line": 0
    }
  ],
  "delta": null
}