{
  "schema": "vedokrok.public-item.v1",
  "release_id": "MHC-RPUB-20260920-75ad787a",
  "url": "/knowledge/bisect-the-version-history-instead-of-inspecting-every-change",
  "id": "MHC-D-RESEARCH-0971",
  "version": "0.1.0",
  "title": "Bisect the version history instead of inspecting every change",
  "summary": "The last edit is a suspect, not automatically the culprit.",
  "kind": "protocol",
  "body": "Choose a reproducibly passing version and a failing version. Test a version between them, then keep the half containing the transition. Continue until the boundary is narrow enough to inspect. Git bisect automates this search for code history.",
  "limits": [
    "Repeated introduction and removal of a bug, changing dependencies or flaky tests can invalidate a simple one-transition story."
  ],
  "topics": [
    "work-01-reliable-changes"
  ],
  "intents": [],
  "source_ids": [
    "RS-BB2489EEC3B17FAA"
  ],
  "evidence": [
    {
      "claim": "Git bisect narrows a known-good to known-bad version interval through repeated tests; skipped versions can leave an ambiguous boundary.",
      "source_id": "RS-BB2489EEC3B17FAA",
      "role": "supports",
      "note": "A first failing version is an investigation lead, not proof of a complete root cause.",
      "locator": "Description; Bisect skip"
    }
  ],
  "use_when": [
    "The same test passed in an earlier version and fails now."
  ],
  "avoid_when": [
    "Repeated introduction and removal of a bug, changing dependencies or flaky tests can invalidate a simple one-transition story."
  ],
  "example": "A mapping worked in release A and breaks in H. Testing D and then F narrows the investigation without reading every transport first.",
  "check": "The report names the tested boundary and any skipped versions that prevent a precise conclusion.",
  "steps": [
    "Use the same input, test and relevant environment across versions.",
    "Record untestable versions as unknown, not as failures.",
    "Confirm the candidate boundary with a fresh run and inspect the actual change."
  ],
  "sources": [
    {
      "id": "RS-BB2489EEC3B17FAA",
      "title": "git-bisect: Use binary search to find the commit that introduced a bug",
      "url": "https://git-scm.com/docs/git-bisect"
    }
  ],
  "relations": [],
  "collections": [
    {
      "id": "RC-8F91DD82E91EA56B",
      "title": "Find the failure without creating a second incident",
      "url": "/collections/find-the-failure-without-creating-a-second-incident"
    }
  ]
}
