{
 "flight": {
  "id": 902964,
  "agent": "cursor",
  "state": "merged",
  "title": "Fix directory cleanup script vulnerabilities and logic",
  "number": 278,
  "source": "aidev",
  "commits": 3,
  "debrief": "Cursor, working in epicweb-dev/epicshop, submitted a fix to the cleanupEmptyExerciseDirectories script: preventing shell injection, correcting emptiness checks, and enabling nested directory cleanup. The change spans three files and three commits, with 48572 additions and 48530 deletions. It merged clean after 0.03 hours, with no changes requested and no reviewer comments recorded.",
  "outcome": "merged_clean",
  "signals": [
   "aidev:Cursor"
  ],
  "index_ok": true,
  "additions": 48572,
  "closed_at": "2025-07-14T20:58:38+00:00",
  "deletions": 48530,
  "merged_at": "2025-07-14T20:58:38+00:00",
  "opened_at": "2025-07-14T20:56:42+00:00",
  "task_type": "fix",
  "body_chars": 135,
  "confidence": "dataset",
  "updated_at": "2026-11-04T01:24:36.623308+00:00",
  "enriched_at": null,
  "body_excerpt": "Fix `cleanupEmptyExerciseDirectories` to prevent shell injection, correct emptiness checks, and enable proper nested directory cleanup.",
  "review_count": 0,
  "files_changed": 3,
  "hours_to_merge": 0.03,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 0,
  "og_generated_at": "2026-11-04T01:24:36.623308+00:00",
  "reviewer_excerpt": null,
  "review_comment_count": 0,
  "reviewer_excerpt_url": null
 },
 "repo": {
  "name": "epicshop",
  "owner": "epicweb-dev",
  "stars": 247,
  "license": "NOASSERTION",
  "full_name": "epicweb-dev/epicshop",
  "primary_language": "TypeScript"
 },
 "author": {
  "login": "kentcdodds",
  "name": "Kent C. Dodds",
  "github_profile": "https://github.com/kentcdodds",
  "page": "https://agentriders.com/logs/author/kentcdodds/"
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Cursor Agent"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Kent C. Dodds"
  },
  {
   "at": "2025-07-14T20:58:38+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "kentcdodds"
  },
  {
   "at": "2025-07-14T20:58:38+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "kentcdodds"
  }
 ],
 "related": [
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Fix workshop-cli start command issue",
   "number": 292,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 363,
   "deletions": 341,
   "merged_at": "2025-07-18T19:46:36+00:00",
   "opened_at": "2025-07-18T18:17:09+00:00",
   "task_type": "fix",
   "files_changed": 3,
   "hours_to_merge": 1.49
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Export CLI commands as functions",
   "number": 286,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 98899,
   "deletions": 98328,
   "merged_at": "2025-07-18T00:42:52+00:00",
   "opened_at": "2025-07-18T00:08:33+00:00",
   "task_type": "feat",
   "files_changed": 13,
   "hours_to_merge": 0.57
  },
  {
   "agent": "cursor",
   "state": "merged",
   "title": "Ignore empty directories in exercises",
   "number": 277,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 41,
   "deletions": 2,
   "merged_at": "2025-07-14T21:02:31+00:00",
   "opened_at": "2025-07-14T20:56:15+00:00",
   "task_type": "fix",
   "files_changed": 1,
   "hours_to_merge": 0.1
  }
 ],
 "pr_url": "https://github.com/epicweb-dev/epicshop/pull/278",
 "page": "https://agentriders.com/logs/epicweb-dev/epicshop/278/"
}