{
 "flight": {
  "id": 5307,
  "agent": "github-copilot",
  "state": "merged",
  "title": "Minimize `dedot-api` service code duplication through strategic abstraction",
  "number": 2803,
  "source": "aidev",
  "commits": 11,
  "debrief": "GitHub Copilot opened a refactor in polkadot-cloud/polkadot-staking-dashboard to reduce duplicated service code in the dedot-api package by adding shared utilities. The change spans 56 files, with 9774 additions and 3358 deletions across 11 commits. It merged after 9.11 hours with zero change requests. Its outcome is recorded as merged clean, with no changes requested.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:Copilot"
  ],
  "index_ok": true,
  "additions": 9774,
  "closed_at": "2025-06-09T12:55:25+00:00",
  "deletions": 3358,
  "merged_at": "2025-06-09T12:55:25+00:00",
  "opened_at": "2025-06-09T03:48:35+00:00",
  "task_type": "refactor",
  "body_chars": 1956,
  "confidence": "dataset",
  "updated_at": "2026-11-03T22:03:04.005275+00:00",
  "enriched_at": null,
  "body_excerpt": "This PR addresses massive code duplication in the `dedot-api` package by creating reusable utilities that abstract common service patterns while preserving full type safety and network-specific behaviors.\n\n## Problem\nThe three service implementations (`PolkadotService`, `KusamaService`, `WestendServ",
  "review_count": 0,
  "files_changed": 56,
  "hours_to_merge": 9.11,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-03T22:03:04.005275+00:00",
  "reviewer_excerpt": "baseService.ts and subscriptionManager.ts look good, the rest do not make sense and add too much boilerplate. Can you do the following: - keep the idea",
  "review_comment_count": 0,
  "reviewer_excerpt_url": "https://github.com/polkadot-cloud/polkadot-staking-dashboard/pull/2803#issuecomment-2955052361"
 },
 "repo": {
  "name": "polkadot-staking-dashboard",
  "owner": "polkadot-cloud",
  "stars": 174,
  "license": "GPL-3.0",
  "full_name": "polkadot-cloud/polkadot-staking-dashboard",
  "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": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Ross Bulat"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Ross Bulat"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "copilot-swe-agent[bot]"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Ross Bulat"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Ross Bulat"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Ross Bulat"
  },
  {
   "at": "2025-06-09T12:48:31+00:00",
   "url": null,
   "kind": "labeled",
   "actor_login": "rossbulat"
  }
 ],
 "related": [
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "Clean up unused functions and exports in codebase",
   "number": 2899,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 764,
   "deletions": 214,
   "merged_at": "2025-07-23T09:11:30+00:00",
   "opened_at": "2025-07-22T07:27:27+00:00",
   "task_type": "refactor",
   "files_changed": 43,
   "hours_to_merge": 25.73
  },
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "feat: Add timeout to sync Ids to prevent spinner hangs on slow connections & edge cases",
   "number": 2854,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 178,
   "deletions": 63,
   "merged_at": "2025-06-24T09:54:23+00:00",
   "opened_at": "2025-06-24T08:05:42+00:00",
   "task_type": "feat",
   "files_changed": 11,
   "hours_to_merge": 1.81
  },
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "feat: Cache RPC health check in local storage for 1 hour",
   "number": 2828,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 90,
   "deletions": 19,
   "merged_at": "2025-06-14T11:18:29+00:00",
   "opened_at": "2025-06-14T08:28:44+00:00",
   "task_type": "feat",
   "files_changed": 6,
   "hours_to_merge": 2.83
  }
 ],
 "pr_url": "https://github.com/polkadot-cloud/polkadot-staking-dashboard/pull/2803",
 "page": "https://agentriders.com/logs/polkadot-cloud/polkadot-staking-dashboard/2803/"
}