Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| A workflow's event payload (`github.event` and the file at `GITHUB_EVENT_PATH`) reads as GitHub's webhook payload does. Ids are whole numbers, the same for an object wherever it appears and safe in JavaScript: `repository.id`, `pull_request.id`, `issue.id`, `review.id`, `sender.id` and every user's and owner's `id`, with g1t's own id as `node_id`; `github.repository_id`, `github.repository_owner_id`, `github.actor_id` and their `GITHUB_*` variables are the same numbers. What g1t's API takes back by id (comments, releases, deployments, workflow runs) keeps g1t's id, so `github.event.comment.id` still edits the comment. A repository in a person's own workspace is owned by a `User`, not an `Organization`. A push says whether it was `forced`, `created` or `deleted`, and its `head_commit` is the commit pushed. A pull request's `base.sha` is the tip of the branch it merges into at the event, not the merge base, and `merge_commit_sha` is the commit it landed as once merged; pull requests and issues carry `node_id`, `assignee`, `locked`, dates and label and milestone ids, and a fork's head names the fork. `workflow_run` has the followed run's attempt, times, actor, head commit, workflow id and URLs. Tests compare each payload's keys and types with trimmed copies of GitHub's documented payloads, and the Actions guide says what differs. OIDC claims keep g1t's ids, so trust policies already written still match. | 1 | { |
| 2 | "action": "opened", | |
| 3 | "number": 2, | |
| 4 | "pull_request": { | |
| 5 | "id": 279147437, | |
| 6 | "node_id": "MDExOlB1bGxSZXF1ZXN0Mjc5MTQ3NDM3", | |
| 7 | "number": 2, | |
| 8 | "title": "Update the README with new information.", | |
| 9 | "body": "This is a pretty simple change that we need to pull into main.", | |
| 10 | "state": "open", | |
| 11 | "locked": false, | |
| 12 | "draft": false, | |
| 13 | "merged": false, | |
| 14 | "merged_at": null, | |
| 15 | "merged_by": null, | |
| 16 | "merge_commit_sha": null, | |
| 17 | "labels": [ | |
| Merge branch 'worktree-agent-ab6bf4195fcb97f7c' into claude/cool-newton-7nm8r9 | 18 | { "id": 1362934389, "node_id": "MDU6TGFiZWwxMzYyOTM0Mzg5", "name": "bug", "color": "d73a4a", "description": "Something isn't working", "default": true } |
| A workflow's event payload (`github.event` and the file at `GITHUB_EVENT_PATH`) reads as GitHub's webhook payload does. Ids are whole numbers, the same for an object wherever it appears and safe in JavaScript: `repository.id`, `pull_request.id`, `issue.id`, `review.id`, `sender.id` and every user's and owner's `id`, with g1t's own id as `node_id`; `github.repository_id`, `github.repository_owner_id`, `github.actor_id` and their `GITHUB_*` variables are the same numbers. What g1t's API takes back by id (comments, releases, deployments, workflow runs) keeps g1t's id, so `github.event.comment.id` still edits the comment. A repository in a person's own workspace is owned by a `User`, not an `Organization`. A push says whether it was `forced`, `created` or `deleted`, and its `head_commit` is the commit pushed. A pull request's `base.sha` is the tip of the branch it merges into at the event, not the merge base, and `merge_commit_sha` is the commit it landed as once merged; pull requests and issues carry `node_id`, `assignee`, `locked`, dates and label and milestone ids, and a fork's head names the fork. `workflow_run` has the followed run's attempt, times, actor, head commit, workflow id and URLs. Tests compare each payload's keys and types with trimmed copies of GitHub's documented payloads, and the Actions guide says what differs. OIDC claims keep g1t's ids, so trust policies already written still match. | 19 | ], |
| 20 | "milestone": { | |
| 21 | "id": 4317517, | |
| 22 | "number": 1, | |
| 23 | "title": "v1.0", | |
| 24 | "html_url": "https://github.com/acme/web/milestone/1" | |
| 25 | }, | |
| 26 | "user": { | |
| 27 | "login": "ada", | |
| 28 | "id": 21031068, | |
| 29 | "node_id": "MDQ6VXNlcjIxMDMxMDY4", | |
| 30 | "type": "User", | |
| 31 | "html_url": "https://github.com/ada", | |
| 32 | "url": "https://api.github.com/users/ada" | |
| 33 | }, | |
| 34 | "assignee": { | |
| 35 | "login": "bo", | |
| 36 | "id": 21031069, | |
| 37 | "type": "User", | |
| 38 | "html_url": "https://github.com/bo", | |
| 39 | "url": "https://api.github.com/users/bo" | |
| 40 | }, | |
| 41 | "assignees": [ | |
| 42 | { | |
| 43 | "login": "bo", | |
| 44 | "id": 21031069, | |
| 45 | "type": "User", | |
| 46 | "html_url": "https://github.com/bo", | |
| 47 | "url": "https://api.github.com/users/bo" | |
| 48 | } | |
| 49 | ], | |
| 50 | "requested_reviewers": [ | |
| 51 | { | |
| 52 | "login": "cy", | |
| 53 | "id": 21031070, | |
| 54 | "type": "User", | |
| 55 | "html_url": "https://github.com/cy", | |
| 56 | "url": "https://api.github.com/users/cy" | |
| 57 | } | |
| 58 | ], | |
| 59 | "head": { | |
| 60 | "label": "acme:changes", | |
| 61 | "ref": "changes", | |
| 62 | "sha": "ec26c3e57ca3a959ca5aad62de7213c562f8c821", | |
| 63 | "user": { "login": "acme", "id": 21031067, "type": "Organization", "html_url": "https://github.com/acme", "url": "https://api.github.com/users/acme" }, | |
| 64 | "repo": { | |
| 65 | "id": 186853002, | |
| 66 | "node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=", | |
| 67 | "name": "web", | |
| 68 | "full_name": "acme/web", | |
| 69 | "owner": { "login": "acme", "id": 21031067, "type": "Organization", "html_url": "https://github.com/acme", "url": "https://api.github.com/users/acme" }, | |
| 70 | "html_url": "https://github.com/acme/web", | |
| 71 | "url": "https://api.github.com/repos/acme/web", | |
| 72 | "clone_url": "https://github.com/acme/web.git", | |
| 73 | "fork": false | |
| 74 | } | |
| 75 | }, | |
| 76 | "base": { | |
| 77 | "label": "acme:main", | |
| 78 | "ref": "main", | |
| 79 | "sha": "f95f852bd8fca8fcc58a9a2d6c842781e32a215e", | |
| 80 | "user": { "login": "acme", "id": 21031067, "type": "Organization", "html_url": "https://github.com/acme", "url": "https://api.github.com/users/acme" }, | |
| 81 | "repo": { | |
| 82 | "id": 186853002, | |
| 83 | "node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=", | |
| 84 | "name": "web", | |
| 85 | "full_name": "acme/web", | |
| 86 | "private": false, | |
| 87 | "owner": { "login": "acme", "id": 21031067, "type": "Organization", "html_url": "https://github.com/acme", "url": "https://api.github.com/users/acme" }, | |
| 88 | "html_url": "https://github.com/acme/web", | |
| 89 | "url": "https://api.github.com/repos/acme/web", | |
| 90 | "clone_url": "https://github.com/acme/web.git", | |
| 91 | "default_branch": "main", | |
| 92 | "fork": false, | |
| 93 | "visibility": "public" | |
| 94 | } | |
| 95 | }, | |
| 96 | "changed_files": 1, | |
| 97 | "additions": 1, | |
| 98 | "deletions": 1, | |
| 99 | "created_at": "2026-05-15T15:20:33Z", | |
| 100 | "updated_at": "2026-05-15T15:20:33Z", | |
| 101 | "closed_at": null, | |
| 102 | "html_url": "https://github.com/acme/web/pull/2", | |
| 103 | "url": "https://api.github.com/repos/acme/web/pulls/2", | |
| 104 | "issue_url": "https://api.github.com/repos/acme/web/issues/2" | |
| 105 | }, | |
| 106 | "repository": { | |
| 107 | "id": 186853002, | |
| 108 | "node_id": "MDEwOlJlcG9zaXRvcnkxODY4NTMwMDI=", | |
| 109 | "name": "web", | |
| 110 | "full_name": "acme/web", | |
| 111 | "private": false, | |
| 112 | "owner": { "login": "acme", "id": 21031067, "type": "Organization", "html_url": "https://github.com/acme", "url": "https://api.github.com/users/acme" }, | |
| 113 | "html_url": "https://github.com/acme/web", | |
| 114 | "url": "https://api.github.com/repos/acme/web", | |
| 115 | "clone_url": "https://github.com/acme/web.git", | |
| 116 | "description": null, | |
| 117 | "default_branch": "main", | |
| 118 | "fork": false, | |
| 119 | "archived": false, | |
| 120 | "created_at": "2026-05-15T15:19:25Z", | |
| 121 | "visibility": "public" | |
| 122 | }, | |
| 123 | "sender": { "login": "ada", "id": 21031068, "type": "User", "html_url": "https://github.com/ada", "url": "https://api.github.com/users/ada" } | |
| 124 | } |
This file's history is long; its oldest lines are credited to the oldest commit read.