{
 "flight": {
  "id": 12342,
  "agent": "github-copilot",
  "state": "merged",
  "title": "Fix literal types interfering with primitive types in Surface caching",
  "number": 3943,
  "source": "aidev",
  "commits": 4,
  "debrief": "GitHub Copilot fixed a caching bug in the Surface reflection-based implementation of wvlet/airframe, where literal types such as 1, true, and 'a' returned incorrect surface types for their primitive counterparts. The change spans six files with 124 additions and 18 deletions across four commits. It was merged clean, with no changes requested, after 0.84 hours.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:Copilot"
  ],
  "index_ok": true,
  "additions": 124,
  "closed_at": "2025-05-31T08:02:22+00:00",
  "deletions": 18,
  "merged_at": "2025-05-31T08:02:22+00:00",
  "opened_at": "2025-05-31T07:12:02+00:00",
  "task_type": "fix",
  "body_chars": 2589,
  "confidence": "dataset",
  "updated_at": "2026-11-04T02:37:38.189494+00:00",
  "enriched_at": null,
  "body_excerpt": "The Surface reflection-based implementation had a caching issue where literal types (e.g., `1`, `true`, `'a'`) would interfere with their corresponding primitive types (`Int`, `Boolean`, `Char`). This caused subsequent calls to return incorrect surface types.\n\n## Problem\nWhen using Scala 2's reflect",
  "review_count": 0,
  "files_changed": 6,
  "hours_to_merge": 0.84,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-04T02:37:38.189494+00:00",
  "reviewer_excerpt": null,
  "review_comment_count": 0,
  "reviewer_excerpt_url": null
 },
 "repo": {
  "name": "airframe",
  "owner": "wvlet",
  "stars": 666,
  "license": "Apache-2.0",
  "full_name": "wvlet/airframe",
  "primary_language": "Scala"
 },
 "author": {
  "login": "Copilot",
  "name": null,
  "github_profile": "https://github.com/Copilot",
  "page": null
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": "2025-05-31T08:02:22+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "xerial"
  },
  {
   "at": "2025-05-31T08:02:22+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "xerial"
  },
  {
   "at": "2025-06-02T19:38:40+00:00",
   "url": null,
   "kind": "labeled",
   "actor_login": "xerial"
  }
 ],
 "related": [
  {
   "agent": "github-copilot",
   "state": "closed",
   "title": "airspec: Show the context code around shouldBe matchers",
   "number": 3950,
   "outcome": "burn",
   "index_ok": true,
   "additions": 183,
   "deletions": 25,
   "merged_at": null,
   "opened_at": "2025-06-02T18:55:31+00:00",
   "task_type": "feat",
   "files_changed": 7,
   "hours_to_merge": null
  },
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "Add IO.copy(InputStream, OutputStream) method to airframe-control",
   "number": 3949,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 177,
   "deletions": 57,
   "merged_at": "2025-06-02T19:25:19+00:00",
   "opened_at": "2025-06-02T17:25:50+00:00",
   "task_type": "feat",
   "files_changed": 3,
   "hours_to_merge": 1.99
  },
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "fix: Ensure onMount called only after element is available by ID",
   "number": 3947,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 137,
   "deletions": 65,
   "merged_at": "2025-06-02T18:51:15+00:00",
   "opened_at": "2025-05-31T15:16:27+00:00",
   "task_type": "fix",
   "files_changed": 4,
   "hours_to_merge": 51.58
  }
 ],
 "pr_url": "https://github.com/wvlet/airframe/pull/3943",
 "page": "https://agentriders.com/logs/wvlet/airframe/3943/"
}