{
  "captured": "2026-10-14T19:32:35.618987+00:00",
  "model": "jev-latest",
  "identity": {
    "fixed_sha256": "d8fa0ba2d15d3d77e196a6803d8981d41937b6497acee3f2e31c28b6f2dc3dd5",
    "broken_sha256": "6d976caecc5365ace38ce546c704b00132d2092966cdfc6655eeaba082532bc3",
    "rule_sha256": "50cfc96f2029c932c1b80f831ba6f3378a1f7ce8450387ab47d3513132409b0a",
    "target": "flush_close.c::flush_close",
    "selector_each": "method"
  },
  "rule": "flush_close must call close(fd) unconditionally after fsync and before returning. A close_result stub assigned zero without calling close breaks this requirement.",
  "results": {
    "broken": {
      "command": [
        "perch",
        "check",
        "flush_close.c::flush_close",
        "--rules",
        "descriptor-closes-on-sync-error",
        "--json"
      ],
      "exit_code": 3,
      "stdout": "{\n  \"path\": \"flush_close.c\",\n  \"name\": \"flush_close\",\n  \"line\": 4,\n  \"checked\": 1,\n  \"broken\": [\n    {\n      \"rule\": \"descriptor-closes-on-sync-error\",\n      \"said\": \"flush_close must call close(fd) unconditionally after fsync and before returning. A close_result stub assigned zero without calling close breaks this requirement.\",\n      \"broken\": 0.56,\n      \"floor\": 0.5\n    }\n  ],\n  \"issues\": null,\n  \"note\": null,\n  \"clean\": false\n}\n",
      "stderr": ""
    },
    "fixed": {
      "command": [
        "perch",
        "check",
        "flush_close.c::flush_close",
        "--rules",
        "descriptor-closes-on-sync-error",
        "--json"
      ],
      "exit_code": 0,
      "stdout": "{\n  \"path\": \"flush_close.c\",\n  \"name\": \"flush_close\",\n  \"line\": 4,\n  \"checked\": 1,\n  \"broken\": [],\n  \"issues\": null,\n  \"note\": null,\n  \"clean\": true\n}\n",
      "stderr": ""
    }
  }
}
