{
"action": "closed",
"number": 15,
"sender": {
"id": 84743972,
"url": "https://api.github.com/users/tanminhan00",
"type": "User",
"login": "tanminhan00",
"node_id": "MDQ6VXNlcjg0NzQzOTcy",
"html_url": "https://github.com/tanminhan00",
"gists_url": "https://api.github.com/users/tanminhan00/gists{/gist_id}",
"repos_url": "https://api.github.com/users/tanminhan00/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/84743972?v=4",
"events_url": "https://api.github.com/users/tanminhan00/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/tanminhan00/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/tanminhan00/followers",
"following_url": "https://api.github.com/users/tanminhan00/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/tanminhan00/orgs",
"subscriptions_url": "https://api.github.com/users/tanminhan00/subscriptions",
"received_events_url": "https://api.github.com/users/tanminhan00/received_events"
},
"repository": {
"id": 1407369481,
"url": "https://api.github.com/repos/token2049-decentralizing/core",
"fork": false,
"name": "core",
"size": 563,
"forks": 0,
"owner": {
"id": 338630102,
"url": "https://api.github.com/users/token2049-decentralizing",
"type": "Organization",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"html_url": "https://github.com/token2049-decentralizing",
"gists_url": "https://api.github.com/users/token2049-decentralizing/gists{/gist_id}",
"repos_url": "https://api.github.com/users/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/users/token2049-decentralizing/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/token2049-decentralizing/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/token2049-decentralizing/followers",
"following_url": "https://api.github.com/users/token2049-decentralizing/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/token2049-decentralizing/orgs",
"subscriptions_url": "https://api.github.com/users/token2049-decentralizing/subscriptions",
"received_events_url": "https://api.github.com/users/token2049-decentralizing/received_events"
},
"topics": [],
"git_url": "git://github.com/token2049-decentralizing/core.git",
"license": null,
"node_id": "R_kgDOU-LBCQ",
"private": true,
"ssh_url": "git@github.com:token2049-decentralizing/core.git",
"svn_url": "https://github.com/token2049-decentralizing/core",
"archived": false,
"disabled": false,
"has_wiki": false,
"homepage": "https://core-psi-virid.vercel.app",
"html_url": "https://github.com/token2049-decentralizing/core",
"keys_url": "https://api.github.com/repos/token2049-decentralizing/core/keys{/key_id}",
"language": "TypeScript",
"tags_url": "https://api.github.com/repos/token2049-decentralizing/core/tags",
"watchers": 0,
"blobs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/blobs{/sha}",
"clone_url": "https://github.com/token2049-decentralizing/core.git",
"forks_url": "https://api.github.com/repos/token2049-decentralizing/core/forks",
"full_name": "token2049-decentralizing/core",
"has_pages": false,
"hooks_url": "https://api.github.com/repos/token2049-decentralizing/core/hooks",
"pulls_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls{/number}",
"pushed_at": "2026-10-07T08:32:15Z",
"teams_url": "https://api.github.com/repos/token2049-decentralizing/core/teams",
"trees_url": "https://api.github.com/repos/token2049-decentralizing/core/git/trees{/sha}",
"created_at": "2026-10-06T13:39:02Z",
"events_url": "https://api.github.com/repos/token2049-decentralizing/core/events",
"has_issues": true,
"issues_url": "https://api.github.com/repos/token2049-decentralizing/core/issues{/number}",
"labels_url": "https://api.github.com/repos/token2049-decentralizing/core/labels{/name}",
"merges_url": "https://api.github.com/repos/token2049-decentralizing/core/merges",
"mirror_url": null,
"updated_at": "2026-10-07T07:04:53Z",
"visibility": "private",
"archive_url": "https://api.github.com/repos/token2049-decentralizing/core/{archive_format}{/ref}",
"commits_url": "https://api.github.com/repos/token2049-decentralizing/core/commits{/sha}",
"compare_url": "https://api.github.com/repos/token2049-decentralizing/core/compare/{base}...{head}",
"description": null,
"forks_count": 0,
"is_template": false,
"open_issues": 3,
"branches_url": "https://api.github.com/repos/token2049-decentralizing/core/branches{/branch}",
"comments_url": "https://api.github.com/repos/token2049-decentralizing/core/comments{/number}",
"contents_url": "https://api.github.com/repos/token2049-decentralizing/core/contents/{+path}",
"git_refs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/token2049-decentralizing/core/git/tags{/sha}",
"has_projects": true,
"releases_url": "https://api.github.com/repos/token2049-decentralizing/core/releases{/id}",
"statuses_url": "https://api.github.com/repos/token2049-decentralizing/core/statuses/{sha}",
"allow_forking": false,
"assignees_url": "https://api.github.com/repos/token2049-decentralizing/core/assignees{/user}",
"downloads_url": "https://api.github.com/repos/token2049-decentralizing/core/downloads",
"has_downloads": false,
"languages_url": "https://api.github.com/repos/token2049-decentralizing/core/languages",
"default_branch": "main",
"milestones_url": "https://api.github.com/repos/token2049-decentralizing/core/milestones{/number}",
"stargazers_url": "https://api.github.com/repos/token2049-decentralizing/core/stargazers",
"watchers_count": 0,
"deployments_url": "https://api.github.com/repos/token2049-decentralizing/core/deployments",
"git_commits_url": "https://api.github.com/repos/token2049-decentralizing/core/git/commits{/sha}",
"has_discussions": false,
"subscribers_url": "https://api.github.com/repos/token2049-decentralizing/core/subscribers",
"contributors_url": "https://api.github.com/repos/token2049-decentralizing/core/contributors",
"issue_events_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/events{/number}",
"stargazers_count": 0,
"subscription_url": "https://api.github.com/repos/token2049-decentralizing/core/subscription",
"collaborators_url": "https://api.github.com/repos/token2049-decentralizing/core/collaborators{/collaborator}",
"custom_properties": {},
"has_pull_requests": true,
"issue_comment_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/comments{/number}",
"notifications_url": "https://api.github.com/repos/token2049-decentralizing/core/notifications{?since,all,participating}",
"open_issues_count": 3,
"web_commit_signoff_required": false,
"pull_request_creation_policy": "all"
},
"installation": {
"id": 168543931,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTY4NTQzOTMx"
},
"organization": {
"id": 338630102,
"url": "https://api.github.com/orgs/token2049-decentralizing",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"hooks_url": "https://api.github.com/orgs/token2049-decentralizing/hooks",
"repos_url": "https://api.github.com/orgs/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/orgs/token2049-decentralizing/events",
"issues_url": "https://api.github.com/orgs/token2049-decentralizing/issues",
"description": null,
"members_url": "https://api.github.com/orgs/token2049-decentralizing/members{/member}",
"public_members_url": "https://api.github.com/orgs/token2049-decentralizing/public_members{/member}"
},
"pull_request": {
"id": 4771715959,
"url": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15",
"base": {
"ref": "main",
"sha": "c3f459814b2c8f4380a2e8e011498626fece1450",
"repo": {
"id": 1407369481,
"url": "https://api.github.com/repos/token2049-decentralizing/core",
"fork": false,
"name": "core",
"size": 563,
"forks": 0,
"owner": {
"id": 338630102,
"url": "https://api.github.com/users/token2049-decentralizing",
"type": "Organization",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"html_url": "https://github.com/token2049-decentralizing",
"gists_url": "https://api.github.com/users/token2049-decentralizing/gists{/gist_id}",
"repos_url": "https://api.github.com/users/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/users/token2049-decentralizing/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/token2049-decentralizing/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/token2049-decentralizing/followers",
"following_url": "https://api.github.com/users/token2049-decentralizing/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/token2049-decentralizing/orgs",
"subscriptions_url": "https://api.github.com/users/token2049-decentralizing/subscriptions",
"received_events_url": "https://api.github.com/users/token2049-decentralizing/received_events"
},
"topics": [],
"git_url": "git://github.com/token2049-decentralizing/core.git",
"license": null,
"node_id": "R_kgDOU-LBCQ",
"private": true,
"ssh_url": "git@github.com:token2049-decentralizing/core.git",
"svn_url": "https://github.com/token2049-decentralizing/core",
"archived": false,
"disabled": false,
"has_wiki": false,
"homepage": "https://core-psi-virid.vercel.app",
"html_url": "https://github.com/token2049-decentralizing/core",
"keys_url": "https://api.github.com/repos/token2049-decentralizing/core/keys{/key_id}",
"language": "TypeScript",
"tags_url": "https://api.github.com/repos/token2049-decentralizing/core/tags",
"watchers": 0,
"blobs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/blobs{/sha}",
"clone_url": "https://github.com/token2049-decentralizing/core.git",
"forks_url": "https://api.github.com/repos/token2049-decentralizing/core/forks",
"full_name": "token2049-decentralizing/core",
"has_pages": false,
"hooks_url": "https://api.github.com/repos/token2049-decentralizing/core/hooks",
"pulls_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls{/number}",
"pushed_at": "2026-10-07T08:32:15Z",
"teams_url": "https://api.github.com/repos/token2049-decentralizing/core/teams",
"trees_url": "https://api.github.com/repos/token2049-decentralizing/core/git/trees{/sha}",
"created_at": "2026-10-06T13:39:02Z",
"events_url": "https://api.github.com/repos/token2049-decentralizing/core/events",
"has_issues": true,
"issues_url": "https://api.github.com/repos/token2049-decentralizing/core/issues{/number}",
"labels_url": "https://api.github.com/repos/token2049-decentralizing/core/labels{/name}",
"merges_url": "https://api.github.com/repos/token2049-decentralizing/core/merges",
"mirror_url": null,
"updated_at": "2026-10-07T07:04:53Z",
"visibility": "private",
"archive_url": "https://api.github.com/repos/token2049-decentralizing/core/{archive_format}{/ref}",
"commits_url": "https://api.github.com/repos/token2049-decentralizing/core/commits{/sha}",
"compare_url": "https://api.github.com/repos/token2049-decentralizing/core/compare/{base}...{head}",
"description": null,
"forks_count": 0,
"is_template": false,
"open_issues": 3,
"branches_url": "https://api.github.com/repos/token2049-decentralizing/core/branches{/branch}",
"comments_url": "https://api.github.com/repos/token2049-decentralizing/core/comments{/number}",
"contents_url": "https://api.github.com/repos/token2049-decentralizing/core/contents/{+path}",
"git_refs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/token2049-decentralizing/core/git/tags{/sha}",
"has_projects": true,
"releases_url": "https://api.github.com/repos/token2049-decentralizing/core/releases{/id}",
"statuses_url": "https://api.github.com/repos/token2049-decentralizing/core/statuses/{sha}",
"allow_forking": false,
"assignees_url": "https://api.github.com/repos/token2049-decentralizing/core/assignees{/user}",
"downloads_url": "https://api.github.com/repos/token2049-decentralizing/core/downloads",
"has_downloads": false,
"languages_url": "https://api.github.com/repos/token2049-decentralizing/core/languages",
"default_branch": "main",
"milestones_url": "https://api.github.com/repos/token2049-decentralizing/core/milestones{/number}",
"stargazers_url": "https://api.github.com/repos/token2049-decentralizing/core/stargazers",
"watchers_count": 0,
"deployments_url": "https://api.github.com/repos/token2049-decentralizing/core/deployments",
"git_commits_url": "https://api.github.com/repos/token2049-decentralizing/core/git/commits{/sha}",
"has_discussions": false,
"subscribers_url": "https://api.github.com/repos/token2049-decentralizing/core/subscribers",
"allow_auto_merge": false,
"contributors_url": "https://api.github.com/repos/token2049-decentralizing/core/contributors",
"issue_events_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/events{/number}",
"stargazers_count": 0,
"subscription_url": "https://api.github.com/repos/token2049-decentralizing/core/subscription",
"collaborators_url": "https://api.github.com/repos/token2049-decentralizing/core/collaborators{/collaborator}",
"has_pull_requests": true,
"issue_comment_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/comments{/number}",
"notifications_url": "https://api.github.com/repos/token2049-decentralizing/core/notifications{?since,all,participating}",
"open_issues_count": 3,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"allow_squash_merge": true,
"merge_commit_title": "MERGE_MESSAGE",
"allow_update_branch": false,
"merge_commit_message": "PR_TITLE",
"delete_branch_on_merge": false,
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
"squash_merge_commit_message": "COMMIT_MESSAGES",
"web_commit_signoff_required": false,
"pull_request_creation_policy": "all",
"use_squash_pr_title_as_default": false
},
"user": {
"id": 338630102,
"url": "https://api.github.com/users/token2049-decentralizing",
"type": "Organization",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"html_url": "https://github.com/token2049-decentralizing",
"gists_url": "https://api.github.com/users/token2049-decentralizing/gists{/gist_id}",
"repos_url": "https://api.github.com/users/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/users/token2049-decentralizing/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/token2049-decentralizing/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/token2049-decentralizing/followers",
"following_url": "https://api.github.com/users/token2049-decentralizing/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/token2049-decentralizing/orgs",
"subscriptions_url": "https://api.github.com/users/token2049-decentralizing/subscriptions",
"received_events_url": "https://api.github.com/users/token2049-decentralizing/received_events"
},
"label": "token2049-decentralizing:main"
},
"body": "## Summary\nThis PR adds a human review appeal system that allows contributors to request a human review of their evaluation scores. When an appeal is submitted, the runner comments on the PR and @mentions an appropriate reviewer (issue author, PR merger, or fallback), while keeping the original score unchanged.\n\n## Key Changes\n\n**Backend (Go)**\n- **New appeal system** (`appeal.go`): Implements POST `/api/executions/:id/appeals` endpoint that:\n - Records appeal requests in a new `cre_execution_appeals` table\n - Posts a formatted comment on the PR with score breakdown and weakest criteria\n - Intelligently selects a reviewer: linked issue author → PR merger → fallback\n - Neutralizes @mentions in contributor text to prevent unintended pings\n - Enforces one appeal per execution and validates reason length (10-2000 chars)\n\n- **Scorecard generation** (`scorecard.go`, `scoring.go`, `reviewers.go`): \n - Extracts evidence checks with points/max and details (e.g., \"no approving review\")\n - Captures reviewer rubric categories and findings (file paths + line numbers, no code)\n - Validates reviewer output (max 8 categories, 5 findings, 300 char notes)\n - Builds contributor-facing scorecard included in `evaluation_hash`\n\n- **Reviewer enhancements** (`reviewer/review.go`):\n - Adds `breakdown` field with structured category scores\n - Adds `findings` with severity, category, file, and line information\n - Maintains backward compatibility with plain score-only responses\n\n- **GitHub App permissions** (`ghapp.go`):\n - Extends token minting to support write permissions (e.g., \"pull_requests\": \"write\")\n - Enables posting comments on PRs\n\n- **Database** (`migrations/004_scorecards_appeals.sql`):\n - Adds `scorecard` column to `cre_executions` (JSONB)\n - Creates `cre_execution_appeals` table with unique constraint on `execution_id`\n\n**Frontend (TypeScript/React)**\n- **Score breakdown component** (`score-breakdown.tsx`): \n - Displays weighted contribution bar chart\n - Shows evidence checks, reviewer categories, and findings\n - Links findings to GitHub file locations with line numbers\n - Displays eligibility gates with pass/fail status\n\n- **Appeal button** (`appeal-button.tsx`):\n - Modal form to submit review request with reason validation\n - Shows appeal status with link to PR comment\n - Displays mentioned reviewer when available\n\n- **API types** (`lib/api.ts`):\n - Adds `Scorecard`, `EvidenceCheck`, `ReviewCard`, `Finding`, `Gate` types\n - Adds `Appeal` type with status tracking\n - Adds `requestReview()` function for submitting appeals\n\n- **Execution detail page** (`app/executions/[id]/page.tsx`):\n - Integrates score breakdown and appeal button components\n - Shows scorecard when available\n\n## Notable Implementation Details\n\n- **Evaluation hash coverage**: Scorecard is included in `evaluation_hash`, ensuring the dashboard displays exactly what was scored\n- **Reviewer detail validation**: Bounds reviewer output (categories, findings, note length) before storing\n- **Graceful degradation**: Appeals disabled when GitHub credentials unavailable; scorecard null for older executions\n- **Mention neutralization**: Converts \"@\" to \"@\" (zero-width space) in contributor text to prevent accidental pings\n- **Token formatting**: Converts base units to human-readable format (e.g., \"445000000\" USDC → \"445 USDC\")\n- **Weakest criteria ranking**: Lists criteria by largest point loss share, excluding full marks\n\nhttps://claude.ai/code/session_017vX8oeripEiDffKVmgmuqT",
"head": {
"ref": "claude/loving-hypatia-slu4cc",
"sha": "8ce1299063eaa179e887e02b65abb0ec5c157190",
"repo": {
"id": 1407369481,
"url": "https://api.github.com/repos/token2049-decentralizing/core",
"fork": false,
"name": "core",
"size": 563,
"forks": 0,
"owner": {
"id": 338630102,
"url": "https://api.github.com/users/token2049-decentralizing",
"type": "Organization",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"html_url": "https://github.com/token2049-decentralizing",
"gists_url": "https://api.github.com/users/token2049-decentralizing/gists{/gist_id}",
"repos_url": "https://api.github.com/users/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/users/token2049-decentralizing/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/token2049-decentralizing/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/token2049-decentralizing/followers",
"following_url": "https://api.github.com/users/token2049-decentralizing/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/token2049-decentralizing/orgs",
"subscriptions_url": "https://api.github.com/users/token2049-decentralizing/subscriptions",
"received_events_url": "https://api.github.com/users/token2049-decentralizing/received_events"
},
"topics": [],
"git_url": "git://github.com/token2049-decentralizing/core.git",
"license": null,
"node_id": "R_kgDOU-LBCQ",
"private": true,
"ssh_url": "git@github.com:token2049-decentralizing/core.git",
"svn_url": "https://github.com/token2049-decentralizing/core",
"archived": false,
"disabled": false,
"has_wiki": false,
"homepage": "https://core-psi-virid.vercel.app",
"html_url": "https://github.com/token2049-decentralizing/core",
"keys_url": "https://api.github.com/repos/token2049-decentralizing/core/keys{/key_id}",
"language": "TypeScript",
"tags_url": "https://api.github.com/repos/token2049-decentralizing/core/tags",
"watchers": 0,
"blobs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/blobs{/sha}",
"clone_url": "https://github.com/token2049-decentralizing/core.git",
"forks_url": "https://api.github.com/repos/token2049-decentralizing/core/forks",
"full_name": "token2049-decentralizing/core",
"has_pages": false,
"hooks_url": "https://api.github.com/repos/token2049-decentralizing/core/hooks",
"pulls_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls{/number}",
"pushed_at": "2026-10-07T08:32:15Z",
"teams_url": "https://api.github.com/repos/token2049-decentralizing/core/teams",
"trees_url": "https://api.github.com/repos/token2049-decentralizing/core/git/trees{/sha}",
"created_at": "2026-10-06T13:39:02Z",
"events_url": "https://api.github.com/repos/token2049-decentralizing/core/events",
"has_issues": true,
"issues_url": "https://api.github.com/repos/token2049-decentralizing/core/issues{/number}",
"labels_url": "https://api.github.com/repos/token2049-decentralizing/core/labels{/name}",
"merges_url": "https://api.github.com/repos/token2049-decentralizing/core/merges",
"mirror_url": null,
"updated_at": "2026-10-07T07:04:53Z",
"visibility": "private",
"archive_url": "https://api.github.com/repos/token2049-decentralizing/core/{archive_format}{/ref}",
"commits_url": "https://api.github.com/repos/token2049-decentralizing/core/commits{/sha}",
"compare_url": "https://api.github.com/repos/token2049-decentralizing/core/compare/{base}...{head}",
"description": null,
"forks_count": 0,
"is_template": false,
"open_issues": 3,
"branches_url": "https://api.github.com/repos/token2049-decentralizing/core/branches{/branch}",
"comments_url": "https://api.github.com/repos/token2049-decentralizing/core/comments{/number}",
"contents_url": "https://api.github.com/repos/token2049-decentralizing/core/contents/{+path}",
"git_refs_url": "https://api.github.com/repos/token2049-decentralizing/core/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/token2049-decentralizing/core/git/tags{/sha}",
"has_projects": true,
"releases_url": "https://api.github.com/repos/token2049-decentralizing/core/releases{/id}",
"statuses_url": "https://api.github.com/repos/token2049-decentralizing/core/statuses/{sha}",
"allow_forking": false,
"assignees_url": "https://api.github.com/repos/token2049-decentralizing/core/assignees{/user}",
"downloads_url": "https://api.github.com/repos/token2049-decentralizing/core/downloads",
"has_downloads": false,
"languages_url": "https://api.github.com/repos/token2049-decentralizing/core/languages",
"default_branch": "main",
"milestones_url": "https://api.github.com/repos/token2049-decentralizing/core/milestones{/number}",
"stargazers_url": "https://api.github.com/repos/token2049-decentralizing/core/stargazers",
"watchers_count": 0,
"deployments_url": "https://api.github.com/repos/token2049-decentralizing/core/deployments",
"git_commits_url": "https://api.github.com/repos/token2049-decentralizing/core/git/commits{/sha}",
"has_discussions": false,
"subscribers_url": "https://api.github.com/repos/token2049-decentralizing/core/subscribers",
"allow_auto_merge": false,
"contributors_url": "https://api.github.com/repos/token2049-decentralizing/core/contributors",
"issue_events_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/events{/number}",
"stargazers_count": 0,
"subscription_url": "https://api.github.com/repos/token2049-decentralizing/core/subscription",
"collaborators_url": "https://api.github.com/repos/token2049-decentralizing/core/collaborators{/collaborator}",
"has_pull_requests": true,
"issue_comment_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/comments{/number}",
"notifications_url": "https://api.github.com/repos/token2049-decentralizing/core/notifications{?since,all,participating}",
"open_issues_count": 3,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"allow_squash_merge": true,
"merge_commit_title": "MERGE_MESSAGE",
"allow_update_branch": false,
"merge_commit_message": "PR_TITLE",
"delete_branch_on_merge": false,
"squash_merge_commit_title": "COMMIT_OR_PR_TITLE",
"squash_merge_commit_message": "COMMIT_MESSAGES",
"web_commit_signoff_required": false,
"pull_request_creation_policy": "all",
"use_squash_pr_title_as_default": false
},
"user": {
"id": 338630102,
"url": "https://api.github.com/users/token2049-decentralizing",
"type": "Organization",
"login": "token2049-decentralizing",
"node_id": "O_kgDOFC8V1g",
"html_url": "https://github.com/token2049-decentralizing",
"gists_url": "https://api.github.com/users/token2049-decentralizing/gists{/gist_id}",
"repos_url": "https://api.github.com/users/token2049-decentralizing/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/338630102?v=4",
"events_url": "https://api.github.com/users/token2049-decentralizing/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/token2049-decentralizing/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/token2049-decentralizing/followers",
"following_url": "https://api.github.com/users/token2049-decentralizing/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/token2049-decentralizing/orgs",
"subscriptions_url": "https://api.github.com/users/token2049-decentralizing/subscriptions",
"received_events_url": "https://api.github.com/users/token2049-decentralizing/received_events"
},
"label": "token2049-decentralizing:claude/loving-hypatia-slu4cc"
},
"user": {
"id": 84743972,
"url": "https://api.github.com/users/tanminhan00",
"type": "User",
"login": "tanminhan00",
"node_id": "MDQ6VXNlcjg0NzQzOTcy",
"html_url": "https://github.com/tanminhan00",
"gists_url": "https://api.github.com/users/tanminhan00/gists{/gist_id}",
"repos_url": "https://api.github.com/users/tanminhan00/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/84743972?v=4",
"events_url": "https://api.github.com/users/tanminhan00/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/tanminhan00/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/tanminhan00/followers",
"following_url": "https://api.github.com/users/tanminhan00/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/tanminhan00/orgs",
"subscriptions_url": "https://api.github.com/users/tanminhan00/subscriptions",
"received_events_url": "https://api.github.com/users/tanminhan00/received_events"
},
"draft": false,
"state": "closed",
"title": "Add human review appeals for evaluation scores",
"_links": {
"html": {
"href": "https://github.com/token2049-decentralizing/core/pull/15"
},
"self": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15"
},
"issue": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/issues/15"
},
"commits": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15/commits"
},
"comments": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/issues/15/comments"
},
"statuses": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/statuses/8ce1299063eaa179e887e02b65abb0ec5c157190"
},
"review_comment": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/pulls/comments{/number}"
},
"review_comments": {
"href": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15/comments"
}
},
"labels": [],
"locked": false,
"merged": true,
"number": 15,
"commits": 1,
"node_id": "PR_kwDOU-LBCc8AAAABHGqbdw",
"assignee": null,
"comments": 1,
"diff_url": "https://github.com/token2049-decentralizing/core/pull/15.diff",
"html_url": "https://github.com/token2049-decentralizing/core/pull/15",
"additions": 1927,
"assignees": [],
"closed_at": "2026-10-07T11:06:22Z",
"deletions": 100,
"issue_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/15",
"mergeable": null,
"merged_at": "2026-10-07T11:06:22Z",
"merged_by": {
"id": 84743972,
"url": "https://api.github.com/users/tanminhan00",
"type": "User",
"login": "tanminhan00",
"node_id": "MDQ6VXNlcjg0NzQzOTcy",
"html_url": "https://github.com/tanminhan00",
"gists_url": "https://api.github.com/users/tanminhan00/gists{/gist_id}",
"repos_url": "https://api.github.com/users/tanminhan00/repos",
"avatar_url": "https://avatars.githubusercontent.com/u/84743972?v=4",
"events_url": "https://api.github.com/users/tanminhan00/events{/privacy}",
"site_admin": false,
"gravatar_id": "",
"starred_url": "https://api.github.com/users/tanminhan00/starred{/owner}{/repo}",
"followers_url": "https://api.github.com/users/tanminhan00/followers",
"following_url": "https://api.github.com/users/tanminhan00/following{/other_user}",
"user_view_type": "public",
"organizations_url": "https://api.github.com/users/tanminhan00/orgs",
"subscriptions_url": "https://api.github.com/users/tanminhan00/subscriptions",
"received_events_url": "https://api.github.com/users/tanminhan00/received_events"
},
"milestone": null,
"patch_url": "https://github.com/token2049-decentralizing/core/pull/15.patch",
"auto_merge": null,
"created_at": "2026-10-07T11:05:56Z",
"rebaseable": null,
"updated_at": "2026-10-07T11:06:22Z",
"commits_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15/commits",
"comments_url": "https://api.github.com/repos/token2049-decentralizing/core/issues/15/comments",
"statuses_url": "https://api.github.com/repos/token2049-decentralizing/core/statuses/8ce1299063eaa179e887e02b65abb0ec5c157190",
"changed_files": 31,
"mergeable_state": "unknown",
"requested_teams": [],
"review_comments": 0,
"merge_commit_sha": "69ced2479d164111843ef52794eae30052213498",
"active_lock_reason": null,
"author_association": "COLLABORATOR",
"review_comment_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls/comments{/number}",
"requested_reviewers": [],
"review_comments_url": "https://api.github.com/repos/token2049-decentralizing/core/pulls/15/comments",
"maintainer_can_modify": false
}
}