{
 "flight": {
  "id": 370339,
  "agent": "openai-codex",
  "state": "merged",
  "title": "Implement per-team API rate limiting with Redis",
  "number": 164,
  "source": "aidev",
  "commits": 3,
  "debrief": "OpenAI Codex opened a PR in unsend-dev/unsend adding per-team API rate limiting. It introduces an apiRateLimit team setting, Redis enforcement in cloud mode, and a migration, across 19 files with 148 additions and 64 deletions in three commits. The PR notes that pnpm lint fails. It merged after 53.28 hours with no changes requested.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:OpenAI_Codex"
  ],
  "index_ok": true,
  "additions": 148,
  "closed_at": "2025-05-19T11:55:10+00:00",
  "deletions": 64,
  "merged_at": "2025-05-19T11:55:10+00:00",
  "opened_at": "2025-05-17T06:38:33+00:00",
  "task_type": "feat",
  "body_chars": 464,
  "confidence": "dataset",
  "updated_at": "2026-11-04T02:59:44.636645+00:00",
  "enriched_at": null,
  "body_excerpt": "## Summary\n- introduce `apiRateLimit` setting on teams\n- enforce API rate limits with Redis when running in cloud mode\n- keep env-based TTL cache rate limiting for self-hosted setups\n- add migration for new `Team.apiRateLimit` column\n\n## Testing\n- `pnpm lint` *(fails: Error when performing the reque",
  "review_count": 0,
  "files_changed": 19,
  "hours_to_merge": 53.28,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-04T02:59:44.636645+00:00",
  "reviewer_excerpt": null,
  "review_comment_count": 0,
  "reviewer_excerpt_url": null
 },
 "repo": {
  "name": "unsend",
  "owner": "unsend-dev",
  "stars": 4785,
  "license": "AGPL-3.0",
  "full_name": "unsend-dev/unsend",
  "primary_language": "TypeScript"
 },
 "author": {
  "login": "KMKoushik",
  "name": "KM Koushik",
  "github_profile": "https://github.com/KMKoushik",
  "page": "https://agentriders.com/logs/author/kmkoushik/"
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "KM Koushik"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "KMKoushik"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "KMKoushik"
  },
  {
   "at": "2025-05-17T06:38:34+00:00",
   "url": null,
   "kind": "labeled",
   "actor_login": "KMKoushik"
  },
  {
   "at": "2025-05-19T11:55:10+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "KMKoushik"
  },
  {
   "at": "2025-05-19T11:55:10+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "KMKoushik"
  }
 ],
 "related": [
  {
   "agent": "github-copilot",
   "state": "merged",
   "title": "Fix Admin sidebar item visibility for self-hosted deployments",
   "number": 189,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 15,
   "deletions": 6,
   "merged_at": "2025-07-26T14:40:34+00:00",
   "opened_at": "2025-07-26T14:13:22+00:00",
   "task_type": "fix",
   "files_changed": 2,
   "hours_to_merge": 0.45
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix Node SDK initialization docs",
   "number": 163,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 19,
   "deletions": 5,
   "merged_at": "2025-05-17T04:13:32+00:00",
   "opened_at": "2025-05-17T04:13:01+00:00",
   "task_type": "fix",
   "files_changed": 5,
   "hours_to_merge": 0.01
  },
  {
   "agent": "openai-codex",
   "state": "merged",
   "title": "Fix domain parsing undefined value",
   "number": 178,
   "outcome": "merged_clean",
   "index_ok": false,
   "additions": 11,
   "deletions": 3,
   "merged_at": "2025-06-16T11:48:19+00:00",
   "opened_at": "2025-06-16T11:47:50+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.01
  }
 ],
 "pr_url": "https://github.com/unsend-dev/unsend/pull/164",
 "page": "https://agentriders.com/logs/unsend-dev/unsend/164/"
}