{
  "captured": "2026-10-14T19:19:03.781064+00:00",
  "model": "jev-latest",
  "identity": {
    "fixed_sha256": "106baad284243d5a12a11b7019cca0178660797d39618a201f201a2ff6126218",
    "broken_sha256": "90f3c8ceb619a5633848425d536d62e9cd4b379b3540e1e81f2b523018831fe4",
    "rule_sha256": "b72136a4807ff01cc67e1d9cd98710c2528008d6a08c756e451ed5f87f1561b0"
  },
  "rule": "Before mutating an order, the locked queryset must filter tenant_id by actor.tenant_id. Matching owner_id without the tenant restriction is insufficient.",
  "results": {
    "broken": {
      "command": [
        "perch",
        "check",
        "orders/cancellation.py",
        "--rules",
        "tenant-scoped-lock",
        "--json"
      ],
      "exit_code": 3,
      "stdout": "{\n  \"path\": \"orders/cancellation.py\",\n  \"name\": \"orders/cancellation.py\",\n  \"line\": 1,\n  \"checked\": 1,\n  \"broken\": [\n    {\n      \"rule\": \"tenant-scoped-lock\",\n      \"said\": \"Before mutating an order, the locked queryset must filter tenant_id by actor.tenant_id. Matching owner_id without the tenant restriction is insufficient.\",\n      \"broken\": 0.72,\n      \"floor\": 0.5\n    }\n  ],\n  \"issues\": null,\n  \"note\": null,\n  \"clean\": false\n}\n",
      "stderr": ""
    },
    "fixed": {
      "command": [
        "perch",
        "check",
        "orders/cancellation.py",
        "--rules",
        "tenant-scoped-lock",
        "--json"
      ],
      "exit_code": 0,
      "stdout": "{\n  \"path\": \"orders/cancellation.py\",\n  \"name\": \"orders/cancellation.py\",\n  \"line\": 1,\n  \"checked\": 1,\n  \"broken\": [],\n  \"issues\": null,\n  \"note\": null,\n  \"clean\": true\n}\n",
      "stderr": ""
    }
  }
}
