{
  "change": "fix(mobile): update the iOS Git header menu when status changes (optionsVersion keyed on memoized header items; ThreadHeader extracted verbatim)",
  "commit": "7bff9d5c9f24b627301c3f18e748c799299f30a2",
  "parent": "3eb1c7a557 (reconnect refresh layer)",
  "environment": {
    "device": "iPhone 17 Pro simulator, iOS 27",
    "build": "Release, Hermes -O, dev=false, no Metro",
    "server": "isolated remote fixture workspace"
  },
  "workload": "Same reconnect fixture: background more than 16 s, add or delete an untracked file, resume, open the header Git menu.",
  "before": {
    "bundle": {
      "sha256": "521c10fcfb4993cb37698d13316467716699da240b1f98231a3d6c2ff8531b52",
      "source": "3eb1c7a557 (reconnect refresh only)",
      "note": "actual parent bundle for this layer"
    },
    "resumeRefreshStatusCalls": 1,
    "headerGitMenu": "master, Clean (stale despite the refreshed status)",
    "screenshot": "header-before.png (captured on bundle 521c10fc: reconnect layer only, master Clean after background + new untracked file)"
  },
  "after": {
    "bundle": {
      "sha256": "068d991222abf9ad3bb59b2d92f9a0342d8f79ee402bcd7196d1297554268f65",
      "source": "7bff9d5c9f; source map shows exactly 4 differing sources vs the sheet-loop bundle, each equal to the committed blob"
    },
    "addFileResume": {
      "refreshStatusAtResume": 1,
      "headerGitMenu": "master, 1 changed",
      "screenshot": "header-changed.png"
    },
    "deleteFileResume": {
      "refreshStatusAtResume": 1,
      "headerGitMenu": "master, Clean",
      "screenshot": "header-clean.png"
    }
  },
  "tests": "useThreadHeaderOptions.test.tsx renders the real ThreadHeader -> ScreenHeader -> NativeStackScreenOptions. Reverting to projectScripts fails test 1 (Clean vs 1 changed). Disabling the signature guard fails test 2 (20 equivalent re-renders with fresh callbacks cause extra setOptions).",
  "notClaimed": [
    "CPU, battery, or latency changes",
    "physical-device verification",
    "Android has no native item factories (optionsVersion is an empty array there)"
  ]
}