{
 "flight": {
  "id": 41809,
  "agent": "github-copilot",
  "state": "merged",
  "title": "AppComponent: Factor out useBodyAttribute hooks",
  "number": 3050,
  "source": "aidev",
  "commits": 5,
  "debrief": "GitHub Copilot flew a refactor in cybersemics/em, moving body attribute handling out of AppComponent into two custom hooks. The change touched five files, with 52 additions and 41 deletions across five commits. Twelve reviews were filed, two as change requests. The burn merged after rework, 5.17 hours after opening.",
  "outcome": "merged_after_rework",
  "signals": [
   "aidev:Copilot"
  ],
  "index_ok": true,
  "additions": 52,
  "closed_at": "2025-06-18T16:36:42+00:00",
  "deletions": 41,
  "merged_at": "2025-06-18T16:36:42+00:00",
  "opened_at": "2025-06-18T11:26:13+00:00",
  "task_type": "refactor",
  "body_chars": 1840,
  "confidence": "dataset",
  "updated_at": "2026-11-03T21:57:06.356926+00:00",
  "enriched_at": null,
  "body_excerpt": "Created two custom hooks to abstract body attribute management logic in AppComponent:\n\n- **`useBodyAttribute`**: Sets a single attribute on the `document.body` element using `useLayoutEffect`\n- **`useBodyAttributeSelector`**: Takes a Redux selector and calls `useBodyAttribute` to set a body attribut",
  "review_count": 12,
  "files_changed": 5,
  "hours_to_merge": 5.17,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 2,
  "og_generated_at": "2026-11-03T21:57:06.356926+00:00",
  "reviewer_excerpt": null,
  "review_comment_count": 14,
  "reviewer_excerpt_url": null
 },
 "repo": {
  "name": "em",
  "owner": "cybersemics",
  "stars": 358,
  "license": "NOASSERTION",
  "full_name": "cybersemics/em",
  "primary_language": "TypeScript"
 },
 "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": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": "2025-06-18T12:38:46+00:00",
   "url": "https://github.com/cybersemics/em/pull/3050#pullrequestreview-2939030592",
   "kind": "changes_requested",
   "actor_login": "raineorshine"
  },
  {
   "at": "2025-06-18T16:24:32+00:00",
   "url": "https://github.com/cybersemics/em/pull/3050#pullrequestreview-2939933484",
   "kind": "changes_requested",
   "actor_login": "raineorshine"
  },
  {
   "at": "2025-06-18T16:36:42+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "raineorshine"
  },
  {
   "at": "2025-06-18T16:36:42+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "raineorshine"
  }
 ],
 "related": [
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "[WIP] Generate title of web pages",
   "number": 3094,
   "outcome": "merged_after_rework",
   "index_ok": true,
   "additions": 790,
   "deletions": 461,
   "merged_at": "2025-06-30T02:14:27+00:00",
   "opened_at": "2025-06-29T15:38:24+00:00",
   "task_type": "feat",
   "files_changed": 3,
   "hours_to_merge": 10.6
  },
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "Refactor: editing → isKeyboardOpen",
   "number": 3045,
   "outcome": "merged_after_rework",
   "index_ok": true,
   "additions": 141,
   "deletions": 141,
   "merged_at": "2025-06-18T16:55:56+00:00",
   "opened_at": "2025-06-17T06:03:11+00:00",
   "task_type": "refactor",
   "files_changed": 38,
   "hours_to_merge": 34.88
  },
  {
   "agent": "github-copilot",
   "state": "closed",
   "title": "Remove QuickDropPanel and related functionality",
   "number": 3033,
   "outcome": "burn",
   "index_ok": true,
   "additions": 10,
   "deletions": 334,
   "merged_at": null,
   "opened_at": "2025-06-13T09:15:40+00:00",
   "task_type": "refactor",
   "files_changed": 15,
   "hours_to_merge": null
  }
 ],
 "pr_url": "https://github.com/cybersemics/em/pull/3050",
 "page": "https://agentriders.com/logs/cybersemics/em/3050/"
}