{
  "scope": "PR #91~#100 (last 24h) /gemini comment + Gemini review timeline",
  "purpose": "task-2552 검증 #1 — bot/OWNER trigger identity 결정",
  "verification_method": "GitHub REST API GET /repos/{owner}/{repo}/issues/{n}/comments + /pulls/{n}/reviews",
  "auth": "BOT_GITHUB_TOKEN (ghs_ installation token, read-only)",
  "generated_at_utc": "2026-05-11T03:35:54.038036+00:00",
  "bot_trigger_attempts": [
    {
      "pr": "PR#98",
      "trigger_comment_at": "2026-05-11T02:23:52Z",
      "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
      "trigger_comment_user_type": "Bot",
      "next_gemini_review_at": "2026-05-11T03:23:41Z",
      "delta_seconds": 3589,
      "trigger_recognized": false
    },
    {
      "pr": "PR#98",
      "trigger_comment_at": "2026-05-11T02:24:16Z",
      "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
      "trigger_comment_user_type": "Bot",
      "next_gemini_review_at": "2026-05-11T03:23:41Z",
      "delta_seconds": 3565,
      "trigger_recognized": false
    },
    {
      "pr": "PR#98",
      "trigger_comment_at": "2026-05-11T03:28:36Z",
      "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
      "trigger_comment_user_type": "Bot",
      "next_gemini_review_at": null,
      "delta_seconds": null,
      "trigger_recognized": false
    },
    {
      "pr": "PR#99",
      "trigger_comment_at": "2026-05-11T02:28:40Z",
      "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
      "trigger_comment_user_type": "Bot",
      "next_gemini_review_at": "2026-05-11T03:28:55Z",
      "delta_seconds": 3615,
      "trigger_recognized": false
    },
    {
      "pr": "PR#99",
      "trigger_comment_at": "2026-05-11T02:40:11Z",
      "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
      "trigger_comment_user_type": "Bot",
      "next_gemini_review_at": "2026-05-11T03:28:55Z",
      "delta_seconds": 2924,
      "trigger_recognized": false
    }
  ],
  "user_trigger_attempts": [
    {
      "pr": "PR#91",
      "trigger_comment_at": "2026-05-10T15:05:21Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T15:06:50Z",
      "delta_seconds": 89,
      "trigger_recognized": true
    },
    {
      "pr": "PR#93",
      "trigger_comment_at": "2026-05-10T18:53:35Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T18:55:32Z",
      "delta_seconds": 117,
      "trigger_recognized": true
    },
    {
      "pr": "PR#94",
      "trigger_comment_at": "2026-05-10T19:46:24Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T19:48:31Z",
      "delta_seconds": 127,
      "trigger_recognized": true
    },
    {
      "pr": "PR#95",
      "trigger_comment_at": "2026-05-10T20:45:19Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T20:46:55Z",
      "delta_seconds": 96,
      "trigger_recognized": true
    },
    {
      "pr": "PR#95",
      "trigger_comment_at": "2026-05-10T23:50:14Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T23:51:19Z",
      "delta_seconds": 65,
      "trigger_recognized": true
    },
    {
      "pr": "PR#96",
      "trigger_comment_at": "2026-05-10T20:44:47Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-10T20:50:33Z",
      "delta_seconds": 346,
      "trigger_recognized": true
    },
    {
      "pr": "PR#97",
      "trigger_comment_at": "2026-05-11T01:58:11Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-11T01:59:50Z",
      "delta_seconds": 99,
      "trigger_recognized": true
    },
    {
      "pr": "PR#98",
      "trigger_comment_at": "2026-05-11T03:22:16Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-11T03:23:41Z",
      "delta_seconds": 85,
      "trigger_recognized": true
    },
    {
      "pr": "PR#99",
      "trigger_comment_at": "2026-05-11T03:27:07Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-11T03:28:55Z",
      "delta_seconds": 108,
      "trigger_recognized": true
    },
    {
      "pr": "PR#100",
      "trigger_comment_at": "2026-05-11T03:27:28Z",
      "trigger_comment_user": "JonghyukJeon",
      "trigger_comment_user_type": "User",
      "next_gemini_review_at": "2026-05-11T03:29:20Z",
      "delta_seconds": 112,
      "trigger_recognized": true
    }
  ],
  "bot_trigger_success_count": 0,
  "bot_trigger_total": 5,
  "user_trigger_success_count": 10,
  "user_trigger_total": 10,
  "decisive_evidence_pr98": "Bot /gemini review 댓글 2건(02:23:52Z, 02:24:16Z) → Gemini 응답 없음. OWNER 댓글(03:22:16Z) → Gemini 응답(03:23:41Z, +89s)",
  "decisive_evidence_pr99": "Bot /gemini review 댓글(02:28:40Z) → Gemini 응답 없음. OWNER 댓글(03:27:07Z) → Gemini 응답(03:28:55Z, +108s)",
  "verdict": "옵션(b) 확정 — OWNER user 댓글만 Gemini App trigger 작동. Bot(installation token) 댓글은 trigger 미작동",
  "implication": "GEMINI_EXTERNAL_TRIGGER_GAP 본질 = 'GitHub Apps cannot trigger other Apps' (GitHub 공식 정책 가설)",
  "prs": {
    "PR#91": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "closed",
      "created_at": "2026-05-10T14:10:47Z",
      "all_comments": [
        {
          "created_at": "2026-05-10T15:05:21Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T15:06:50Z",
          "state": "COMMENTED",
          "commit_id": "d843a72",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-10T15:05:21Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T15:06:50Z",
          "delta_seconds": 89,
          "trigger_recognized": true
        }
      ]
    },
    "PR#92": {
      "pr_author": "JonghyukJeon",
      "pr_author_type": "User",
      "state": "closed",
      "created_at": "2026-05-10T14:14:20Z",
      "all_comments": [
        {
          "created_at": "2026-05-11T00:19:58Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "superseded by terminal replacement PR #96 for task-2545 chain — original head 15cf6ad011e1 preserved as audit evidence",
          "is_trigger": false
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T14:16:45Z",
          "state": "COMMENTED",
          "commit_id": "15cf6ad",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": []
    },
    "PR#93": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "closed",
      "created_at": "2026-05-10T16:38:47Z",
      "all_comments": [
        {
          "created_at": "2026-05-10T18:53:35Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T00:20:01Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "superseded by terminal replacement PR #96 for task-2545 chain — failed_replacement attempt #1 preserved as audit evidenc",
          "is_trigger": false
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T18:55:32Z",
          "state": "COMMENTED",
          "commit_id": "5ad46d9",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-10T18:53:35Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T18:55:32Z",
          "delta_seconds": 117,
          "trigger_recognized": true
        }
      ]
    },
    "PR#94": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "closed",
      "created_at": "2026-05-10T19:29:42Z",
      "all_comments": [
        {
          "created_at": "2026-05-10T19:46:24Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T00:20:03Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "superseded by terminal replacement PR #96 for task-2545 chain — failed_replacement attempt #2 preserved as audit evidenc",
          "is_trigger": false
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T19:48:31Z",
          "state": "COMMENTED",
          "commit_id": "2996be2",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-10T19:46:24Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T19:48:31Z",
          "delta_seconds": 127,
          "trigger_recognized": true
        }
      ]
    },
    "PR#95": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "open",
      "created_at": "2026-05-10T19:57:38Z",
      "all_comments": [
        {
          "created_at": "2026-05-10T20:45:19Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-10T23:50:14Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T20:46:55Z",
          "state": "COMMENTED",
          "commit_id": "90cadf5",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        },
        {
          "submitted_at": "2026-05-10T23:51:19Z",
          "state": "COMMENTED",
          "commit_id": "4dc32dc",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-10T20:45:19Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T20:46:55Z",
          "delta_seconds": 96,
          "trigger_recognized": true
        },
        {
          "trigger_comment_at": "2026-05-10T23:50:14Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T23:51:19Z",
          "delta_seconds": 65,
          "trigger_recognized": true
        }
      ]
    },
    "PR#96": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "closed",
      "created_at": "2026-05-10T20:11:57Z",
      "all_comments": [
        {
          "created_at": "2026-05-10T20:44:47Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-10T20:50:33Z",
          "state": "COMMENTED",
          "commit_id": "429569c",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-10T20:44:47Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-10T20:50:33Z",
          "delta_seconds": 346,
          "trigger_recognized": true
        }
      ]
    },
    "PR#97": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "closed",
      "created_at": "2026-05-11T01:03:30Z",
      "all_comments": [
        {
          "created_at": "2026-05-11T01:58:11Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T02:01:18Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "## Gemini fresh review triage (task-2547+1)  Gemini v3 review submitted at commit_id=`75b6768d` (PR head 일치). 5건 모두 medi",
          "is_trigger": false
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-11T01:59:50Z",
          "state": "COMMENTED",
          "commit_id": "75b6768",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-11T01:58:11Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-11T01:59:50Z",
          "delta_seconds": 99,
          "trigger_recognized": true
        }
      ]
    },
    "PR#98": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "open",
      "created_at": "2026-05-11T02:22:42Z",
      "all_comments": [
        {
          "created_at": "2026-05-11T02:23:52Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T02:24:16Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T03:22:16Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T03:28:36Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "Gemini 리뷰 3건 모두 반영 완료 (commit `93eac627`):  1. **scripts/ci.sh** — `-not -path` → `-prune` 으로 변경. find 트리 traversal 자체를 ",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-11T03:23:41Z",
          "state": "COMMENTED",
          "commit_id": "cfbb340",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-11T02:23:52Z",
          "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
          "trigger_comment_user_type": "Bot",
          "next_gemini_review_at": "2026-05-11T03:23:41Z",
          "delta_seconds": 3589,
          "trigger_recognized": false
        },
        {
          "trigger_comment_at": "2026-05-11T02:24:16Z",
          "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
          "trigger_comment_user_type": "Bot",
          "next_gemini_review_at": "2026-05-11T03:23:41Z",
          "delta_seconds": 3565,
          "trigger_recognized": false
        },
        {
          "trigger_comment_at": "2026-05-11T03:22:16Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-11T03:23:41Z",
          "delta_seconds": 85,
          "trigger_recognized": true
        },
        {
          "trigger_comment_at": "2026-05-11T03:28:36Z",
          "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
          "trigger_comment_user_type": "Bot",
          "next_gemini_review_at": null,
          "delta_seconds": null,
          "trigger_recognized": false
        }
      ]
    },
    "PR#99": {
      "pr_author": "jeon-jonghyuk-taskctl-bot[bot]",
      "pr_author_type": "Bot",
      "state": "open",
      "created_at": "2026-05-11T02:25:54Z",
      "all_comments": [
        {
          "created_at": "2026-05-11T02:28:40Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T02:40:11Z",
          "user": "jeon-jonghyuk-taskctl-bot[bot]",
          "user_type": "Bot",
          "body_excerpt": "## ESCALATED — §13 GEMINI_EXTERNAL_TRIGGER_GAP  [task-2551] regression layer restoration 본질 작업은 완료. 단, CI 2건이 Gemini App",
          "is_trigger": true
        },
        {
          "created_at": "2026-05-11T03:27:07Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-11T03:28:55Z",
          "state": "COMMENTED",
          "commit_id": "3ef3016",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-11T02:28:40Z",
          "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
          "trigger_comment_user_type": "Bot",
          "next_gemini_review_at": "2026-05-11T03:28:55Z",
          "delta_seconds": 3615,
          "trigger_recognized": false
        },
        {
          "trigger_comment_at": "2026-05-11T02:40:11Z",
          "trigger_comment_user": "jeon-jonghyuk-taskctl-bot[bot]",
          "trigger_comment_user_type": "Bot",
          "next_gemini_review_at": "2026-05-11T03:28:55Z",
          "delta_seconds": 2924,
          "trigger_recognized": false
        },
        {
          "trigger_comment_at": "2026-05-11T03:27:07Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-11T03:28:55Z",
          "delta_seconds": 108,
          "trigger_recognized": true
        }
      ]
    },
    "PR#100": {
      "pr_author": "JonghyukJeon",
      "pr_author_type": "User",
      "state": "open",
      "created_at": "2026-05-11T02:38:52Z",
      "all_comments": [
        {
          "created_at": "2026-05-11T03:27:28Z",
          "user": "JonghyukJeon",
          "user_type": "User",
          "body_excerpt": "/gemini review",
          "is_trigger": true
        }
      ],
      "gemini_reviews": [
        {
          "submitted_at": "2026-05-11T02:40:34Z",
          "state": "COMMENTED",
          "commit_id": "4067d8c",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        },
        {
          "submitted_at": "2026-05-11T03:29:20Z",
          "state": "COMMENTED",
          "commit_id": "4067d8c",
          "user": "gemini-code-assist[bot]",
          "user_type": "Bot"
        }
      ],
      "trigger_evidence": [
        {
          "trigger_comment_at": "2026-05-11T03:27:28Z",
          "trigger_comment_user": "JonghyukJeon",
          "trigger_comment_user_type": "User",
          "next_gemini_review_at": "2026-05-11T03:29:20Z",
          "delta_seconds": 112,
          "trigger_recognized": true
        }
      ]
    }
  }
}
