{
 "repo": {
  "name": "java-util",
  "owner": "jdereg",
  "stars": 443,
  "license": "Apache-2.0",
  "full_name": "jdereg/java-util",
  "fetched_at": "2026-11-08T11:00:38.410024+00:00",
  "primary_language": "Java"
 },
 "burns": [],
 "total": 228,
 "agents": [
  {
   "agent": "openai-codex",
   "merged": 224,
   "flights": 228,
   "burn_rate": 0,
   "merge_rate": 0.982,
   "last_flight_at": "2025-07-20T14:09:43+00:00",
   "median_hours_to_merge": 0
  }
 ],
 "riders": [],
 "flights": [
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Refactor MultiKeyMap hashing",
   "number": 360,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 33,
   "deletions": 14,
   "merged_at": "2025-07-20T14:09:59+00:00",
   "opened_at": "2025-07-20T14:09:43+00:00",
   "task_type": "refactor",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Refactor MultiKeyMap size handling",
   "number": 359,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 10,
   "deletions": 11,
   "merged_at": "2025-07-20T12:32:34+00:00",
   "opened_at": "2025-07-20T12:32:21+00:00",
   "task_type": "refactor",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Update IntervalSet removal handling",
   "number": 358,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 37,
   "deletions": 42,
   "merged_at": "2025-07-20T04:42:16+00:00",
   "opened_at": "2025-07-20T04:41:59+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix concurrent iterator nulls",
   "number": 357,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 2,
   "merged_at": "2025-07-19T20:38:44+00:00",
   "opened_at": "2025-07-19T20:37:21+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0.02
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix flaky ConcurrentList read test",
   "number": 356,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 1950,
   "deletions": 4603,
   "merged_at": "2025-07-16T04:12:04+00:00",
   "opened_at": "2025-07-14T04:18:49+00:00",
   "task_type": "fix",
   "files_changed": 16,
   "hours_to_merge": 47.89
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix ConcurrentList2Test logging",
   "number": 355,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 2,
   "merged_at": "2025-07-12T14:33:39+00:00",
   "opened_at": "2025-07-12T14:33:23+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Implement chunked bucket ConcurrentList",
   "number": 353,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 336,
   "deletions": 712,
   "merged_at": "2025-07-12T13:54:50+00:00",
   "opened_at": "2025-07-12T13:54:39+00:00",
   "task_type": "feat",
   "files_changed": 3,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix MultiKeyMap locking issue",
   "number": 352,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 55,
   "deletions": 27,
   "merged_at": "2025-07-07T05:20:23+00:00",
   "opened_at": "2025-07-07T05:20:00+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add full ConcurrentMap support for MultiKeyMap",
   "number": 351,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 250,
   "deletions": 2,
   "merged_at": "2025-07-06T23:24:43+00:00",
   "opened_at": "2025-07-06T23:24:25+00:00",
   "task_type": "feat",
   "files_changed": 7,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add putIfAbsent support to MultiKeyMap",
   "number": 350,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 85,
   "deletions": 0,
   "merged_at": "2025-07-06T22:56:26+00:00",
   "opened_at": "2025-07-06T22:56:11+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add computeIfAbsent to MultiKeyMap",
   "number": 349,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 105,
   "deletions": 0,
   "merged_at": "2025-07-06T22:30:18+00:00",
   "opened_at": "2025-07-06T22:29:44+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix concurrent resize bug",
   "number": 348,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 101,
   "deletions": 20,
   "merged_at": "2025-07-06T22:15:39+00:00",
   "opened_at": "2025-07-06T22:15:15+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Use cached reflection APIs",
   "number": 347,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 20,
   "deletions": 14,
   "merged_at": "2025-06-23T05:49:02+00:00",
   "opened_at": "2025-06-23T05:48:42+00:00",
   "task_type": "perf",
   "files_changed": 4,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Doc updates for converter and build flags",
   "number": 346,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 11,
   "deletions": 1,
   "merged_at": "2025-06-23T04:18:50+00:00",
   "opened_at": "2025-06-23T04:18:42+00:00",
   "task_type": "docs",
   "files_changed": 3,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Update docs for new ClassUtilities features",
   "number": 345,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 6,
   "deletions": 0,
   "merged_at": "2025-06-23T04:11:45+00:00",
   "opened_at": "2025-06-23T04:11:31+00:00",
   "task_type": "docs",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Expose default Converter instance",
   "number": 344,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 19,
   "deletions": 1,
   "merged_at": "2025-06-22T16:23:19+00:00",
   "opened_at": "2025-06-22T16:23:08+00:00",
   "task_type": "feat",
   "files_changed": 3,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Remove checked IOEs; use uncheckedThrow",
   "number": 343,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 166,
   "deletions": 81,
   "merged_at": "2025-06-20T20:24:43+00:00",
   "opened_at": "2025-06-20T20:24:28+00:00",
   "task_type": "refactor",
   "files_changed": 7,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Use public ExceptionUtilities helper",
   "number": 342,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 11,
   "merged_at": "2025-06-20T16:58:01+00:00",
   "opened_at": "2025-06-20T16:57:43+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add uncheckedThrow to ExceptionUtilities",
   "number": 341,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 43,
   "deletions": 1,
   "merged_at": "2025-06-20T16:44:18+00:00",
   "opened_at": "2025-06-20T16:44:08+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "closed",
   "title": "Move logging doc into user guide",
   "number": 339,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 94,
   "deletions": 163,
   "merged_at": null,
   "opened_at": "2025-06-20T01:19:10+00:00",
   "task_type": "docs",
   "files_changed": 3,
   "hours_to_merge": null
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Document logging standalone file",
   "number": 338,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 14,
   "deletions": 50,
   "merged_at": "2025-06-20T01:18:06+00:00",
   "opened_at": "2025-06-20T01:17:58+00:00",
   "task_type": "docs",
   "files_changed": 4,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix static converter test",
   "number": 337,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 1,
   "merged_at": "2025-06-20T00:36:24+00:00",
   "opened_at": "2025-06-20T00:36:12+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for static Converter API",
   "number": 336,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 52,
   "deletions": 0,
   "merged_at": "2025-06-20T00:26:43+00:00",
   "opened_at": "2025-06-20T00:26:34+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add cache-backed type support checks",
   "number": 335,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 79,
   "deletions": 0,
   "merged_at": "2025-06-20T00:11:27+00:00",
   "opened_at": "2025-06-20T00:11:18+00:00",
   "task_type": "feat",
   "files_changed": 6,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix comparator test expectation",
   "number": 334,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 3,
   "deletions": 2,
   "merged_at": "2025-06-20T00:09:02+00:00",
   "opened_at": "2025-06-20T00:08:48+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for wrapComparator",
   "number": 333,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 81,
   "deletions": 0,
   "merged_at": "2025-06-19T23:51:42+00:00",
   "opened_at": "2025-06-19T23:51:26+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for detectMapOrdering",
   "number": 332,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 57,
   "deletions": 0,
   "merged_at": "2025-06-19T22:18:16+00:00",
   "opened_at": "2025-06-19T22:18:08+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for MapUtilities structure",
   "number": 331,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 70,
   "deletions": 0,
   "merged_at": "2025-06-19T22:07:24+00:00",
   "opened_at": "2025-06-19T22:07:17+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix map unwrapping cycle detection",
   "number": 330,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 8,
   "deletions": 2,
   "merged_at": "2025-06-19T21:56:58+00:00",
   "opened_at": "2025-06-19T21:55:21+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 0.03
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for MapUtilities.getUnderlyingMap",
   "number": 329,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 84,
   "deletions": 10,
   "merged_at": "2025-06-19T21:48:19+00:00",
   "opened_at": "2025-06-19T21:41:54+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0.11
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add negative tests for mapOf",
   "number": 328,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 27,
   "deletions": 0,
   "merged_at": "2025-06-19T21:26:40+00:00",
   "opened_at": "2025-06-19T21:26:16+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "closed",
   "title": "Add substring search helper",
   "number": 327,
   "outcome": "abandoned",
   "index_ok": false,
   "additions": 29,
   "deletions": 2,
   "merged_at": null,
   "opened_at": "2025-06-18T15:47:38+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": null
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Throw UncheckedIOException in IOUtilities",
   "number": 326,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 97,
   "deletions": 68,
   "merged_at": "2025-06-18T06:36:44+00:00",
   "opened_at": "2025-06-18T06:36:35+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Modernize UrlUtilities",
   "number": 325,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 114,
   "deletions": 35,
   "merged_at": "2025-06-18T05:17:10+00:00",
   "opened_at": "2025-06-18T05:17:01+00:00",
   "task_type": "feat",
   "files_changed": 4,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Improve UrlInvocationHandler docs",
   "number": 324,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 11,
   "deletions": 28,
   "merged_at": "2025-06-18T04:50:49+00:00",
   "opened_at": "2025-06-18T04:50:42+00:00",
   "task_type": "docs",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add GenericArrayTypeImpl equality tests",
   "number": 323,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 47,
   "deletions": 0,
   "merged_at": "2025-06-18T04:41:27+00:00",
   "opened_at": "2025-06-18T04:41:16+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for Traverser consumer traverse",
   "number": 322,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 90,
   "deletions": 2,
   "merged_at": "2025-06-18T04:39:20+00:00",
   "opened_at": "2025-06-18T04:38:05+00:00",
   "task_type": "test",
   "files_changed": 3,
   "hours_to_merge": 0.02
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for WildcardTypeImpl",
   "number": 321,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 47,
   "deletions": 0,
   "merged_at": "2025-06-18T04:36:44+00:00",
   "opened_at": "2025-06-18T04:36:33+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix TTLCache scheduler shutdown issue",
   "number": 320,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 25,
   "deletions": 8,
   "merged_at": "2025-06-18T04:27:07+00:00",
   "opened_at": "2025-06-18T04:26:58+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix TTLCache purge NPE",
   "number": 319,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 4,
   "deletions": 2,
   "merged_at": "2025-06-18T04:24:52+00:00",
   "opened_at": "2025-06-18T04:24:44+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix SafeSimpleDateFormat equality",
   "number": 318,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 12,
   "deletions": 1,
   "merged_at": "2025-06-18T04:23:15+00:00",
   "opened_at": "2025-06-18T04:23:06+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix SafeSimpleDateFormat caching",
   "number": 317,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 202,
   "deletions": 14,
   "merged_at": "2025-06-18T04:17:43+00:00",
   "opened_at": "2025-06-18T04:17:08+00:00",
   "task_type": "fix",
   "files_changed": 5,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add TTLCache purge tests",
   "number": 316,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 79,
   "deletions": 0,
   "merged_at": "2025-06-18T04:15:08+00:00",
   "opened_at": "2025-06-18T04:15:01+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for StringUtilities overloads",
   "number": 315,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 128,
   "deletions": 1,
   "merged_at": "2025-06-18T04:11:49+00:00",
   "opened_at": "2025-06-18T04:11:18+00:00",
   "task_type": "test",
   "files_changed": 3,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for SafeSimpleDateFormat equality",
   "number": 314,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 33,
   "deletions": 0,
   "merged_at": "2025-06-18T04:02:45+00:00",
   "opened_at": "2025-06-18T04:02:30+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add test for CompactMapComparator",
   "number": 313,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 19,
   "deletions": 0,
   "merged_at": "2025-06-18T03:55:20+00:00",
   "opened_at": "2025-06-18T03:55:11+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add missing ConcurrentSet tests",
   "number": 312,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 134,
   "deletions": 3,
   "merged_at": "2025-06-18T03:52:11+00:00",
   "opened_at": "2025-06-18T03:51:27+00:00",
   "task_type": "test",
   "files_changed": 3,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add navigation entry method tests",
   "number": 311,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 77,
   "deletions": 0,
   "merged_at": "2025-06-18T03:47:56+00:00",
   "opened_at": "2025-06-18T03:47:46+00:00",
   "task_type": "test",
   "files_changed": 2,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Add tests for CompactSet helper methods",
   "number": 310,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 78,
   "deletions": 0,
   "merged_at": "2025-06-18T03:45:14+00:00",
   "opened_at": "2025-06-18T03:45:04+00:00",
   "task_type": "test",
   "files_changed": 1,
   "hours_to_merge": 0
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix poll entry value retrieval",
   "number": 309,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 14,
   "deletions": 2,
   "merged_at": "2025-06-18T03:36:31+00:00",
   "opened_at": "2025-06-18T03:36:20+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0
  }
 ],
 "indexed": 153,
 "monthly": [
  {
   "burns": 0,
   "month": "2025-05",
   "merged": 17,
   "flights": 17
  },
  {
   "burns": 0,
   "month": "2025-06",
   "merged": 195,
   "flights": 199
  },
  {
   "burns": 0,
   "month": "2025-07",
   "merged": 12,
   "flights": 12
  }
 ],
 "top_authors": [
  {
   "name": null,
   "login": "jdereg",
   "flights": 228,
   "indexed": 153
  }
 ],
 "page": "https://agentriders.com/logs/jdereg/java-util/"
}