{
 "flight": {
  "id": 920377,
  "agent": "devin",
  "state": "merged",
  "title": "feat: wrap applyPatchOperations with neverthrow fromThrowable and return new object",
  "number": 2729,
  "source": "aidev",
  "commits": 2,
  "debrief": "Devin's flight on liam-hq/liam wrapped applyPatchOperations with neverthrow's fromThrowable and changed it to return a new object instead of mutating its input. The change touched six files, with 207 additions and 155 deletions across two commits. It drew five reviews, zero change requests, and two review comments. The PR merged clean in 1.01 hours.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:Devin"
  ],
  "index_ok": true,
  "additions": 207,
  "closed_at": "2025-07-28T06:05:14+00:00",
  "deletions": 155,
  "merged_at": "2025-07-28T06:05:14+00:00",
  "opened_at": "2025-07-28T05:04:25+00:00",
  "task_type": "feat",
  "body_chars": 2457,
  "confidence": "dataset",
  "updated_at": "2026-11-04T01:00:58.042509+00:00",
  "enriched_at": null,
  "body_excerpt": "## Issue\n\n- resolve: #2727\n\n## Why is this change needed?\n\nThe `applyPatchOperations` function was mutating the input object directly, which could cause unintended side effects. This change makes the function immutable and adds proper error handling using neverthrow's Result type.\n\n## Changes Made\n\n",
  "review_count": 5,
  "files_changed": 6,
  "hours_to_merge": 1.01,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-04T01:00:58.042509+00:00",
  "reviewer_excerpt": "Thanks! LGTM!",
  "review_comment_count": 2,
  "reviewer_excerpt_url": "https://github.com/liam-hq/liam/pull/2729#pullrequestreview-3060522118"
 },
 "repo": {
  "name": "liam",
  "owner": "liam-hq",
  "stars": 5162,
  "license": "Apache-2.0",
  "full_name": "liam-hq/liam",
  "primary_language": "TypeScript"
 },
 "author": {
  "login": "devin-ai-integration[bot]",
  "name": null,
  "github_profile": "https://github.com/devin-ai-integration[bot]",
  "page": null
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": "2025-07-28T06:05:14+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "NoritakaIkeda"
  },
  {
   "at": "2025-07-28T06:05:14+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "NoritakaIkeda"
  }
 ],
 "related": [
  {
   "agent": "devin",
   "state": "merged",
   "title": "🔥 Remove unnecessary buildingSchemaVersionId from LangGraph annotations",
   "number": 2778,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 0,
   "deletions": 3,
   "merged_at": "2025-07-30T08:17:11+00:00",
   "opened_at": "2025-07-30T07:36:15+00:00",
   "task_type": "refactor",
   "files_changed": 3,
   "hours_to_merge": 0.68
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "feat: increase default recursion limit from 20 to 100",
   "number": 2770,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 7,
   "deletions": 6,
   "merged_at": "2025-07-30T05:51:41+00:00",
   "opened_at": "2025-07-30T04:03:17+00:00",
   "task_type": "feat",
   "files_changed": 3,
   "hours_to_merge": 1.81
  },
  {
   "agent": "devin",
   "state": "merged",
   "title": "Remove boilerplate log messages from AI workflow nodes",
   "number": 2769,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 35,
   "deletions": 42,
   "merged_at": "2025-07-30T04:19:18+00:00",
   "opened_at": "2025-07-30T03:55:49+00:00",
   "task_type": "refactor",
   "files_changed": 6,
   "hours_to_merge": 0.39
  }
 ],
 "pr_url": "https://github.com/liam-hq/liam/pull/2729",
 "page": "https://agentriders.com/logs/liam-hq/liam/2729/"
}