{
 "repo": {
  "name": "Java-Thread-Affinity",
  "owner": "OpenHFT",
  "stars": 1900,
  "license": "NOASSERTION",
  "full_name": "OpenHFT/Java-Thread-Affinity",
  "fetched_at": "2026-11-08T10:59:58.937312+00:00",
  "primary_language": "Java"
 },
 "burns": [],
 "total": 34,
 "agents": [
  {
   "agent": "openai-codex",
   "merged": 32,
   "flights": 34,
   "burn_rate": 0,
   "merge_rate": 0.941,
   "last_flight_at": "2025-05-23T08:10:01+00:00",
   "median_hours_to_merge": 1.4
  }
 ],
 "riders": [],
 "flights": [
  {
   "agent": "openai-codex",
   "state": "closed",
   "title": "Enable OSGi bundle test",
   "number": 175,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 1,
   "deletions": 3,
   "merged_at": null,
   "opened_at": "2025-05-23T08:10:01+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": null
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add VanillaCpuLayout pair() tests",
   "number": 174,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 56,
   "deletions": 0,
   "merged_at": "2025-05-23T08:26:36+00:00",
   "opened_at": "2025-05-23T08:08:47+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.3
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Ensure EMPTY_PID returned when lock missing",
   "number": 173,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 11,
   "deletions": 0,
   "merged_at": "2025-05-23T08:26:24+00:00",
   "opened_at": "2025-05-23T08:08:30+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0.3
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add negative PID test",
   "number": 172,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 5,
   "deletions": 0,
   "merged_at": "2025-05-23T08:26:02+00:00",
   "opened_at": "2025-05-23T08:08:16+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.3
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add Utilities string conversion tests",
   "number": 171,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 64,
   "deletions": 0,
   "merged_at": "2025-05-23T08:25:28+00:00",
   "opened_at": "2025-05-23T08:08:04+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.29
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add multi-thread dumpLocks test",
   "number": 170,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 54,
   "deletions": 0,
   "merged_at": "2025-05-23T08:21:44+00:00",
   "opened_at": "2025-05-23T08:07:52+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.23
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Verify lock file cleanup",
   "number": 169,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 4,
   "deletions": 4,
   "merged_at": "2025-05-23T08:16:09+00:00",
   "opened_at": "2025-05-23T08:06:56+00:00",
   "task_type": "build",
   "files_changed": 1,
   "hours_to_merge": 0.15
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for negative CPU id acquisition",
   "number": 168,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 5,
   "deletions": 0,
   "merged_at": "2025-05-23T08:15:52+00:00",
   "opened_at": "2025-05-23T08:06:21+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.16
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for non-binding lock affinity",
   "number": 167,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 11,
   "deletions": 0,
   "merged_at": "2025-05-23T08:15:35+00:00",
   "opened_at": "2025-05-23T08:06:09+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.16
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add unit test for Affinity.resetToBaseAffinity",
   "number": 166,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 33,
   "deletions": 0,
   "merged_at": "2025-05-23T08:15:16+00:00",
   "opened_at": "2025-05-23T08:03:49+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.19
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add SetThreadId reflection test",
   "number": 165,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 25,
   "deletions": 0,
   "merged_at": "2025-05-23T08:13:05+00:00",
   "opened_at": "2025-05-23T08:03:39+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0.16
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix log strings for JNI/JNA availability",
   "number": 161,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 3,
   "merged_at": "2025-05-22T15:22:36+00:00",
   "opened_at": "2025-05-22T14:03:42+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 1.32
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Replace System.err with logger warning",
   "number": 160,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 1,
   "deletions": 1,
   "merged_at": "2025-05-22T15:23:01+00:00",
   "opened_at": "2025-05-22T14:03:30+00:00",
   "task_type": "refactor",
   "files_changed": 1,
   "hours_to_merge": 1.33
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Handle missing Thread.tid",
   "number": 159,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 21,
   "deletions": 4,
   "merged_at": "2025-05-22T15:24:01+00:00",
   "opened_at": "2025-05-22T14:03:19+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 1.35
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Use ProcessHandle for pid",
   "number": 158,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 30,
   "deletions": 12,
   "merged_at": "2025-05-22T15:24:15+00:00",
   "opened_at": "2025-05-22T14:02:41+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": 1.36
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add validation for cpuId range",
   "number": 157,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 10,
   "deletions": 8,
   "merged_at": "2025-05-22T15:24:29+00:00",
   "opened_at": "2025-05-22T14:01:13+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 1.39
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Enable boot class path discovery on modern JDKs",
   "number": 156,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 42,
   "deletions": 8,
   "merged_at": "2025-05-22T15:24:45+00:00",
   "opened_at": "2025-05-22T14:00:15+00:00",
   "task_type": "feat",
   "files_changed": 2,
   "hours_to_merge": 1.41
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add Javadoc for ITicker",
   "number": 155,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 17,
   "deletions": 2,
   "merged_at": "2025-05-22T15:24:59+00:00",
   "opened_at": "2025-05-22T13:59:25+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.43
  },
  {
   "agent": "openai-codex",
   "state": "closed",
   "title": "Implement macOS and Windows JNA affinity",
   "number": 154,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 331,
   "deletions": 54,
   "merged_at": null,
   "opened_at": "2025-05-22T13:58:25+00:00",
   "task_type": "feat",
   "files_changed": 18,
   "hours_to_merge": null
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add properties samples and layout count tests",
   "number": 153,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 210,
   "deletions": 0,
   "merged_at": "2025-05-22T15:26:17+00:00",
   "opened_at": "2025-05-22T13:57:10+00:00",
   "task_type": "test",
   "files_changed": 9,
   "hours_to_merge": 1.49
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add AffinityThreadFactory unique CPU test",
   "number": 152,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 55,
   "deletions": 0,
   "merged_at": "2025-05-22T15:28:22+00:00",
   "opened_at": "2025-05-22T13:56:36+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.53
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add JNA failure test",
   "number": 151,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 46,
   "deletions": 0,
   "merged_at": "2025-05-22T15:28:39+00:00",
   "opened_at": "2025-05-22T13:53:53+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.58
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for core-wide CPU reservation",
   "number": 150,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 21,
   "deletions": 0,
   "merged_at": "2025-05-22T15:28:58+00:00",
   "opened_at": "2025-05-22T13:53:40+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.59
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for duplicate CPU binding",
   "number": 149,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 27,
   "deletions": 0,
   "merged_at": "2025-05-22T15:29:12+00:00",
   "opened_at": "2025-05-22T13:53:24+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.6
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for deleting lock file while lock held",
   "number": 148,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 25,
   "deletions": 0,
   "merged_at": "2025-05-22T15:29:29+00:00",
   "opened_at": "2025-05-22T13:52:44+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.61
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add fallback check for Ticker",
   "number": 147,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 30,
   "deletions": 0,
   "merged_at": "2025-05-22T15:29:43+00:00",
   "opened_at": "2025-05-22T13:52:18+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 1.62
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add supported OS info",
   "number": 145,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 0,
   "merged_at": "2025-05-22T15:30:12+00:00",
   "opened_at": "2025-05-22T13:50:41+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.66
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add isolcpus bootloader instructions",
   "number": 144,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 15,
   "deletions": 0,
   "merged_at": "2025-05-22T15:31:19+00:00",
   "opened_at": "2025-05-22T13:50:11+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.69
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Update README with Windows JNA instructions",
   "number": 143,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 6,
   "deletions": 0,
   "merged_at": "2025-05-22T15:31:34+00:00",
   "opened_at": "2025-05-22T13:48:37+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.72
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Improve documentation for dumpLocks output",
   "number": 142,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 727,
   "deletions": 52,
   "merged_at": "2025-05-22T15:32:20+00:00",
   "opened_at": "2025-05-22T13:47:08+00:00",
   "task_type": "docs",
   "files_changed": 29,
   "hours_to_merge": 1.75
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add affinity strategy table to README",
   "number": 141,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 15,
   "deletions": 1,
   "merged_at": "2025-05-22T15:32:37+00:00",
   "opened_at": "2025-05-22T13:46:31+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.77
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add OSGi bundle deployment instructions",
   "number": 140,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 0,
   "merged_at": "2025-05-22T15:32:52+00:00",
   "opened_at": "2025-05-22T13:45:32+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.79
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add README snippet for AffinityThreadFactory",
   "number": 139,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 19,
   "deletions": 0,
   "merged_at": "2025-05-22T15:33:07+00:00",
   "opened_at": "2025-05-22T13:45:07+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.8
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Update README about affinity mask",
   "number": 138,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 1,
   "merged_at": "2025-05-22T15:33:23+00:00",
   "opened_at": "2025-05-22T13:44:46+00:00",
   "task_type": "docs",
   "files_changed": 1,
   "hours_to_merge": 1.81
  }
 ],
 "indexed": 15,
 "monthly": [
  {
   "burns": 0,
   "month": "2025-05",
   "merged": 32,
   "flights": 34
  }
 ],
 "top_authors": [
  {
   "name": "Peter Lawrey",
   "login": "peter-lawrey",
   "flights": 34,
   "indexed": 15
  }
 ],
 "page": "https://agentriders.com/logs/OpenHFT/Java-Thread-Affinity/"
}