← MergifyCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Mergify
Snapshot Sep 30, 2026 · 23:16 UTC · version 1.0.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "mergify-events",
"description": "Use `mergify events` to browse the Mergify activity log — every event Mergify recorded for a repository or one pull request (queue enters/leaves, merges, commands, CI Insights, freezes), as a human timeline or JSON. ALWAYS use this skill when investigating what Mergify did to a PR or repository and when, reconstructing a pull request's merge-queue lifecycle, auditing Mergify actions, or filtering events by type. Triggers on activity log, event log, events, what did Mergify do, queue lifecycle, queue history, event timeline, event_type, action.queue.",
"included_files": [],
"skill_md_contents": "---\nname: mergify-events\ndescription: Use `mergify events` to browse the Mergify activity log — every event Mergify recorded for a repository or one pull request (queue enters/leaves, merges, commands, CI Insights, freezes), as a human timeline or JSON. ALWAYS use this skill when investigating what Mergify did to a PR or repository and when, reconstructing a pull request's merge-queue lifecycle, auditing Mergify actions, or filtering events by type. Triggers on activity log, event log, events, what did Mergify do, queue lifecycle, queue history, event timeline, event_type, action.queue.\n---\n\n# Mergify Events\n\n## Overview\n\n`mergify events` lists the repository's Mergify activity log as a timeline — the ~45 event types the engine records: the `action.queue.*` lifecycle, workflow actions (`action.merge`, `action.rebase`, `action.label`, …), user commands (`command.queue`, `command.dequeue`), `ci_insights.*`, queue pauses, and scheduled freezes. One command over filters; there is deliberately no command per event type.\n\n```bash\nmergify events # whole repo, last 24h\nmergify events --pr 1740 # one PR's events, last 24h\nmergify events --pr 1740 --since 7d # wider window (s/m/h/d/w, max 90d)\nmergify events --type action.queue.leave --type command.queue # filter, repeatable\nmergify events --pr 1740 --json # raw events, newest first\nmergify events --limit 20 # newest 20 only (the header says so)\n```\n\n## The window rule (the one thing to get right)\n\nEvery result covers an **explicit time window**, stated in the header and in the empty-case message:\n\n```\nPR #1740 · 6 events · 2026-07-29 21:00 → 2026-07-30 21:00 UTC\n```\n\n- Default window: the **last 24 hours**. A PR dequeued last week shows **nothing** in the default window — that is \"nothing in the last 24h\", never \"no history\".\n- Retention is **90 days**; `--since 90d` is the widest useful window. Anything wider is rejected up front with the fix in the message.\n- An empty result names the window: `No events for PR #1740 between <from> and <to> UTC.` If you did not search the full retention yet, widen with `--since 90d` before concluding anything.\n\n## Reading the timeline\n\nOldest first (it reads down the page), with a summary per event where the metadata carries one:\n\n```\n 2026-07-30\n 14:02 action.queue.enter default\n 14:31 action.queue.checks_start default · draft PR #1801\n 15:04 action.queue.checks_end CHECKS_RETRIED\n 15:04 action.queue.leave CHECKS_FAILED\n 15:12 command.queue @jd\n```\n\nCaveat that prevents a real mistake: an abort code on **`action.queue.checks_end`** (`PR_AHEAD_DEQUEUED`, `MERGE_QUEUE_RESET`, `CHECKS_RETRIED`, …) means the *checks* were interrupted while the PR **stayed queued**. Only **`action.queue.leave`** means the PR left the queue — and its `merged: true` variant means it left by merging. Do not requeue a PR over a `checks_end` event.\n\n## JSON contract\n\n`--json` emits one document; `events` are the API's raw objects (unknown fields intact), **newest first**:\n\n```json\n{\n \"repository\": \"owner/repo\",\n \"pull_request\": 1740,\n \"received_from\": \"2026-07-29T21:00:00+00:00\",\n \"received_to\": \"2026-07-30T21:00:00+00:00\",\n \"size\": 6,\n \"events\": [ { \"id\": 123, \"type\": \"action.queue.leave\", \"received_at\": \"…\", \"metadata\": { \"…\": \"…\" } } ]\n}\n```\n\nThe window is echoed so an empty `events` is self-describing. Filter with `jq` on `.events[].type` and `.events[].metadata`.\n\n## When to use something else\n\n- **\"Why was this PR dequeued?\"** — `mergify queue show <PR>` (the `mergify-merge-queue` skill) is the dedicated answer: it renders the last leave event with the reason, the failing checks' job URLs, and the head-SHA staleness check. `mergify events` is for the *whole* trail or for non-queue events.\n- **Raw API access** (CLI not installed, or a token refused the log): `GET /v1/repos/{owner}/{repo}/logs` — same data; always pass `received_from` (the API silently defaults to 1 day) and keep the span ≤ 93 days.\n"
}SHA-256: db1adcf8f8212100b5f3ccd783ce9c7fd6b838f28804f60d14060c7913b5c6fb