diff --git a/config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs b/config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs index 9f93fe0331f..e8e9131787d 100644 --- a/config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs +++ b/config/scripts/build/mobile-web-app/verify-mobile-web-app-bundle.mjs @@ -71,19 +71,19 @@ export const MOBILE_WEB_APP_BUNDLE_SCRIPT_SWEEP = [ ['./h/[hostId]/[...page].tsx', 8], ['./h/[hostId]/accounts.tsx', 12], ['./h/[hostId]/agent-history/[worktreeId].tsx', 17], - ['./h/[hostId]/automations.tsx', 24], - ['./h/[hostId]/edit.tsx', 29], - ['./h/[hostId]/files/[worktreeId].tsx', 34], - ['./h/[hostId]/files/preview/[worktreeId].tsx', 44], - ['./h/[hostId]/history/[worktreeId].tsx', 47], - ['./h/[hostId]/index.tsx', 55], - ['./h/[hostId]/new-workspace.tsx', 66], - ['./h/[hostId]/pr/[worktreeId].tsx', 67], + ['./h/[hostId]/automations.tsx', 23], + ['./h/[hostId]/edit.tsx', 25], + ['./h/[hostId]/files/[worktreeId].tsx', 30], + ['./h/[hostId]/files/preview/[worktreeId].tsx', 40], + ['./h/[hostId]/history/[worktreeId].tsx', 43], + ['./h/[hostId]/index.tsx', 52], + ['./h/[hostId]/new-workspace.tsx', 65], + ['./h/[hostId]/pr/[worktreeId].tsx', 66], ['./h/[hostId]/review/[worktreeId].tsx', 78], - ['./h/[hostId]/session/[worktreeId].tsx', 93], - ['./h/[hostId]/source-control/[worktreeId].tsx', 101], - ['./h/[hostId]/tasks.tsx', 115], - ['./h/_layout.tsx', 119] + ['./h/[hostId]/session/[worktreeId].tsx', 94], + ['./h/[hostId]/source-control/[worktreeId].tsx', 103], + ['./h/[hostId]/tasks.tsx', 114], + ['./h/_layout.tsx', 118] ] const sweptScripts = MOBILE_WEB_APP_BUNDLE_SCRIPT_SWEEP.map(([, scripts]) => scripts) diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json index d3446b0fafd..15ae1d5c14d 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.listassignableusers-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "04facf3efe16": { "name": "github.listAssignableUsers#1", "ordinal": 15, @@ -192,17 +366,7 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -241,6 +405,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -452,14 +619,20 @@ } } }, - "3fb2c86ce340": { - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -469,158 +642,6 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "41113a109089": { @@ -958,212 +979,6 @@ } } }, - "58cb10d4b875": { - "assignable": { - "error": "Unknown method", - "ok": false - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "5b33c8cfd938": { "name": "status.get#1", "ordinal": 13, @@ -1204,21 +1019,11 @@ } } }, - "6a3f611aad80": { - "name": "github.prCheckDetails#1", - "ordinal": 12, - "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" - }, - "72b695c452ea": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Request failed: github.listAssignableUsers", + "60028dbfcbcc": { + "assignable": { + "error": "outer refused", "ok": false - } - }, - "8ad23d6b64f4": { + }, "check-details": { "ok": true, "result": { @@ -1257,6 +1062,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1420,6 +1228,20 @@ } } }, + "6a3f611aad80": { + "name": "github.prCheckDetails#1", + "ordinal": 12, + "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" + }, + "72b695c452ea": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Request failed: github.listAssignableUsers", + "ok": false + } + }, "8d6aae0ddf1f": { "name": "github.listAssignableUsers#1", "ordinal": 15, @@ -1468,18 +1290,9 @@ } } }, - "97a870d3dc4e": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "The host sent a reply this app could not read (github.listAssignableUsers)", - "ok": false - } - }, - "988810402377": { + "903f6b58b0e3": { "assignable": { - "error": "", + "error": "transport failure", "ok": false }, "check-details": { @@ -1520,6 +1333,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1683,9 +1499,18 @@ } } }, - "9906a3c54c35": { + "97a870d3dc4e": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "The host sent a reply this app could not read (github.listAssignableUsers)", + "ok": false + } + }, + "981818d2ef81": { "assignable": { - "error": "Request failed: github.listAssignableUsers", + "error": "", "ok": false }, "check-details": { @@ -1726,6 +1551,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1930,7 +1758,231 @@ } } }, - "a0d70c59fdd1": { + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "a197c20578aa": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "transport failure", + "ok": false + } + }, + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -1957,7 +2009,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -1983,15 +2035,6 @@ } } }, - "a197c20578aa": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "transport failure", - "ok": false - } - }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -2259,212 +2302,6 @@ } } }, - "bb518b7ceda7": { - "assignable": { - "error": "The host sent a reply this app could not read (github.listAssignableUsers)", - "ok": false - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "cdbefce64e00": { "name": "hostedReview.forBranch#1", "ordinal": 4, @@ -2637,22 +2474,9 @@ } } }, - "d89e7b8ce2a0": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "de22e6ed3197": { + "d71579b4a4d5": { "assignable": { - "error": "transport failure", + "error": "Unknown method", "ok": false }, "check-details": { @@ -2693,6 +2517,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2856,6 +2683,19 @@ } } }, + "d89e7b8ce2a0": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, "df34e36b0fb7": { "name": "github.listAssignableUsers#1", "ordinal": 16, @@ -2866,28 +2706,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, "e5ad5bb8a2aa": { "name": "github.listAssignableUsers#1", "ordinal": 15, @@ -2978,9 +2796,9 @@ } } }, - "ebd0a2a8cdaa": { + "ee7b1398a949": { "assignable": { - "error": "outer refused", + "error": "The host sent a reply this app could not read (github.listAssignableUsers)", "ok": false }, "check-details": { @@ -3021,6 +2839,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3295,6 +3116,215 @@ "error": "", "ok": false } + }, + "fbd14bf1a648": { + "assignable": { + "error": "Request failed: github.listAssignableUsers", + "ok": false + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } } }, "recording": { @@ -3338,7 +3368,7 @@ { "id": "pr-read-surface.prelude:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -3352,7 +3382,7 @@ { "id": "pr-read-surface.prelude:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -3370,7 +3400,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -3386,9 +3416,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -3398,7 +3428,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -3416,10 +3446,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -3429,7 +3459,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3451,11 +3481,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -3465,7 +3495,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3487,11 +3517,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "97a870d3dc4e" }, - "state": "bb518b7ceda7", + "state": "ee7b1398a949", "effects": [] } }, @@ -3501,7 +3531,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3523,11 +3553,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "97a870d3dc4e" }, - "state": "bb518b7ceda7", + "state": "ee7b1398a949", "effects": [] } }, @@ -3537,7 +3567,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3559,11 +3589,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "97a870d3dc4e" }, - "state": "bb518b7ceda7", + "state": "ee7b1398a949", "effects": [] } }, @@ -3573,7 +3603,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3595,11 +3625,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "97a870d3dc4e" }, - "state": "bb518b7ceda7", + "state": "ee7b1398a949", "effects": [] } }, @@ -3609,7 +3639,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3631,11 +3661,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "97a870d3dc4e" }, - "state": "bb518b7ceda7", + "state": "ee7b1398a949", "effects": [] } }, @@ -3645,7 +3675,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3667,11 +3697,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "1b2778bf67a2" }, - "state": "ebd0a2a8cdaa", + "state": "60028dbfcbcc", "effects": [] } }, @@ -3681,7 +3711,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3703,11 +3733,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "72b695c452ea" }, - "state": "9906a3c54c35", + "state": "fbd14bf1a648", "effects": [] } }, @@ -3717,7 +3747,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3739,11 +3769,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "fa93ca01f266" }, - "state": "58cb10d4b875", + "state": "d71579b4a4d5", "effects": [] } }, @@ -3753,7 +3783,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3775,11 +3805,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a197c20578aa" }, - "state": "de22e6ed3197", + "state": "903f6b58b0e3", "effects": [] } }, @@ -3789,7 +3819,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -3811,11 +3841,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "fb4429083480" }, - "state": "988810402377", + "state": "981818d2ef81", "effects": [] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json index 23808841cc7..49909f1de11 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prcheckdetails-1.json @@ -4,19 +4,9 @@ "family": "github.pr-read", "namedDeltas": [], "values": { - "021aee0e0e89": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "00d08fd022db": { "check-details": { - "error": "", + "error": "The host sent a reply this app could not read (github.prCheckDetails)", "ok": false }, "checks": { @@ -26,6 +16,183 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -241,6 +408,194 @@ "variant": "pr-assignable-users" } }, + "0e96c789f931": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "error": "", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "10b0a575e1e7": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -445,7 +800,7 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "20f08dfb4ba5": { + "2503434de337": { "check-details": { "error": "", "ok": false @@ -457,6 +812,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -620,17 +978,7 @@ } } }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -669,6 +1017,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -872,18 +1223,20 @@ } } }, - "3217f8cc59b8": { - "check-details": { - "error": "outer refused", - "ok": false - }, - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -893,506 +1246,6 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "3a47c8c6d401": { - "check-details": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "3fb2c86ce340": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "41113a109089": { @@ -1495,191 +1348,6 @@ } } }, - "51a3190eab29": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "error": "Unknown method", - "ok": false - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "52504eafec78": { "name": "github.prChecks#1", "ordinal": 10, @@ -1775,193 +1443,6 @@ } } }, - "565f48f8c86b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "5b33c8cfd938": { "name": "status.get#1", "ordinal": 13, @@ -2002,366 +1483,6 @@ } } }, - "5e1cecd0fe93": { - "check-details": { - "error": "Unknown method", - "ok": false - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "63e65f991877": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "error": "The host sent a reply this app could not read (github.prCheckDetails)", - "ok": false - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "64f833b5c1da": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -2402,181 +1523,6 @@ } } }, - "65a009e38a55": { - "check-details": { - "error": "Request failed: github.prCheckDetails", - "ok": false - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "67bb6e1df8fd": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -2621,6 +1567,186 @@ "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, + "6fc3bb143b71": { + "check-details": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "70b3fc7e42df": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -2658,9 +1784,9 @@ } } }, - "7965aa5814a6": { + "7eaab6cbec3f": { "check-details": { - "error": "transport failure", + "error": "Request failed: github.prCheckDetails", "ok": false }, "checks": { @@ -2670,6 +1796,387 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "801e211ed260": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "85179fc56474": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "error": "outer refused", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2844,208 +2351,6 @@ } } }, - "8ad23d6b64f4": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "9091748d97f3": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -3127,7 +2432,7 @@ } } }, - "9e11f1e3b335": { + "9bb9d9b8c502": { "assignable": { "ok": true, "result": [ @@ -3139,8 +2444,35 @@ ] }, "check-details": { - "error": "Request failed: github.prCheckDetails", - "ok": false + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } }, "checks": { "ok": true, @@ -3149,244 +2481,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { + "observedHeadSha": { "$rpc": "undefined" }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "a0d70c59fdd1": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, - "a11acec7976f": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "error": "outer refused", - "ok": false - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", "status": "completed", "url": { "$rpc": "null" @@ -3559,6 +2656,59 @@ "ok": false } }, + "a20f0d944ba5": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -3728,6 +2878,194 @@ ] } }, + "b86cc24216e6": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "error": "transport failure", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "c31215e7aa43": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -3770,11 +3108,387 @@ } } }, + "c7af53c3d4af": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "error": "The host sent a reply this app could not read (github.prCheckDetails)", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "cdbefce64e00": { "name": "hostedReview.forBranch#1", "ordinal": 4, "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":12,\"active\":true}}" }, + "d00f88b54137": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "error": "Unknown method", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "d01444e13d4c": { "status": "fulfilled", "startedAt": 0, @@ -3898,51 +3612,9 @@ } } }, - "d205bc3bdc6b": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Request failed: github.prCheckDetails", - "ok": false - } - }, - "d89e7b8ce2a0": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "df34e36b0fb7": { - "name": "github.listAssignableUsers#1", - "ordinal": 16, - "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.listAssignableUsers\",\"params\":{\"repo\":\"id:repo-9\",\"ownerRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" - }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "e11af9dd6e58": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "d19d917ec590": { "check-details": { - "error": "transport failure", + "error": "outer refused", "ok": false }, "checks": { @@ -3952,6 +3624,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4115,28 +3790,38 @@ } } }, - "e23eb2e4b033": { + "d205bc3bdc6b": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Request failed: github.prCheckDetails", + "ok": false + } + }, + "d89e7b8ce2a0": { "status": "fulfilled", "startedAt": 0, "settledAt": 0, "value": { "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } } }, + "df34e36b0fb7": { + "name": "github.listAssignableUsers#1", + "ordinal": 16, + "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.listAssignableUsers\",\"params\":{\"repo\":\"id:repo-9\",\"ownerRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" + }, + "e10925fa98de": { + "name": "status.get#1", + "ordinal": 14, + "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -4180,6 +3865,362 @@ } } }, + "efe5aa48a53d": { + "check-details": { + "error": "Unknown method", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "f135a908a5dd": { + "check-details": { + "error": "transport failure", + "ok": false + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "f165c11a5545": { "status": "fulfilled", "startedAt": 0, @@ -4283,66 +4324,19 @@ } } }, - "fa89bef09972": { - "name": "github.prCheckDetails#1", - "ordinal": 11, - "args": [ - { - "name": "method", - "value": "github.prCheckDetails" - }, - { - "name": "params", - "value": { - "checkName": "build", - "checkRunId": 7, - "repo": "id:repo-9", - "url": { - "$rpc": "null" - } + "fa6b45dd1f0d": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-6", - "ok": true, - "result": { - "error": "refused" - } - } - } - }, - "fa93ca01f266": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Unknown method", - "ok": false - } - }, - "fb4429083480": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "", - "ok": false - } - }, - "fcf8b5cebefc": { + ] + }, "check-details": { - "error": "The host sent a reply this app could not read (github.prCheckDetails)", + "error": "Request failed: github.prCheckDetails", "ok": false }, "checks": { @@ -4352,6 +4346,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4514,6 +4511,63 @@ } } } + }, + "fa89bef09972": { + "name": "github.prCheckDetails#1", + "ordinal": 11, + "args": [ + { + "name": "method", + "value": "github.prCheckDetails" + }, + { + "name": "params", + "value": { + "checkName": "build", + "checkRunId": 7, + "repo": "id:repo-9", + "url": { + "$rpc": "null" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-6", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "fa93ca01f266": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Unknown method", + "ok": false + } + }, + "fb4429083480": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "", + "ok": false + } } }, "recording": { @@ -4557,7 +4611,7 @@ { "id": "pr-read-surface.prelude:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -4571,7 +4625,7 @@ { "id": "pr-read-surface.prelude:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -4589,7 +4643,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -4605,9 +4659,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -4617,7 +4671,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -4635,10 +4689,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -4648,7 +4702,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -4670,11 +4724,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -4684,7 +4738,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "10b0a575e1e7" @@ -4702,10 +4756,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "f165c11a5545" }, - "state": "fcf8b5cebefc", + "state": "00d08fd022db", "effects": [] } }, @@ -4715,7 +4769,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "10b0a575e1e7", @@ -4737,11 +4791,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "f165c11a5545", "assignable": "a93bcc7122e8" }, - "state": "63e65f991877", + "state": "c7af53c3d4af", "effects": ["0c83b4de61f4"] } }, @@ -4751,7 +4805,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "67bb6e1df8fd" @@ -4769,10 +4823,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303" }, - "state": "3a47c8c6d401", + "state": "6fc3bb143b71", "effects": [] } }, @@ -4782,7 +4836,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "67bb6e1df8fd", @@ -4804,11 +4858,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303", "assignable": "a93bcc7122e8" }, - "state": "565f48f8c86b", + "state": "801e211ed260", "effects": ["0c83b4de61f4"] } }, @@ -4818,7 +4872,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "fa89bef09972" @@ -4836,10 +4890,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303" }, - "state": "3a47c8c6d401", + "state": "6fc3bb143b71", "effects": [] } }, @@ -4849,7 +4903,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "fa89bef09972", @@ -4871,11 +4925,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303", "assignable": "a93bcc7122e8" }, - "state": "565f48f8c86b", + "state": "801e211ed260", "effects": ["0c83b4de61f4"] } }, @@ -4885,7 +4939,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "9091748d97f3" @@ -4903,10 +4957,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303" }, - "state": "3a47c8c6d401", + "state": "6fc3bb143b71", "effects": [] } }, @@ -4916,7 +4970,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "9091748d97f3", @@ -4938,11 +4992,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303", "assignable": "a93bcc7122e8" }, - "state": "565f48f8c86b", + "state": "801e211ed260", "effects": ["0c83b4de61f4"] } }, @@ -4952,7 +5006,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "c31215e7aa43" @@ -4970,10 +5024,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303" }, - "state": "3a47c8c6d401", + "state": "6fc3bb143b71", "effects": [] } }, @@ -4983,7 +5037,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "c31215e7aa43", @@ -5005,11 +5059,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "8a5cb8b66303", "assignable": "a93bcc7122e8" }, - "state": "565f48f8c86b", + "state": "801e211ed260", "effects": ["0c83b4de61f4"] } }, @@ -5019,7 +5073,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "1e9fd5847fa9" @@ -5037,10 +5091,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1b2778bf67a2" }, - "state": "3217f8cc59b8", + "state": "d19d917ec590", "effects": [] } }, @@ -5050,7 +5104,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "1e9fd5847fa9", @@ -5072,11 +5126,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1b2778bf67a2", "assignable": "a93bcc7122e8" }, - "state": "a11acec7976f", + "state": "85179fc56474", "effects": ["0c83b4de61f4"] } }, @@ -5086,7 +5140,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "30db3899c409" @@ -5104,10 +5158,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "d205bc3bdc6b" }, - "state": "65a009e38a55", + "state": "7eaab6cbec3f", "effects": [] } }, @@ -5117,7 +5171,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "30db3899c409", @@ -5139,11 +5193,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "d205bc3bdc6b", "assignable": "a93bcc7122e8" }, - "state": "9e11f1e3b335", + "state": "fa6b45dd1f0d", "effects": ["0c83b4de61f4"] } }, @@ -5153,7 +5207,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "64f833b5c1da" @@ -5171,10 +5225,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "fa93ca01f266" }, - "state": "5e1cecd0fe93", + "state": "efe5aa48a53d", "effects": [] } }, @@ -5184,7 +5238,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "64f833b5c1da", @@ -5206,11 +5260,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "fa93ca01f266", "assignable": "a93bcc7122e8" }, - "state": "51a3190eab29", + "state": "d00f88b54137", "effects": ["0c83b4de61f4"] } }, @@ -5220,7 +5274,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "70b3fc7e42df" @@ -5238,10 +5292,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "a197c20578aa" }, - "state": "7965aa5814a6", + "state": "f135a908a5dd", "effects": [] } }, @@ -5251,7 +5305,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "70b3fc7e42df", @@ -5273,11 +5327,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "a197c20578aa", "assignable": "a93bcc7122e8" }, - "state": "e11af9dd6e58", + "state": "b86cc24216e6", "effects": ["0c83b4de61f4"] } }, @@ -5287,7 +5341,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "151ae215f001" @@ -5305,10 +5359,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "fb4429083480" }, - "state": "20f08dfb4ba5", + "state": "2503434de337", "effects": [] } }, @@ -5318,7 +5372,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "151ae215f001", @@ -5340,11 +5394,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "fb4429083480", "assignable": "a93bcc7122e8" }, - "state": "021aee0e0e89", + "state": "0e96c789f931", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json index ba070ee70c7..40c771efe49 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prchecks-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0644012ff2a3": { "status": "fulfilled", "startedAt": 0, @@ -540,17 +714,7 @@ } } }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -589,6 +753,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1329,14 +1496,20 @@ } } }, - "3fb2c86ce340": { - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1346,158 +1519,6 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "40bf5b2f687f": { @@ -3238,7 +3259,58 @@ } } }, - "8ad23d6b64f4": { + "9a87ba2ee54f": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -3277,6 +3349,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3440,47 +3515,6 @@ } } }, - "9a87ba2ee54f": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, "9e3c3581d43a": { "checks": { "error": "transport failure", @@ -3639,7 +3673,16 @@ } } }, - "a0d70c59fdd1": { + "a197c20578aa": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "transport failure", + "ok": false + } + }, + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -3666,7 +3709,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -3692,15 +3735,6 @@ } } }, - "a197c20578aa": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "transport failure", - "ok": false - } - }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -5016,28 +5050,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -5268,7 +5280,7 @@ { "id": "pr-read-surface.prelude:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5282,7 +5294,7 @@ { "id": "pr-read-surface.prelude:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5300,7 +5312,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -5316,9 +5328,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -5328,7 +5340,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -5346,10 +5358,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -5359,7 +5371,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -5381,11 +5393,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -5395,7 +5407,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "f689187e3d49" ], @@ -5423,7 +5435,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "f689187e3d49", "e97a125cdb88" @@ -5454,7 +5466,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "f689187e3d49", "e97a125cdb88", @@ -5490,7 +5502,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "42539e6b3b48" ], @@ -5518,7 +5530,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "42539e6b3b48", "e97a125cdb88" @@ -5549,7 +5561,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "42539e6b3b48", "e97a125cdb88", @@ -5585,7 +5597,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "25b3c7a91f3e" ], @@ -5613,7 +5625,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "25b3c7a91f3e", "e97a125cdb88" @@ -5644,7 +5656,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "25b3c7a91f3e", "e97a125cdb88", @@ -5680,7 +5692,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "b0c33981e3c2" ], @@ -5708,7 +5720,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "b0c33981e3c2", "e97a125cdb88" @@ -5739,7 +5751,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "b0c33981e3c2", "e97a125cdb88", @@ -5775,7 +5787,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "60c8dc5664ec" ], @@ -5803,7 +5815,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "60c8dc5664ec", "e97a125cdb88" @@ -5834,7 +5846,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "60c8dc5664ec", "e97a125cdb88", @@ -5870,7 +5882,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "40bf5b2f687f" ], @@ -5898,7 +5910,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "40bf5b2f687f", "e97a125cdb88" @@ -5929,7 +5941,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "40bf5b2f687f", "e97a125cdb88", @@ -5965,7 +5977,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "a7931768c93d" ], @@ -5993,7 +6005,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "a7931768c93d", "e97a125cdb88" @@ -6024,7 +6036,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "a7931768c93d", "e97a125cdb88", @@ -6060,7 +6072,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "5f2ed2e370af" ], @@ -6088,7 +6100,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "5f2ed2e370af", "e97a125cdb88" @@ -6119,7 +6131,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "5f2ed2e370af", "e97a125cdb88", @@ -6155,7 +6167,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "667e9ccbc173" ], @@ -6183,7 +6195,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "667e9ccbc173", "e97a125cdb88" @@ -6214,7 +6226,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "667e9ccbc173", "e97a125cdb88", @@ -6250,7 +6262,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "72d7a13c5968" ], @@ -6278,7 +6290,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "72d7a13c5968", "e97a125cdb88" @@ -6309,7 +6321,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "72d7a13c5968", "e97a125cdb88", diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json index 54af8400b8e..cfb9feb06b2 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.prforbranch-1.json @@ -4,38 +4,7 @@ "family": "github.pr-read", "namedDeltas": [], "values": { - "03591af838bb": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, + "026ad16c841b": { "checks": { "ok": true, "result": [ @@ -43,6 +12,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -85,8 +57,53 @@ } }, "pr-for-branch": { - "error": "Request failed: github.prForBranch", - "ok": false + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } }, "repo-slug": { "ok": true, @@ -197,79 +214,17 @@ } } }, - "07f6efa35ef7": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" + "0a79e2402273": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "transport failure", - "isRpcDeliveryUnknown": true - } - } - }, - "0a9f2ff19df4": { - "name": "github.workItemDetails#1", - "ordinal": 8, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" - }, - "0bd591f1a6ca": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - } - }, - "0c83b4de61f4": { - "name": "reply-salvage", - "ordinal": 17, - "value": { - "droppedCount": 1, - "droppedPaths": ["0.avatarUrl"], - "method": "github.listAssignableUsers", - "operation": "github.pr-assignable-users", - "variant": "pr-assignable-users" - } - }, - "1554c8f6753b": { - "name": "github.prForBranch#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "167007efc7d6": { + ] + }, "check-details": { "ok": true, "result": { @@ -308,6 +263,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -350,7 +308,7 @@ } }, "pr-for-branch": { - "error": "outer refused", + "error": "Unknown method", "ok": false }, "repo-slug": { @@ -426,6 +384,80 @@ } } }, + "0a9f2ff19df4": { + "name": "github.workItemDetails#1", + "ordinal": 8, + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemDetails\",\"params\":{\"repo\":\"id:repo-9\",\"number\":12,\"type\":\"pr\"}}" + }, + "0bd591f1a6ca": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "The host sent a reply this app could not read (github.prForBranch)", + "ok": false + } + }, + "0c83b4de61f4": { + "name": "reply-salvage", + "ordinal": 17, + "value": { + "droppedCount": 1, + "droppedPaths": ["0.avatarUrl"], + "method": "github.listAssignableUsers", + "operation": "github.pr-assignable-users", + "variant": "pr-assignable-users" + } + }, + "0dcd6f74fa8a": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "1554c8f6753b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" + }, "191e3c96ad53": { "name": "github.repoSlug#1", "ordinal": 1, @@ -462,163 +494,6 @@ } } }, - "1ad3d03f16a9": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "transport failure", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "1b2778bf67a2": { "status": "fulfilled", "startedAt": 0, @@ -664,148 +539,57 @@ } } }, - "1f386a2c5c34": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "Unknown method", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "1f5765918736": { "name": "github.repoSlug#1", "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" + "22884bfd9780": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" } - ] - }, + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -844,6 +628,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1007,174 +794,7 @@ } } }, - "2a34a5ac9649": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "Request failed: github.prForBranch", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "2a6662574a0e": { + "274c8bad1092": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -1201,501 +821,7 @@ { "name": "options", "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "$rpc": "null" - } - } - } - }, - "329370e5132c": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "Unknown method", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "393138360489": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "transport failure", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "3a367f37a97d": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "3da8f3edeeab": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -1705,597 +831,15 @@ "settledAt": 0, "value": { "error": { - "code": "refused", - "message": "outer refused" + "code": "method_not_found", + "message": "Unknown method" }, "id": "frame-3", "ok": false } } }, - "3fb2c86ce340": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "41113a109089": { - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "44136fa355b3": {}, - "471a75cee137": { - "name": "github.workItemDetails#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "body": "body", - "headSha": "head-sha-1", - "item": { - "assignees": [], - "id": "PR_1", - "labels": [], - "number": 12, - "state": "open", - "title": "Recorded", - "type": "pr" - } - } - } - } - }, - "4b930a4fc710": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "4bf8f27dd319": { - "name": "hostedReview.forBranch#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "state": "open", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - } - } - }, - "4f5bd8355c84": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "outer refused", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "4faed8e622fb": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "Request failed: github.prForBranch", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "52504eafec78": { - "name": "github.prChecks#1", - "ordinal": 10, - "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "53bcb749e0ed": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "59655a04d5bc": { + "2b4ba6de9ddc": { "check-details": { "ok": true, "result": { @@ -2334,6 +878,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2452,6 +999,990 @@ } } }, + "2f435daf7ec2": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "The host sent a reply this app could not read (github.prForBranch)", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "37c2478df186": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "3986ee112e07": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "The host sent a reply this app could not read (github.prForBranch)", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "3cb72c4dfc7f": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "transport failure", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + } + }, + "41113a109089": { + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "44136fa355b3": {}, + "471a75cee137": { + "name": "github.workItemDetails#1", + "ordinal": 7, + "args": [ + { + "name": "method", + "value": "github.workItemDetails" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-9", + "type": "pr" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "body": "body", + "headSha": "head-sha-1", + "item": { + "assignees": [], + "id": "PR_1", + "labels": [], + "number": 12, + "state": "open", + "title": "Recorded", + "type": "pr" + } + } + } + } + }, + "4b930a4fc710": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "The host sent a reply this app could not read (github.prForBranch)", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "4bf3e4596db9": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-3", + "ok": false + } + } + }, + "4bf8f27dd319": { + "name": "hostedReview.forBranch#1", + "ordinal": 3, + "args": [ + { + "name": "method", + "value": "hostedReview.forBranch" + }, + { + "name": "params", + "value": { + "active": true, + "branch": "feature", + "linkedGitHubPR": 12, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "state": "open", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + } + } + }, + "4f5bd8355c84": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "outer refused", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "4f90c80d5158": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true + } + } + }, + "52504eafec78": { + "name": "github.prChecks#1", + "ordinal": 10, + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" + }, + "53bcb749e0ed": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, "5b33c8cfd938": { "name": "status.get#1", "ordinal": 13, @@ -2601,54 +2132,17 @@ } } }, - "60861b23a0d2": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" + "6192e688c538": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "error": { - "message": "inner refused" - }, - "ok": false - } - } - } - }, - "64b52dff85df": { + ] + }, "check-details": { "ok": true, "result": { @@ -2687,6 +2181,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2729,7 +2226,7 @@ } }, "pr-for-branch": { - "error": "The host sent a reply this app could not read (github.prForBranch)", + "error": "Request failed: github.prForBranch", "ok": false }, "repo-slug": { @@ -2810,7 +2307,7 @@ "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, - "6f1781ae58f0": { + "6ba3bf23dc13": { "checks": { "ok": true, "result": [ @@ -2818,6 +2315,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2938,17 +2438,7 @@ } } }, - "735876cc1648": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "70bc4578eb31": { "check-details": { "ok": true, "result": { @@ -2987,6 +2477,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3029,10 +2522,8 @@ } }, "pr-for-branch": { - "ok": true, - "result": { - "$rpc": "null" - } + "error": "Unknown method", + "ok": false }, "repo-slug": { "ok": true, @@ -3216,129 +2707,45 @@ } } }, - "7d1fec23a67c": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { + "7bd0ad6ec6d3": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { "$rpc": "null" }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "transport failure", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { + "fallbackPRNumber": { "$rpc": "null" }, - "autoMergeEnabled": { - "$rpc": "undefined" + "linkedPRNumber": { + "$rpc": "null" }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" + "repo": "id:repo-9" } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true } } }, @@ -3496,7 +2903,18 @@ } } }, - "862ad34df282": { + "8a5cb8b66303": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, + "905263d5109a": { "checks": { "ok": true, "result": [ @@ -3504,6 +2922,138 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "Unknown method", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "9063e985a3f4": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3622,18 +3172,136 @@ } } }, - "8a5cb8b66303": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { + "93a46e23bbd7": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { "ok": true, "result": { - "$rpc": "null" + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "transport failure", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } } } }, - "8ad23d6b64f4": { + "966cea1307a5": { "check-details": { "ok": true, "result": { @@ -3672,6 +3340,390 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "outer refused", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "96b2db901e7e": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "transport failure", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "9a87ba2ee54f": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3835,7 +3887,16 @@ } } }, - "8d20eb51a86b": { + "a197c20578aa": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "transport failure", + "ok": false + } + }, + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -3862,93 +3923,7 @@ { "name": "options", "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "" - }, - "id": "frame-3", - "ok": false - } - } - }, - "9a87ba2ee54f": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "a0d70c59fdd1": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -3974,15 +3949,6 @@ } } }, - "a197c20578aa": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "transport failure", - "ok": false - } - }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -4137,6 +4103,168 @@ } } }, + "a488dcc5e90d": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "a53bed5e8a95": { "hosted-review": { "ok": true, @@ -4261,7 +4389,7 @@ ] } }, - "ae254a8cdcbd": { + "aba5512e9e06": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -4288,7 +4416,49 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "acd5579ba683": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" } } ], @@ -4300,7 +4470,9 @@ "id": "frame-3", "ok": true, "result": { - "error": "inner refused", + "error": { + "message": "inner refused" + }, "ok": false } } @@ -4353,48 +4525,48 @@ } } }, - "b0c99550be86": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" + "b0cbf2f2f263": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" } } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true - } - } - }, - "b28e36532e88": { + }, "checks": { "ok": true, "result": [ @@ -4402,6 +4574,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4444,7 +4619,7 @@ } }, "pr-for-branch": { - "error": "", + "error": "outer refused", "ok": false }, "repo-slug": { @@ -4520,50 +4695,6 @@ } } }, - "b3b80babbede": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "error": "refused" - } - } - } - }, "bc5149895b9a": { "hosted-review": { "ok": true, @@ -4609,6 +4740,51 @@ } } }, + "bc9d61499a2c": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-3", + "ok": false + } + } + }, "c1d27fb4c728": { "hosted-review": { "ok": true, @@ -4777,48 +4953,173 @@ } } }, - "cf5ffc1e4401": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" + "d001e669ed0c": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" } } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" }, - "id": "frame-3", - "ok": false + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } } } }, @@ -4945,6 +5246,326 @@ } } }, + "d43135b1b10a": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "Request failed: github.prForBranch", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "d875b1fa706d": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "The host sent a reply this app could not read (github.prForBranch)", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "d89e7b8ce2a0": { "status": "fulfilled", "startedAt": 0, @@ -4958,6 +5579,307 @@ } } }, + "ddaea4d5a855": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "ddb164005c32": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "error": "Request failed: github.prForBranch", + "ok": false + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "df34e36b0fb7": { "name": "github.listAssignableUsers#1", "ordinal": 16, @@ -5077,195 +5999,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "e4413f4c6e5d": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -5309,708 +6042,6 @@ } } }, - "eff163849506": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": true - } - } - }, - "f0d6e7d31c00": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "The host sent a reply this app could not read (github.prForBranch)", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "f18b75f64df6": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "Unknown method", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "f272dc21bbd6": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "error": "outer refused", - "ok": false - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "f341c7d71209": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "f67affdd1a85": { "hosted-review": { "ok": true, @@ -6109,6 +6140,50 @@ } } }, + "f7f28da8d490": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, "f822e274c987": { "hosted-review": { "ok": true, @@ -6321,7 +6396,7 @@ { "id": "pr-read-surface.normal:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6335,7 +6410,7 @@ { "id": "pr-read-surface.normal:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6353,7 +6428,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -6369,9 +6444,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -6381,7 +6456,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -6399,10 +6474,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -6412,7 +6487,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -6434,18 +6509,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.result-absent:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "b0c99550be86"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "4f90c80d5158"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6459,7 +6534,7 @@ { "id": "pr-read-surface.result-absent:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "b0c99550be86", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "4f90c80d5158", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6477,7 +6552,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b0c99550be86", + "4f90c80d5158", "471a75cee137", "fa4bf991415d" ], @@ -6493,9 +6568,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3a367f37a97d", + "state": "3986ee112e07", "effects": [] } }, @@ -6505,7 +6580,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b0c99550be86", + "4f90c80d5158", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -6523,10 +6598,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "64b52dff85df", + "state": "d875b1fa706d", "effects": [] } }, @@ -6536,7 +6611,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b0c99550be86", + "4f90c80d5158", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -6558,18 +6633,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f0d6e7d31c00", + "state": "2f435daf7ec2", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.result-null:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "2a6662574a0e"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "f7f28da8d490"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6583,7 +6658,7 @@ { "id": "pr-read-surface.result-null:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "2a6662574a0e", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "f7f28da8d490", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6601,7 +6676,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "2a6662574a0e", + "f7f28da8d490", "471a75cee137", "fa4bf991415d" ], @@ -6617,9 +6692,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "8a5cb8b66303", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "6f1781ae58f0", + "state": "6ba3bf23dc13", "effects": [] } }, @@ -6629,7 +6704,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "2a6662574a0e", + "f7f28da8d490", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -6647,10 +6722,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "8a5cb8b66303", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "f341c7d71209", + "state": "a488dcc5e90d", "effects": [] } }, @@ -6660,7 +6735,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "2a6662574a0e", + "f7f28da8d490", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -6682,18 +6757,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "8a5cb8b66303", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "735876cc1648", + "state": "ddaea4d5a855", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-ok-missing:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "b3b80babbede"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "0dcd6f74fa8a"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6707,7 +6782,7 @@ { "id": "pr-read-surface.inner-ok-missing:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "b3b80babbede", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "0dcd6f74fa8a", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6725,7 +6800,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b3b80babbede", + "0dcd6f74fa8a", "471a75cee137", "fa4bf991415d" ], @@ -6741,9 +6816,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3a367f37a97d", + "state": "3986ee112e07", "effects": [] } }, @@ -6753,7 +6828,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b3b80babbede", + "0dcd6f74fa8a", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -6771,10 +6846,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "64b52dff85df", + "state": "d875b1fa706d", "effects": [] } }, @@ -6784,7 +6859,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "b3b80babbede", + "0dcd6f74fa8a", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -6806,18 +6881,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f0d6e7d31c00", + "state": "2f435daf7ec2", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-false-string-error:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "ae254a8cdcbd"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "22884bfd9780"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6831,7 +6906,7 @@ { "id": "pr-read-surface.inner-false-string-error:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "ae254a8cdcbd", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "22884bfd9780", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6849,7 +6924,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "ae254a8cdcbd", + "22884bfd9780", "471a75cee137", "fa4bf991415d" ], @@ -6865,9 +6940,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3a367f37a97d", + "state": "3986ee112e07", "effects": [] } }, @@ -6877,7 +6952,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "ae254a8cdcbd", + "22884bfd9780", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -6895,10 +6970,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "64b52dff85df", + "state": "d875b1fa706d", "effects": [] } }, @@ -6908,7 +6983,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "ae254a8cdcbd", + "22884bfd9780", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -6930,18 +7005,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f0d6e7d31c00", + "state": "2f435daf7ec2", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-false-object-error:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "60861b23a0d2"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "acd5579ba683"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6955,7 +7030,7 @@ { "id": "pr-read-surface.inner-false-object-error:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "60861b23a0d2", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "acd5579ba683", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6973,7 +7048,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "60861b23a0d2", + "acd5579ba683", "471a75cee137", "fa4bf991415d" ], @@ -6989,9 +7064,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3a367f37a97d", + "state": "3986ee112e07", "effects": [] } }, @@ -7001,7 +7076,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "60861b23a0d2", + "acd5579ba683", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7019,10 +7094,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "64b52dff85df", + "state": "d875b1fa706d", "effects": [] } }, @@ -7032,7 +7107,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "60861b23a0d2", + "acd5579ba683", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7054,18 +7129,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "0bd591f1a6ca", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f0d6e7d31c00", + "state": "2f435daf7ec2", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.outer-refused:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "3da8f3edeeab"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "4bf3e4596db9"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7079,7 +7154,7 @@ { "id": "pr-read-surface.outer-refused:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "3da8f3edeeab", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "4bf3e4596db9", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7097,7 +7172,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "3da8f3edeeab", + "4bf3e4596db9", "471a75cee137", "fa4bf991415d" ], @@ -7113,9 +7188,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "1b2778bf67a2", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "862ad34df282", + "state": "9063e985a3f4", "effects": [] } }, @@ -7125,7 +7200,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "3da8f3edeeab", + "4bf3e4596db9", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7143,10 +7218,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "1b2778bf67a2", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "167007efc7d6", + "state": "966cea1307a5", "effects": [] } }, @@ -7156,7 +7231,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "3da8f3edeeab", + "4bf3e4596db9", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7178,18 +7253,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "1b2778bf67a2", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f272dc21bbd6", + "state": "b0cbf2f2f263", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.outer-refused-no-message:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "8d20eb51a86b"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "bc9d61499a2c"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7203,7 +7278,7 @@ { "id": "pr-read-surface.outer-refused-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "8d20eb51a86b", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "bc9d61499a2c", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7221,7 +7296,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "8d20eb51a86b", + "bc9d61499a2c", "471a75cee137", "fa4bf991415d" ], @@ -7237,9 +7312,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "c58d6674f960", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "4faed8e622fb", + "state": "ddb164005c32", "effects": [] } }, @@ -7249,7 +7324,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "8d20eb51a86b", + "bc9d61499a2c", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7267,10 +7342,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "c58d6674f960", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "03591af838bb", + "state": "d43135b1b10a", "effects": [] } }, @@ -7280,7 +7355,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "8d20eb51a86b", + "bc9d61499a2c", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7302,18 +7377,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "c58d6674f960", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "2a34a5ac9649", + "state": "6192e688c538", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.method-not-found:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "cf5ffc1e4401"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "274c8bad1092"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7327,7 +7402,7 @@ { "id": "pr-read-surface.method-not-found:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "cf5ffc1e4401", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "274c8bad1092", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7345,7 +7420,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "cf5ffc1e4401", + "274c8bad1092", "471a75cee137", "fa4bf991415d" ], @@ -7361,9 +7436,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fa93ca01f266", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "1f386a2c5c34", + "state": "905263d5109a", "effects": [] } }, @@ -7373,7 +7448,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "cf5ffc1e4401", + "274c8bad1092", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7391,10 +7466,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fa93ca01f266", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "329370e5132c", + "state": "70bc4578eb31", "effects": [] } }, @@ -7404,7 +7479,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "cf5ffc1e4401", + "274c8bad1092", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7426,18 +7501,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fa93ca01f266", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f18b75f64df6", + "state": "0a79e2402273", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.transport-rejection:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "07f6efa35ef7"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "aba5512e9e06"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7451,7 +7526,7 @@ { "id": "pr-read-surface.transport-rejection:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "07f6efa35ef7", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "aba5512e9e06", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7469,7 +7544,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "07f6efa35ef7", + "aba5512e9e06", "471a75cee137", "fa4bf991415d" ], @@ -7485,9 +7560,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "a197c20578aa", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "7d1fec23a67c", + "state": "93a46e23bbd7", "effects": [] } }, @@ -7497,7 +7572,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "07f6efa35ef7", + "aba5512e9e06", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7515,10 +7590,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "a197c20578aa", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "1ad3d03f16a9", + "state": "3cb72c4dfc7f", "effects": [] } }, @@ -7528,7 +7603,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "07f6efa35ef7", + "aba5512e9e06", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7550,18 +7625,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "a197c20578aa", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "393138360489", + "state": "96b2db901e7e", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.transport-rejection-no-message:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "eff163849506"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "7bd0ad6ec6d3"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7575,7 +7650,7 @@ { "id": "pr-read-surface.transport-rejection-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "eff163849506", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "7bd0ad6ec6d3", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7593,7 +7668,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "eff163849506", + "7bd0ad6ec6d3", "471a75cee137", "fa4bf991415d" ], @@ -7609,9 +7684,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fb4429083480", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "b28e36532e88", + "state": "37c2478df186", "effects": [] } }, @@ -7621,7 +7696,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "eff163849506", + "7bd0ad6ec6d3", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7639,10 +7714,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fb4429083480", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "59655a04d5bc", + "state": "2b4ba6de9ddc", "effects": [] } }, @@ -7652,7 +7727,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "eff163849506", + "7bd0ad6ec6d3", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7674,11 +7749,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "fb4429083480", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "e4413f4c6e5d", + "state": "d001e669ed0c", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json index e3053d96c9e..740543545d5 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.reposlug-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0644012ff2a3": { "status": "fulfilled", "startedAt": 0, @@ -247,80 +421,7 @@ } } }, - "1554c8f6753b": { - "name": "github.prForBranch#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "16fe2b71c41b": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "outer refused", - "ok": false - } - }, - "174adc7d0caa": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, + "14fd2b10cdcf": { "checks": { "ok": true, "result": [ @@ -328,6 +429,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -419,7 +523,7 @@ } }, "repo-slug": { - "error": "", + "error": "outer refused", "ok": false }, "work-item": { @@ -487,6 +591,48 @@ } } }, + "1554c8f6753b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" + }, + "16fe2b71c41b": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "outer refused", + "ok": false + } + }, "191e3c96ad53": { "name": "github.repoSlug#1", "ordinal": 1, @@ -523,6 +669,219 @@ } } }, + "197a9b534f1f": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "1b2778bf67a2": { "status": "fulfilled", "startedAt": 0, @@ -610,173 +969,6 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "204948364197": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "20c66bbe9811": { "name": "github.repoSlug#1", "ordinal": 1, @@ -809,7 +1001,7 @@ } } }, - "23d22bbc401a": { + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -848,214 +1040,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "Unknown method", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { + "observedHeadSha": { "$rpc": "undefined" }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", "status": "completed", "url": { "$rpc": "null" @@ -1219,173 +1206,6 @@ } } }, - "276d5131bc52": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "outer refused", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "27fa58cfe693": { "hosted-review": { "ok": true, @@ -1423,372 +1243,7 @@ "ok": false } }, - "2a1fd9e6b238": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "outer refused", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "2cd77734efc2": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "transport failure", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "30c58cd89bf8": { + "2985c2fda955": { "assignable": { "ok": true, "result": [ @@ -1837,6 +1292,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1996,85 +1454,7 @@ } } }, - "36ba0b46660b": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "transport failure", - "ok": false - } - }, - "3962347a0ae6": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, + "33b3f0d18595": { "checks": { "ok": true, "result": [ @@ -2082,6 +1462,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2243,6 +1626,213 @@ } } }, + "33dabcf383f9": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "36ba0b46660b": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "transport failure", + "ok": false + } + }, "3a74f722594b": { "hosted-review": { "ok": true, @@ -2364,6 +1954,31 @@ } } }, + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + } + }, "3d86addf0990": { "hosted-review": { "ok": true, @@ -2516,204 +2131,6 @@ } } }, - "3d99fbfb3881": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "The host sent a reply this app could not read (github.repoSlug)", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "3e64f1a9aa05": { "hosted-review": { "ok": true, @@ -2950,177 +2367,6 @@ "ok": false } }, - "3fb2c86ce340": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "41113a109089": { "repo-slug": { "ok": true, @@ -3613,6 +2859,207 @@ } } }, + "5a68e561539b": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "Unknown method", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "5b33c8cfd938": { "name": "status.get#1", "ordinal": 13, @@ -3741,388 +3188,11 @@ } } }, - "67539493fdbd": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "outer refused", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "6a3f611aad80": { "name": "github.prCheckDetails#1", "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, - "6b967359f8cc": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "6eb91c0a7e3b": { "name": "github.repoSlug#1", "ordinal": 1, @@ -4338,6 +3408,217 @@ } } }, + "75a716616b2b": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "The host sent a reply this app could not read (github.repoSlug)", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "79d267a3733f": { "hosted-review": { "ok": true, @@ -4424,174 +3705,7 @@ "ok": false } }, - "7a36a45b0a8e": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "The host sent a reply this app could not read (github.repoSlug)", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "7cecc7a9fc00": { + "7b8bf0b1e044": { "check-details": { "ok": true, "result": { @@ -4630,6 +3744,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4721,10 +3838,8 @@ } }, "repo-slug": { - "ok": true, - "result": { - "$rpc": "null" - } + "error": "Request failed: github.repoSlug", + "ok": false }, "work-item": { "ok": true, @@ -4799,17 +3914,7 @@ } } }, - "85da8d7aa5ef": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "85c7259921a4": { "check-details": { "ok": true, "result": { @@ -4848,6 +3953,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4939,7 +4047,218 @@ } }, "repo-slug": { - "error": "The host sent a reply this app could not read (github.repoSlug)", + "error": "transport failure", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "85e69e379ccd": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "outer refused", "ok": false }, "work-item": { @@ -5018,7 +4337,7 @@ } } }, - "8ad23d6b64f4": { + "8b933be86dec": { "check-details": { "ok": true, "result": { @@ -5057,6 +4376,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -5148,12 +4470,8 @@ } }, "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } + "error": "", + "ok": false }, "work-item": { "ok": true, @@ -5220,7 +4538,17 @@ } } }, - "8c4ae37f5614": { + "8ecae59b7d9e": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -5259,6 +4587,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -5459,6 +4790,221 @@ } } }, + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "9fea1fd5a406": { "name": "github.repoSlug#1", "ordinal": 1, @@ -5494,7 +5040,25 @@ } } }, - "a0d70c59fdd1": { + "a17efc7718c7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Request failed: github.repoSlug", + "ok": false + } + }, + "a197c20578aa": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "transport failure", + "ok": false + } + }, + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -5521,7 +5085,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -5547,24 +5111,6 @@ } } }, - "a17efc7718c7": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Request failed: github.repoSlug", - "ok": false - } - }, - "a197c20578aa": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "transport failure", - "ok": false - } - }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -5869,214 +5415,6 @@ } } }, - "a6753bfc8b68": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "Request failed: github.repoSlug", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "a93bcc7122e8": { "status": "fulfilled", "startedAt": 0, @@ -6092,214 +5430,6 @@ ] } }, - "aab4acdf1347": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "ac56a7194256": { "name": "github.repoSlug#1", "ordinal": 1, @@ -6482,93 +5612,7 @@ } } }, - "b652da32d9d9": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "The host sent a reply this app could not read (github.repoSlug)", - "ok": false - } - }, - "b7843471a9ee": { + "b05a9d2937cc": { "checks": { "ok": true, "result": [ @@ -6576,204 +5620,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "error": "Unknown method", - "ok": false - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { + "observedHeadSha": { "$rpc": "undefined" }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "c6302b254a51": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", "status": "completed", "url": { "$rpc": "null" @@ -6933,6 +5782,676 @@ } } }, + "b652da32d9d9": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "The host sent a reply this app could not read (github.repoSlug)", + "ok": false + } + }, + "c0e97e2982af": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "transport failure", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "c433d7efc10d": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "The host sent a reply this app could not read (github.repoSlug)", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "cab39e9d7852": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "$rpc": "null" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "cdbefce64e00": { "name": "hostedReview.forBranch#1", "ordinal": 4, @@ -7285,7 +6804,18 @@ "ordinal": 16, "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.listAssignableUsers\",\"params\":{\"repo\":\"id:repo-9\",\"ownerRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" }, - "df5d529e9397": { + "e10925fa98de": { + "name": "status.get#1", + "ordinal": 14, + "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "e190f0419795": { + "repo-slug": { + "error": "outer refused", + "ok": false + } + }, + "e1b4bc875e26": { "checks": { "ok": true, "result": [ @@ -7293,6 +6823,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -7452,39 +6985,6 @@ } } }, - "e10925fa98de": { - "name": "status.get#1", - "ordinal": 14, - "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" - }, - "e190f0419795": { - "repo-slug": { - "error": "outer refused", - "ok": false - } - }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -7528,17 +7028,7 @@ } } }, - "eab9fb47c119": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "f09d9baa637b": { "check-details": { "ok": true, "result": { @@ -7577,6 +7067,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -7668,7 +7161,7 @@ } }, "repo-slug": { - "error": "transport failure", + "error": "outer refused", "ok": false }, "work-item": { @@ -7826,6 +7319,217 @@ } } }, + "f90b60ae45d4": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "fa4bf991415d": { "name": "github.prChecks#1", "ordinal": 9, @@ -7885,6 +7589,377 @@ "ok": false } }, + "fb88f02a5152": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "Unknown method", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "fd1aea7f387f": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "error": "The host sent a reply this app could not read (github.repoSlug)", + "ok": false + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "fe8e5dec707a": { "name": "github.repoSlug#1", "ordinal": 1, @@ -7961,7 +8036,7 @@ { "id": "pr-read-surface.normal:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7975,7 +8050,7 @@ { "id": "pr-read-surface.normal:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7993,7 +8068,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8009,9 +8084,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -8021,7 +8096,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8039,10 +8114,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -8052,7 +8127,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8074,11 +8149,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -8110,7 +8185,7 @@ { "id": "pr-read-surface.result-absent:pr-for-branch", "observation": { - "sender": ["6eb91c0a7e3b", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["6eb91c0a7e3b", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d425ff733972", @@ -8124,7 +8199,7 @@ { "id": "pr-read-surface.result-absent:work-item", "observation": { - "sender": ["6eb91c0a7e3b", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["6eb91c0a7e3b", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d425ff733972", @@ -8142,7 +8217,7 @@ "sender": [ "6eb91c0a7e3b", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8158,9 +8233,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "7a36a45b0a8e", + "state": "c433d7efc10d", "effects": [] } }, @@ -8170,7 +8245,7 @@ "sender": [ "6eb91c0a7e3b", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8188,10 +8263,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "3d99fbfb3881", + "state": "fd1aea7f387f", "effects": [] } }, @@ -8201,7 +8276,7 @@ "sender": [ "6eb91c0a7e3b", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8223,11 +8298,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "85da8d7aa5ef", + "state": "75a716616b2b", "effects": ["0c83b4de61f4"] } }, @@ -8259,7 +8334,7 @@ { "id": "pr-read-surface.result-null:pr-for-branch", "observation": { - "sender": ["fe8e5dec707a", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["fe8e5dec707a", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "8a5cb8b66303", @@ -8273,7 +8348,7 @@ { "id": "pr-read-surface.result-null:work-item", "observation": { - "sender": ["fe8e5dec707a", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["fe8e5dec707a", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "8a5cb8b66303", @@ -8291,7 +8366,7 @@ "sender": [ "fe8e5dec707a", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8307,9 +8382,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "6b967359f8cc", + "state": "33b3f0d18595", "effects": [] } }, @@ -8319,7 +8394,7 @@ "sender": [ "fe8e5dec707a", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8337,10 +8412,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "7cecc7a9fc00", + "state": "cab39e9d7852", "effects": [] } }, @@ -8350,7 +8425,7 @@ "sender": [ "fe8e5dec707a", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8372,11 +8447,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "3962347a0ae6", + "state": "197a9b534f1f", "effects": ["0c83b4de61f4"] } }, @@ -8408,7 +8483,7 @@ { "id": "pr-read-surface.inner-ok-missing:pr-for-branch", "observation": { - "sender": ["6fb9e56c5714", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["6fb9e56c5714", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d425ff733972", @@ -8422,7 +8497,7 @@ { "id": "pr-read-surface.inner-ok-missing:work-item", "observation": { - "sender": ["6fb9e56c5714", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["6fb9e56c5714", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d425ff733972", @@ -8440,7 +8515,7 @@ "sender": [ "6fb9e56c5714", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8456,9 +8531,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "7a36a45b0a8e", + "state": "c433d7efc10d", "effects": [] } }, @@ -8468,7 +8543,7 @@ "sender": [ "6fb9e56c5714", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8486,10 +8561,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "3d99fbfb3881", + "state": "fd1aea7f387f", "effects": [] } }, @@ -8499,7 +8574,7 @@ "sender": [ "6fb9e56c5714", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8521,11 +8596,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "85da8d7aa5ef", + "state": "75a716616b2b", "effects": ["0c83b4de61f4"] } }, @@ -8557,7 +8632,7 @@ { "id": "pr-read-surface.inner-false-string-error:pr-for-branch", "observation": { - "sender": ["9fea1fd5a406", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["9fea1fd5a406", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d425ff733972", @@ -8571,7 +8646,7 @@ { "id": "pr-read-surface.inner-false-string-error:work-item", "observation": { - "sender": ["9fea1fd5a406", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["9fea1fd5a406", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d425ff733972", @@ -8589,7 +8664,7 @@ "sender": [ "9fea1fd5a406", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8605,9 +8680,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "7a36a45b0a8e", + "state": "c433d7efc10d", "effects": [] } }, @@ -8617,7 +8692,7 @@ "sender": [ "9fea1fd5a406", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8635,10 +8710,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "3d99fbfb3881", + "state": "fd1aea7f387f", "effects": [] } }, @@ -8648,7 +8723,7 @@ "sender": [ "9fea1fd5a406", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8670,11 +8745,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "85da8d7aa5ef", + "state": "75a716616b2b", "effects": ["0c83b4de61f4"] } }, @@ -8706,7 +8781,7 @@ { "id": "pr-read-surface.inner-false-object-error:pr-for-branch", "observation": { - "sender": ["4f7bf71c8592", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["4f7bf71c8592", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d425ff733972", @@ -8720,7 +8795,7 @@ { "id": "pr-read-surface.inner-false-object-error:work-item", "observation": { - "sender": ["4f7bf71c8592", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["4f7bf71c8592", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d425ff733972", @@ -8738,7 +8813,7 @@ "sender": [ "4f7bf71c8592", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8754,9 +8829,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "7a36a45b0a8e", + "state": "c433d7efc10d", "effects": [] } }, @@ -8766,7 +8841,7 @@ "sender": [ "4f7bf71c8592", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8784,10 +8859,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "3d99fbfb3881", + "state": "fd1aea7f387f", "effects": [] } }, @@ -8797,7 +8872,7 @@ "sender": [ "4f7bf71c8592", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8819,11 +8894,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "85da8d7aa5ef", + "state": "75a716616b2b", "effects": ["0c83b4de61f4"] } }, @@ -8855,7 +8930,7 @@ { "id": "pr-read-surface.outer-refused:pr-for-branch", "observation": { - "sender": ["14b2ed631d3f", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["14b2ed631d3f", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "1b2778bf67a2", @@ -8869,7 +8944,7 @@ { "id": "pr-read-surface.outer-refused:work-item", "observation": { - "sender": ["14b2ed631d3f", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["14b2ed631d3f", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "1b2778bf67a2", @@ -8887,7 +8962,7 @@ "sender": [ "14b2ed631d3f", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8903,9 +8978,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "276d5131bc52", + "state": "14fd2b10cdcf", "effects": [] } }, @@ -8915,7 +8990,7 @@ "sender": [ "14b2ed631d3f", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8933,10 +9008,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "2a1fd9e6b238", + "state": "f09d9baa637b", "effects": [] } }, @@ -8946,7 +9021,7 @@ "sender": [ "14b2ed631d3f", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8968,11 +9043,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "67539493fdbd", + "state": "85e69e379ccd", "effects": ["0c83b4de61f4"] } }, @@ -9004,7 +9079,7 @@ { "id": "pr-read-surface.outer-refused-no-message:pr-for-branch", "observation": { - "sender": ["3bf6392eb84c", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["3bf6392eb84c", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "a17efc7718c7", @@ -9018,7 +9093,7 @@ { "id": "pr-read-surface.outer-refused-no-message:work-item", "observation": { - "sender": ["3bf6392eb84c", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["3bf6392eb84c", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "a17efc7718c7", @@ -9036,7 +9111,7 @@ "sender": [ "3bf6392eb84c", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -9052,9 +9127,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "df5d529e9397", + "state": "e1b4bc875e26", "effects": [] } }, @@ -9064,7 +9139,7 @@ "sender": [ "3bf6392eb84c", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -9082,10 +9157,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8c4ae37f5614", + "state": "7b8bf0b1e044", "effects": [] } }, @@ -9095,7 +9170,7 @@ "sender": [ "3bf6392eb84c", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -9117,11 +9192,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "a6753bfc8b68", + "state": "8ecae59b7d9e", "effects": ["0c83b4de61f4"] } }, @@ -9153,7 +9228,7 @@ { "id": "pr-read-surface.method-not-found:pr-for-branch", "observation": { - "sender": ["d867cebbfeef", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["d867cebbfeef", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "fa93ca01f266", @@ -9167,7 +9242,7 @@ { "id": "pr-read-surface.method-not-found:work-item", "observation": { - "sender": ["d867cebbfeef", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["d867cebbfeef", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "fa93ca01f266", @@ -9185,7 +9260,7 @@ "sender": [ "d867cebbfeef", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -9201,9 +9276,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "b7843471a9ee", + "state": "fb88f02a5152", "effects": [] } }, @@ -9213,7 +9288,7 @@ "sender": [ "d867cebbfeef", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -9231,10 +9306,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "23d22bbc401a", + "state": "5a68e561539b", "effects": [] } }, @@ -9244,7 +9319,7 @@ "sender": [ "d867cebbfeef", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -9266,11 +9341,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "30c58cd89bf8", + "state": "2985c2fda955", "effects": ["0c83b4de61f4"] } }, @@ -9302,7 +9377,7 @@ { "id": "pr-read-surface.transport-rejection:pr-for-branch", "observation": { - "sender": ["20c66bbe9811", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["20c66bbe9811", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "a197c20578aa", @@ -9316,7 +9391,7 @@ { "id": "pr-read-surface.transport-rejection:work-item", "observation": { - "sender": ["20c66bbe9811", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["20c66bbe9811", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "a197c20578aa", @@ -9334,7 +9409,7 @@ "sender": [ "20c66bbe9811", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -9350,9 +9425,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "2cd77734efc2", + "state": "b05a9d2937cc", "effects": [] } }, @@ -9362,7 +9437,7 @@ "sender": [ "20c66bbe9811", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -9380,10 +9455,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "c6302b254a51", + "state": "85c7259921a4", "effects": [] } }, @@ -9393,7 +9468,7 @@ "sender": [ "20c66bbe9811", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -9415,11 +9490,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "eab9fb47c119", + "state": "c0e97e2982af", "effects": ["0c83b4de61f4"] } }, @@ -9451,7 +9526,7 @@ { "id": "pr-read-surface.transport-rejection-no-message:pr-for-branch", "observation": { - "sender": ["ac56a7194256", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["ac56a7194256", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "fb4429083480", @@ -9465,7 +9540,7 @@ { "id": "pr-read-surface.transport-rejection-no-message:work-item", "observation": { - "sender": ["ac56a7194256", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["ac56a7194256", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "fb4429083480", @@ -9483,7 +9558,7 @@ "sender": [ "ac56a7194256", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -9499,9 +9574,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "204948364197", + "state": "33dabcf383f9", "effects": [] } }, @@ -9511,7 +9586,7 @@ "sender": [ "ac56a7194256", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -9529,10 +9604,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "174adc7d0caa", + "state": "8b933be86dec", "effects": [] } }, @@ -9542,7 +9617,7 @@ "sender": [ "ac56a7194256", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -9564,11 +9639,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "aab4acdf1347", + "state": "f90b60ae45d4", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json index d85d6a0790e..717b1d1303d 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-github.workitemdetails-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0644012ff2a3": { "status": "fulfilled", "startedAt": 0, @@ -40,6 +214,163 @@ } } }, + "08751e553e5a": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, "09191350a1f2": { "status": "fulfilled", "startedAt": 0, @@ -49,6 +380,120 @@ "ok": false } }, + "0a288d333483": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "outer refused", + "ok": false + } + }, "0a9f2ff19df4": { "name": "github.workItemDetails#1", "ordinal": 8, @@ -250,117 +695,6 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "20381c5e425e": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "", - "ok": false - } - }, "21b31d76c1b1": { "name": "github.workItemDetails#1", "ordinal": 7, @@ -400,7 +734,7 @@ } } }, - "21c1ca3f82b5": { + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -439,411 +773,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { + "observedHeadSha": { "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "The host sent a reply this app could not read (github.workItemDetails)", - "ok": false - } - }, - "25b68df1a244": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Unknown method", - "ok": false - } - }, - "2719f19ef7f3": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Unknown method", - "ok": false - } - }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", "status": "completed", "url": { "$rpc": "null" @@ -1007,45 +939,20 @@ } } }, - "28b2e5f9c029": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1055,142 +962,9 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Request failed: github.workItemDetails", - "ok": false } }, - "28d2190a68dc": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, + "4063587eb861": { "checks": { "ok": true, "result": [ @@ -1198,6 +972,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1297,292 +1074,10 @@ } }, "work-item": { - "error": "The host sent a reply this app could not read (github.workItemDetails)", + "error": "Unknown method", "ok": false } }, - "31e7f225fa1f": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "The host sent a reply this app could not read (github.workItemDetails)", - "ok": false - } - }, - "3fb2c86ce340": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "41113a109089": { "repo-slug": { "ok": true, @@ -1640,148 +1135,6 @@ } } }, - "48099587df0e": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "transport failure", - "ok": false - } - }, "4bf8f27dd319": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -1867,158 +1220,6 @@ "ordinal": 10, "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" }, - "534a93bb198d": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "transport failure", - "ok": false - } - }, "53bcb749e0ed": { "hosted-review": { "ok": true, @@ -2383,7 +1584,38 @@ "ok": false } }, - "66ad9aea717c": { + "679e4f616eaa": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, "checks": { "ok": true, "result": [ @@ -2391,6 +1623,164 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "", + "ok": false + } + }, + "6a04c2045df5": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2499,6 +1889,161 @@ "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, + "70b1b0cf0862": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "", + "ok": false + } + }, "717e0f081bf4": { "hosted-review": { "ok": true, @@ -2629,18 +2174,17 @@ } } }, - "8a5cb8b66303": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { + "7cbeafcf08d8": { + "assignable": { "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "8ad23d6b64f4": { + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -2679,6 +2223,868 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "transport failure", + "ok": false + } + }, + "86ca0c1303b0": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Request failed: github.workItemDetails", + "ok": false + } + }, + "8a5cb8b66303": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, + "8af2b2b64a02": { + "name": "github.workItemDetails#1", + "ordinal": 7, + "args": [ + { + "name": "method", + "value": "github.workItemDetails" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-9", + "type": "pr" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "8d0d66ceab62": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Unknown method", + "ok": false + } + }, + "8fc1bc86223d": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Request failed: github.workItemDetails", + "ok": false + } + }, + "99818b8cc0ec": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, + "9a87ba2ee54f": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "9af24649d9c9": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2842,606 +3248,6 @@ } } }, - "8af2b2b64a02": { - "name": "github.workItemDetails#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-4", - "ok": true, - "result": { - "$rpc": "null" - } - } - } - }, - "8d03899c0a8b": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "8fc1bc86223d": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Request failed: github.workItemDetails", - "ok": false - } - }, - "98a920c55449": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Request failed: github.workItemDetails", - "ok": false - } - }, - "9a87ba2ee54f": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "a0006f18b063": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "outer refused", - "ok": false - } - }, - "a0d70c59fdd1": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, "a1109a980be3": { "name": "github.workItemDetails#1", "ordinal": 7, @@ -3518,6 +3324,59 @@ "ok": false } }, + "a20f0d944ba5": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, "a3e588709bde": { "hosted-review": { "ok": true, @@ -3672,7 +3531,56 @@ } } }, - "a8bbfbae6a93": { + "a93bcc7122e8": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + } + }, + "adaeeac11b0f": { + "name": "github.workItemDetails#1", + "ordinal": 7, + "args": [ + { + "name": "method", + "value": "github.workItemDetails" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-9", + "type": "pr" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "b5cc27571807": { "check-details": { "ok": true, "result": { @@ -3711,6 +3619,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3810,59 +3721,8 @@ } }, "work-item": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "a93bcc7122e8": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - } - }, - "adaeeac11b0f": { - "name": "github.workItemDetails#1", - "ordinal": 7, - "args": [ - { - "name": "method", - "value": "github.workItemDetails" - }, - { - "name": "params", - "value": { - "number": 12, - "repo": "id:repo-9", - "type": "pr" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": true - } + "error": "The host sent a reply this app could not read (github.workItemDetails)", + "ok": false } }, "b9613928b178": { @@ -3902,7 +3762,7 @@ } } }, - "bc37b8c7d91c": { + "bd5fb366dd94": { "check-details": { "ok": true, "result": { @@ -3941,6 +3801,248 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "transport failure", + "ok": false + } + }, + "bed53d1ce54c": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Unknown method", + "ok": false + } + }, + "bfc86b630a1a": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4044,7 +4146,27 @@ "ok": false } }, - "bed53d1ce54c": { + "c0b26dd3b966": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, "hosted-review": { "ok": true, "result": { @@ -4134,7 +4256,162 @@ } }, "work-item": { - "error": "Unknown method", + "error": "", + "ok": false + } + }, + "c173bc3b19af": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Request failed: github.workItemDetails", "ok": false } }, @@ -4266,148 +4543,6 @@ } } }, - "d6863364c638": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "", - "ok": false - } - }, "d89e7b8ce2a0": { "status": "fulfilled", "startedAt": 0, @@ -4559,188 +4694,12 @@ "ordinal": 16, "json": "{\"expectedRuntimeSource\":{\"sourceId\":\"recorded\",\"runtimeId\":\"recorded\"},\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"github.listAssignableUsers\",\"params\":{\"repo\":\"id:repo-9\",\"ownerRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" }, - "dfa0b2aca6d0": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, "e10925fa98de": { "name": "status.get#1", "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "e34c509402ec": { + "e35c5effcf2b": { "assignable": { "ok": true, "result": [ @@ -4789,6 +4748,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4888,11 +4850,168 @@ } }, "work-item": { - "error": "", + "error": "The host sent a reply this app could not read (github.workItemDetails)", "ok": false } }, - "e47a8e0dd5c0": { + "e97a125cdb88": { + "name": "github.prCheckDetails#1", + "ordinal": 11, + "args": [ + { + "name": "method", + "value": "github.prCheckDetails" + }, + { + "name": "params", + "value": { + "checkName": "build", + "checkRunId": 7, + "repo": "id:repo-9", + "url": { + "$rpc": "null" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-6", + "ok": true, + "result": { + "annotations": [], + "conclusion": "success", + "jobs": [], + "name": "build", + "status": "completed" + } + } + } + }, + "ed24dc6bcab9": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "The host sent a reply this app could not read (github.workItemDetails)", + "ok": false + } + }, + "f3bd25dcae18": { "assignable": { "ok": true, "result": [ @@ -4941,6 +5060,154 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "error": "Unknown method", + "ok": false + } + }, + "f64543693d7b": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -5044,29 +5311,37 @@ "ok": false } }, - "e97a125cdb88": { - "name": "github.prCheckDetails#1", - "ordinal": 11, + "f79c91454bac": { + "name": "github.listAssignableUsers#1", + "ordinal": 15, "args": [ { "name": "method", - "value": "github.prCheckDetails" + "value": "github.listAssignableUsers" }, { "name": "params", "value": { - "checkName": "build", - "checkRunId": 7, - "repo": "id:repo-9", - "url": { - "$rpc": "null" - } + "ownerRepo": { + "host": "github.enterprise.test", + "owner": "fork-owner", + "repo": "fork-repo" + }, + "repo": "id:repo-9" } }, { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]", + "envelope": { + "expectedRuntimeSource": { + "runtimeId": "recorded", + "sourceId": "recorded" + } + }, + "failWhenDisconnected": true, + "timeoutMs": 30000 } } ], @@ -5075,19 +5350,21 @@ "startedAt": 0, "settledAt": 0, "value": { - "id": "frame-6", + "id": "frame-8", "ok": true, - "result": { - "annotations": [], - "conclusion": "success", - "jobs": [], - "name": "build", - "status": "completed" - } + "result": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": "Octo Cat" + } + ] } } }, - "f0b3239f6368": { + "f91deee9103a": { "checks": { "ok": true, "result": [ @@ -5095,6 +5372,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -5198,211 +5478,6 @@ "ok": false } }, - "f79c91454bac": { - "name": "github.listAssignableUsers#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.listAssignableUsers" - }, - { - "name": "params", - "value": { - "ownerRepo": { - "host": "github.enterprise.test", - "owner": "fork-owner", - "repo": "fork-repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "envelope": { - "expectedRuntimeSource": { - "runtimeId": "recorded", - "sourceId": "recorded" - } - }, - "failWhenDisconnected": true, - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": "Octo Cat" - } - ] - } - } - }, - "f93da48b6ecd": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "error": "Unknown method", - "ok": false - } - }, "fa4bf991415d": { "name": "github.prChecks#1", "ordinal": 9, @@ -5504,7 +5579,7 @@ { "id": "pr-read-surface.prelude:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5518,7 +5593,7 @@ { "id": "pr-read-surface.normal:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5536,7 +5611,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -5552,9 +5627,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -5564,7 +5639,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -5582,10 +5657,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -5595,7 +5670,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -5617,18 +5692,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.result-absent:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "a1109a980be3"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "a1109a980be3"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5646,7 +5721,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a1109a980be3", "fa4bf991415d" ], @@ -5662,9 +5737,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "31e7f225fa1f", + "state": "ed24dc6bcab9", "effects": [] } }, @@ -5674,7 +5749,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a1109a980be3", "fa4bf991415d", "e97a125cdb88" @@ -5692,10 +5767,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "21c1ca3f82b5", + "state": "b5cc27571807", "effects": [] } }, @@ -5705,7 +5780,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a1109a980be3", "fa4bf991415d", "e97a125cdb88", @@ -5727,18 +5802,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "28d2190a68dc", + "state": "e35c5effcf2b", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.result-null:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "8af2b2b64a02"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "8af2b2b64a02"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5756,7 +5831,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "8af2b2b64a02", "fa4bf991415d" ], @@ -5772,9 +5847,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "8a5cb8b66303", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "8d03899c0a8b", + "state": "9af24649d9c9", "effects": [] } }, @@ -5784,7 +5859,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "8af2b2b64a02", "fa4bf991415d", "e97a125cdb88" @@ -5802,10 +5877,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "8a5cb8b66303", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "a8bbfbae6a93", + "state": "99818b8cc0ec", "effects": [] } }, @@ -5815,7 +5890,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "8af2b2b64a02", "fa4bf991415d", "e97a125cdb88", @@ -5837,18 +5912,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "8a5cb8b66303", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "dfa0b2aca6d0", + "state": "08751e553e5a", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-ok-missing:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "7a8041f2d057"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "7a8041f2d057"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5866,7 +5941,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "7a8041f2d057", "fa4bf991415d" ], @@ -5882,9 +5957,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "31e7f225fa1f", + "state": "ed24dc6bcab9", "effects": [] } }, @@ -5894,7 +5969,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "7a8041f2d057", "fa4bf991415d", "e97a125cdb88" @@ -5912,10 +5987,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "21c1ca3f82b5", + "state": "b5cc27571807", "effects": [] } }, @@ -5925,7 +6000,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "7a8041f2d057", "fa4bf991415d", "e97a125cdb88", @@ -5947,18 +6022,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "28d2190a68dc", + "state": "e35c5effcf2b", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-false-string-error:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "b9613928b178"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "b9613928b178"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -5976,7 +6051,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "b9613928b178", "fa4bf991415d" ], @@ -5992,9 +6067,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "31e7f225fa1f", + "state": "ed24dc6bcab9", "effects": [] } }, @@ -6004,7 +6079,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "b9613928b178", "fa4bf991415d", "e97a125cdb88" @@ -6022,10 +6097,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "21c1ca3f82b5", + "state": "b5cc27571807", "effects": [] } }, @@ -6035,7 +6110,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "b9613928b178", "fa4bf991415d", "e97a125cdb88", @@ -6057,18 +6132,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "28d2190a68dc", + "state": "e35c5effcf2b", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.inner-false-object-error:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "21b31d76c1b1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "21b31d76c1b1"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6086,7 +6161,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "21b31d76c1b1", "fa4bf991415d" ], @@ -6102,9 +6177,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "31e7f225fa1f", + "state": "ed24dc6bcab9", "effects": [] } }, @@ -6114,7 +6189,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "21b31d76c1b1", "fa4bf991415d", "e97a125cdb88" @@ -6132,10 +6207,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "21c1ca3f82b5", + "state": "b5cc27571807", "effects": [] } }, @@ -6145,7 +6220,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "21b31d76c1b1", "fa4bf991415d", "e97a125cdb88", @@ -6167,18 +6242,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "548caab5ab14", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "28d2190a68dc", + "state": "e35c5effcf2b", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.outer-refused:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "5c87776f4015"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "5c87776f4015"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6196,7 +6271,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "5c87776f4015", "fa4bf991415d" ], @@ -6212,9 +6287,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "1b2778bf67a2", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "66ad9aea717c", + "state": "0a288d333483", "effects": [] } }, @@ -6224,7 +6299,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "5c87776f4015", "fa4bf991415d", "e97a125cdb88" @@ -6242,10 +6317,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "1b2778bf67a2", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "bc37b8c7d91c", + "state": "bfc86b630a1a", "effects": [] } }, @@ -6255,7 +6330,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "5c87776f4015", "fa4bf991415d", "e97a125cdb88", @@ -6277,18 +6352,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "1b2778bf67a2", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "a0006f18b063", + "state": "6a04c2045df5", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.outer-refused-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "4fe6b339ccfe"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "4fe6b339ccfe"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6306,7 +6381,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "4fe6b339ccfe", "fa4bf991415d" ], @@ -6322,9 +6397,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "09191350a1f2", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "98a920c55449", + "state": "86ca0c1303b0", "effects": [] } }, @@ -6334,7 +6409,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "4fe6b339ccfe", "fa4bf991415d", "e97a125cdb88" @@ -6352,10 +6427,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "09191350a1f2", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "28b2e5f9c029", + "state": "f64543693d7b", "effects": [] } }, @@ -6365,7 +6440,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "4fe6b339ccfe", "fa4bf991415d", "e97a125cdb88", @@ -6387,18 +6462,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "09191350a1f2", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "e47a8e0dd5c0", + "state": "c173bc3b19af", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.method-not-found:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "dedec8fbd6c4"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "dedec8fbd6c4"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6416,7 +6491,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "dedec8fbd6c4", "fa4bf991415d" ], @@ -6432,9 +6507,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fa93ca01f266", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "2719f19ef7f3", + "state": "4063587eb861", "effects": [] } }, @@ -6444,7 +6519,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "dedec8fbd6c4", "fa4bf991415d", "e97a125cdb88" @@ -6462,10 +6537,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fa93ca01f266", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "25b68df1a244", + "state": "8d0d66ceab62", "effects": [] } }, @@ -6475,7 +6550,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "dedec8fbd6c4", "fa4bf991415d", "e97a125cdb88", @@ -6497,18 +6572,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fa93ca01f266", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "f93da48b6ecd", + "state": "f3bd25dcae18", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.transport-rejection:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "a18d899ef98a"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "a18d899ef98a"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6526,7 +6601,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a18d899ef98a", "fa4bf991415d" ], @@ -6542,9 +6617,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "a197c20578aa", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "f0b3239f6368", + "state": "f91deee9103a", "effects": [] } }, @@ -6554,7 +6629,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a18d899ef98a", "fa4bf991415d", "e97a125cdb88" @@ -6572,10 +6647,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "a197c20578aa", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "48099587df0e", + "state": "bd5fb366dd94", "effects": [] } }, @@ -6585,7 +6660,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "a18d899ef98a", "fa4bf991415d", "e97a125cdb88", @@ -6607,18 +6682,18 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "a197c20578aa", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "534a93bb198d", + "state": "7cbeafcf08d8", "effects": ["0c83b4de61f4"] } }, { "id": "pr-read-surface.transport-rejection-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "adaeeac11b0f"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "adaeeac11b0f"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6636,7 +6711,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "adaeeac11b0f", "fa4bf991415d" ], @@ -6652,9 +6727,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fb4429083480", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "20381c5e425e", + "state": "c0b26dd3b966", "effects": [] } }, @@ -6664,7 +6739,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "adaeeac11b0f", "fa4bf991415d", "e97a125cdb88" @@ -6682,10 +6757,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fb4429083480", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "d6863364c638", + "state": "679e4f616eaa", "effects": [] } }, @@ -6695,7 +6770,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "adaeeac11b0f", "fa4bf991415d", "e97a125cdb88", @@ -6717,11 +6792,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "fb4429083480", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "e34c509402ec", + "state": "70b1b0cf0862", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json index 72017b03e29..1ac3e637914 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-hostedreview.forbranch-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0370db1ceeeb": { "status": "fulfilled", "startedAt": 0, @@ -359,7 +533,22 @@ } } }, - "153c866fe444": { + "1554c8f6753b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" + }, + "16d46d0e8d5b": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -398,6 +587,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -409,8 +601,10 @@ ] }, "hosted-review": { - "error": "", - "ok": false + "ok": true, + "result": { + "$rpc": "null" + } }, "pr-for-branch": { "ok": true, @@ -534,11 +728,6 @@ } } }, - "1554c8f6753b": { - "name": "github.prForBranch#1", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, "191e3c96ad53": { "name": "github.repoSlug#1", "ordinal": 1, @@ -655,150 +844,6 @@ } } }, - "1d82e74c19c6": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "Unknown method", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "1f4e113b496e": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -838,7 +883,7 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "26a7a3dc186a": { + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -877,191 +922,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "Request failed: hostedReview.forBranch", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { + "observedHeadSha": { "$rpc": "undefined" }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", "status": "completed", "url": { "$rpc": "null" @@ -1225,191 +1088,6 @@ } } }, - "2f34f753cf66": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "transport failure", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "34311b7ca6cf": { "hosted-review": { "error": "transport failure", @@ -1424,55 +1102,20 @@ } } }, - "3460148ee02c": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1482,131 +1125,6 @@ } } ] - }, - "hosted-review": { - "error": "", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "3f11cc1c8847": { @@ -1736,177 +1254,6 @@ } } }, - "3fb2c86ce340": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "3fe0f4e7006a": { "hosted-review": { "error": "Unknown method", @@ -1946,191 +1293,6 @@ } }, "44136fa355b3": {}, - "445e33a9fe31": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "outer refused", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "471a75cee137": { "name": "github.workItemDetails#1", "ordinal": 7, @@ -2177,83 +1339,7 @@ } } }, - "4af284f5f7e6": { - "name": "hostedReview.forBranch#1", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "transport failure", - "isRpcDeliveryUnknown": true - } - } - }, - "4b1a8377419b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, + "49fddcb78cd5": { "checks": { "ok": true, "result": [ @@ -2261,6 +1347,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2272,7 +1361,7 @@ ] }, "hosted-review": { - "error": "Request failed: hostedReview.forBranch", + "error": "Unknown method", "ok": false }, "pr-for-branch": { @@ -2397,6 +1486,41 @@ } } }, + "4af284f5f7e6": { + "name": "hostedReview.forBranch#1", + "ordinal": 3, + "args": [ + { + "name": "method", + "value": "hostedReview.forBranch" + }, + { + "name": "params", + "value": { + "active": true, + "branch": "feature", + "linkedGitHubPR": 12, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, "4bf8f27dd319": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -2702,152 +1826,6 @@ } } }, - "5c70dbb76210": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "5e0f680b6594": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -2886,161 +1864,7 @@ } } }, - "5ee0f899685a": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "The host sent a reply this app could not read (hostedReview.forBranch)", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "5f5cfe4076ba": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "6316593ebcff": { "check-details": { "ok": true, "result": { @@ -3079,6 +1903,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3217,371 +2044,199 @@ } } }, - "5fbac0963c98": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "Unknown method", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "63327631d132": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "The host sent a reply this app could not read (hostedReview.forBranch)", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "6a3f611aad80": { "name": "github.prCheckDetails#1", "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, + "6a592a846144": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "transport failure", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "6de4d3f42f5d": { "hosted-review": { "error": "The host sent a reply this app could not read (hostedReview.forBranch)", @@ -3645,7 +2300,27 @@ } } }, - "760ff8a69dff": { + "71778140a57b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, "hosted-review": { "ok": true, "result": { @@ -3708,72 +2383,114 @@ "owner": "orca", "repo": "orca" } - } - }, - "77b1fb9a141c": { - "hosted-review": { - "error": "Unknown method", - "ok": false }, - "pr-for-branch": { + "work-item": { "ok": true, "result": { - "autoMergeAllowed": { + "assignees": { "$rpc": "undefined" }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { + "baseSha": { "$rpc": "undefined" }, + "body": "body", + "checks": [], + "comments": [], "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" }, - "mergeQueueRequired": { + "participants": [], + "pullRequestId": { "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" + } } } }, - "77edee11e878": { + "7387b3d7ec72": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, "checks": { "ok": true, "result": [ @@ -3781,6 +2498,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3917,38 +2637,135 @@ } } }, - "7d897cc6a4ae": { - "check-details": { + "760ff8a69dff": { + "hosted-review": { "ok": true, "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } + "$rpc": "null" } }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "77b1fb9a141c": { + "hosted-review": { + "error": "Unknown method", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "7f5a22addac6": { "checks": { "ok": true, "result": [ @@ -3956,6 +2773,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -3967,7 +2787,7 @@ ] }, "hosted-review": { - "error": "Unknown method", + "error": "", "ok": false }, "pr-for-branch": { @@ -4155,6 +2975,300 @@ } } }, + "81aaeec7fc39": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "transport failure", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "82abd74752e0": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "outer refused", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "865868813a73": { "hosted-review": { "error": "outer refused", @@ -4169,7 +3283,7 @@ } } }, - "89af8cafbfcb": { + "873fa2986343": { "check-details": { "ok": true, "result": { @@ -4208,6 +3322,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4219,7 +3336,154 @@ ] }, "hosted-review": { - "error": "outer refused", + "error": "Request failed: hostedReview.forBranch", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "879d12675939": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "Request failed: hostedReview.forBranch", "ok": false }, "pr-for-branch": { @@ -4418,7 +3682,17 @@ } } }, - "8ad23d6b64f4": { + "96481d1fef0f": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -4457,6 +3731,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -4468,35 +3745,8 @@ ] }, "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } + "error": "outer refused", + "ok": false }, "pr-for-branch": { "ok": true, @@ -4661,56 +3911,218 @@ } } }, - "a0d70c59fdd1": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" } } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" } } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } } } }, @@ -4888,188 +4300,56 @@ "ok": false } }, - "a332dd4d6014": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { + "a20f0d944ba5": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { "$rpc": "null" }, - "workflowRunId": { - "$rpc": "undefined" + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" } } - ] - }, - "hosted-review": { - "error": "The host sent a reply this app could not read (hostedReview.forBranch)", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } } } }, @@ -5290,6 +4570,153 @@ } } }, + "a6d5613dca15": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "The host sent a reply this app could not read (hostedReview.forBranch)", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "a93bcc7122e8": { "status": "fulfilled", "startedAt": 0, @@ -5305,6 +4732,560 @@ ] } }, + "b58297cf7561": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "Unknown method", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "b9d094f5b520": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "The host sent a reply this app could not read (hostedReview.forBranch)", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "ba533cff9f9d": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "bdc35d641ccd": { "status": "fulfilled", "startedAt": 0, @@ -5314,6 +5295,372 @@ "ok": false } }, + "be2512011276": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "Request failed: hostedReview.forBranch", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "c0b6710db584": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "outer refused", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "c4c56019af4a": { "hosted-review": { "error": "", @@ -5735,183 +6082,6 @@ } } }, - "d8065a70b5a3": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "$rpc": "null" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "d89e7b8ce2a0": { "status": "fulfilled", "startedAt": 0, @@ -5962,6 +6132,184 @@ } } }, + "dd835c6a40da": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "error": "Unknown method", + "ok": false + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "df34e36b0fb7": { "name": "github.listAssignableUsers#1", "ordinal": 16, @@ -5972,316 +6320,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, - "e346a73d2243": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "outer refused", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "e3f0bbdd548e": { - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "error": "transport failure", - "ok": false - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "e6cb06568ca0": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -6363,7 +6401,7 @@ } } }, - "ec88c53b2201": { + "eed0d3dcb2fd": { "check-details": { "ok": true, "result": { @@ -6402,6 +6440,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -6667,119 +6708,38 @@ } } }, - "f79c91454bac": { - "name": "github.listAssignableUsers#1", - "ordinal": 15, - "args": [ - { - "name": "method", - "value": "github.listAssignableUsers" - }, - { - "name": "params", - "value": { - "ownerRepo": { - "host": "github.enterprise.test", - "owner": "fork-owner", - "repo": "fork-repo" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "beforeSend": "[local beforeSend]", - "envelope": { - "expectedRuntimeSource": { - "runtimeId": "recorded", - "sourceId": "recorded" - } - }, - "failWhenDisconnected": true, - "timeoutMs": 30000 + "f40f65f13b4a": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" } } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-8", - "ok": true, - "result": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": "Octo Cat" - } - ] - } - } - }, - "fa4bf991415d": { - "name": "github.prChecks#1", - "ordinal": 9, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha-1", - "prNumber": 12, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-5", - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed" - } - ] - } - } - }, - "fa93ca01f266": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "Unknown method", - "ok": false - } - }, - "fb4429083480": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": "", - "ok": false - } - }, - "fbefb30891ee": { + }, "checks": { "ok": true, "result": [ @@ -6787,6 +6747,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -6798,7 +6761,7 @@ ] }, "hosted-review": { - "error": "Request failed: hostedReview.forBranch", + "error": "The host sent a reply this app could not read (hostedReview.forBranch)", "ok": false }, "pr-for-branch": { @@ -6923,6 +6886,118 @@ } } }, + "f79c91454bac": { + "name": "github.listAssignableUsers#1", + "ordinal": 15, + "args": [ + { + "name": "method", + "value": "github.listAssignableUsers" + }, + { + "name": "params", + "value": { + "ownerRepo": { + "host": "github.enterprise.test", + "owner": "fork-owner", + "repo": "fork-repo" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "envelope": { + "expectedRuntimeSource": { + "runtimeId": "recorded", + "sourceId": "recorded" + } + }, + "failWhenDisconnected": true, + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-8", + "ok": true, + "result": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": "Octo Cat" + } + ] + } + } + }, + "fa4bf991415d": { + "name": "github.prChecks#1", + "ordinal": 9, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha-1", + "prNumber": 12, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "status": "completed" + } + ] + } + } + }, + "fa93ca01f266": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Unknown method", + "ok": false + } + }, + "fb4429083480": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "", + "ok": false + } + }, "fe9773365df3": { "hosted-review": { "ok": true, @@ -6981,7 +7056,7 @@ { "id": "pr-read-surface.normal:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -6995,7 +7070,7 @@ { "id": "pr-read-surface.normal:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7013,7 +7088,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7029,9 +7104,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -7041,7 +7116,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7059,10 +7134,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -7072,7 +7147,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7094,11 +7169,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -7118,7 +7193,7 @@ { "id": "pr-read-surface.result-absent:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "1f4e113b496e", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "1f4e113b496e", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7132,7 +7207,7 @@ { "id": "pr-read-surface.result-absent:work-item", "observation": { - "sender": ["191e3c96ad53", "1f4e113b496e", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "1f4e113b496e", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7150,7 +7225,7 @@ "sender": [ "191e3c96ad53", "1f4e113b496e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7166,9 +7241,9 @@ "hosted-review": "0370db1ceeeb", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "5ee0f899685a", + "state": "a6d5613dca15", "effects": [] } }, @@ -7178,7 +7253,7 @@ "sender": [ "191e3c96ad53", "1f4e113b496e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7196,10 +7271,10 @@ "hosted-review": "0370db1ceeeb", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "63327631d132", + "state": "f40f65f13b4a", "effects": [] } }, @@ -7209,7 +7284,7 @@ "sender": [ "191e3c96ad53", "1f4e113b496e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7231,11 +7306,11 @@ "hosted-review": "0370db1ceeeb", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "a332dd4d6014", + "state": "b9d094f5b520", "effects": ["0c83b4de61f4"] } }, @@ -7255,7 +7330,7 @@ { "id": "pr-read-surface.result-null:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "d055ed712776", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "d055ed712776", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7269,7 +7344,7 @@ { "id": "pr-read-surface.result-null:work-item", "observation": { - "sender": ["191e3c96ad53", "d055ed712776", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "d055ed712776", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7287,7 +7362,7 @@ "sender": [ "191e3c96ad53", "d055ed712776", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7303,9 +7378,9 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "5c70dbb76210", + "state": "71778140a57b", "effects": [] } }, @@ -7315,7 +7390,7 @@ "sender": [ "191e3c96ad53", "d055ed712776", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7333,10 +7408,10 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "d8065a70b5a3", + "state": "6316593ebcff", "effects": [] } }, @@ -7346,7 +7421,7 @@ "sender": [ "191e3c96ad53", "d055ed712776", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7368,11 +7443,11 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "5f5cfe4076ba", + "state": "16d46d0e8d5b", "effects": ["0c83b4de61f4"] } }, @@ -7392,7 +7467,7 @@ { "id": "pr-read-surface.inner-ok-missing:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "dd752ab6fc1a", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "dd752ab6fc1a", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7406,7 +7481,7 @@ { "id": "pr-read-surface.inner-ok-missing:work-item", "observation": { - "sender": ["191e3c96ad53", "dd752ab6fc1a", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "dd752ab6fc1a", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7424,7 +7499,7 @@ "sender": [ "191e3c96ad53", "dd752ab6fc1a", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7440,9 +7515,9 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "5c70dbb76210", + "state": "71778140a57b", "effects": [] } }, @@ -7452,7 +7527,7 @@ "sender": [ "191e3c96ad53", "dd752ab6fc1a", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7470,10 +7545,10 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "d8065a70b5a3", + "state": "6316593ebcff", "effects": [] } }, @@ -7483,7 +7558,7 @@ "sender": [ "191e3c96ad53", "dd752ab6fc1a", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7505,11 +7580,11 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "5f5cfe4076ba", + "state": "16d46d0e8d5b", "effects": ["0c83b4de61f4"] } }, @@ -7529,7 +7604,7 @@ { "id": "pr-read-surface.inner-false-string-error:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "a1092f110b89", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "a1092f110b89", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7543,7 +7618,7 @@ { "id": "pr-read-surface.inner-false-string-error:work-item", "observation": { - "sender": ["191e3c96ad53", "a1092f110b89", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "a1092f110b89", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7561,7 +7636,7 @@ "sender": [ "191e3c96ad53", "a1092f110b89", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7577,9 +7652,9 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "5c70dbb76210", + "state": "71778140a57b", "effects": [] } }, @@ -7589,7 +7664,7 @@ "sender": [ "191e3c96ad53", "a1092f110b89", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7607,10 +7682,10 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "d8065a70b5a3", + "state": "6316593ebcff", "effects": [] } }, @@ -7620,7 +7695,7 @@ "sender": [ "191e3c96ad53", "a1092f110b89", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7642,11 +7717,11 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "5f5cfe4076ba", + "state": "16d46d0e8d5b", "effects": ["0c83b4de61f4"] } }, @@ -7666,7 +7741,7 @@ { "id": "pr-read-surface.inner-false-object-error:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "0893e7ae395f", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "0893e7ae395f", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7680,7 +7755,7 @@ { "id": "pr-read-surface.inner-false-object-error:work-item", "observation": { - "sender": ["191e3c96ad53", "0893e7ae395f", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "0893e7ae395f", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7698,7 +7773,7 @@ "sender": [ "191e3c96ad53", "0893e7ae395f", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7714,9 +7789,9 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "5c70dbb76210", + "state": "71778140a57b", "effects": [] } }, @@ -7726,7 +7801,7 @@ "sender": [ "191e3c96ad53", "0893e7ae395f", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7744,10 +7819,10 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "d8065a70b5a3", + "state": "6316593ebcff", "effects": [] } }, @@ -7757,7 +7832,7 @@ "sender": [ "191e3c96ad53", "0893e7ae395f", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7779,11 +7854,11 @@ "hosted-review": "8a5cb8b66303", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "5f5cfe4076ba", + "state": "16d46d0e8d5b", "effects": ["0c83b4de61f4"] } }, @@ -7803,7 +7878,7 @@ { "id": "pr-read-surface.outer-refused:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "e6cb06568ca0", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "e6cb06568ca0", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7817,7 +7892,7 @@ { "id": "pr-read-surface.outer-refused:work-item", "observation": { - "sender": ["191e3c96ad53", "e6cb06568ca0", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "e6cb06568ca0", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7835,7 +7910,7 @@ "sender": [ "191e3c96ad53", "e6cb06568ca0", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7851,9 +7926,9 @@ "hosted-review": "1b2778bf67a2", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "e346a73d2243", + "state": "82abd74752e0", "effects": [] } }, @@ -7863,7 +7938,7 @@ "sender": [ "191e3c96ad53", "e6cb06568ca0", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -7881,10 +7956,10 @@ "hosted-review": "1b2778bf67a2", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "89af8cafbfcb", + "state": "c0b6710db584", "effects": [] } }, @@ -7894,7 +7969,7 @@ "sender": [ "191e3c96ad53", "e6cb06568ca0", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -7916,11 +7991,11 @@ "hosted-review": "1b2778bf67a2", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "445e33a9fe31", + "state": "96481d1fef0f", "effects": ["0c83b4de61f4"] } }, @@ -7940,7 +8015,7 @@ { "id": "pr-read-surface.outer-refused-no-message:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "5e0f680b6594", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "5e0f680b6594", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7954,7 +8029,7 @@ { "id": "pr-read-surface.outer-refused-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "5e0f680b6594", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "5e0f680b6594", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -7972,7 +8047,7 @@ "sender": [ "191e3c96ad53", "5e0f680b6594", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -7988,9 +8063,9 @@ "hosted-review": "bdc35d641ccd", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "fbefb30891ee", + "state": "879d12675939", "effects": [] } }, @@ -8000,7 +8075,7 @@ "sender": [ "191e3c96ad53", "5e0f680b6594", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8018,10 +8093,10 @@ "hosted-review": "bdc35d641ccd", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "26a7a3dc186a", + "state": "873fa2986343", "effects": [] } }, @@ -8031,7 +8106,7 @@ "sender": [ "191e3c96ad53", "5e0f680b6594", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8053,11 +8128,11 @@ "hosted-review": "bdc35d641ccd", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "4b1a8377419b", + "state": "be2512011276", "effects": ["0c83b4de61f4"] } }, @@ -8077,7 +8152,7 @@ { "id": "pr-read-surface.method-not-found:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "d593bb293e9e", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "d593bb293e9e", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8091,7 +8166,7 @@ { "id": "pr-read-surface.method-not-found:work-item", "observation": { - "sender": ["191e3c96ad53", "d593bb293e9e", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "d593bb293e9e", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8109,7 +8184,7 @@ "sender": [ "191e3c96ad53", "d593bb293e9e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8125,9 +8200,9 @@ "hosted-review": "fa93ca01f266", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "1d82e74c19c6", + "state": "49fddcb78cd5", "effects": [] } }, @@ -8137,7 +8212,7 @@ "sender": [ "191e3c96ad53", "d593bb293e9e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8155,10 +8230,10 @@ "hosted-review": "fa93ca01f266", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "7d897cc6a4ae", + "state": "dd835c6a40da", "effects": [] } }, @@ -8168,7 +8243,7 @@ "sender": [ "191e3c96ad53", "d593bb293e9e", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8190,11 +8265,11 @@ "hosted-review": "fa93ca01f266", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "5fbac0963c98", + "state": "b58297cf7561", "effects": ["0c83b4de61f4"] } }, @@ -8214,7 +8289,7 @@ { "id": "pr-read-surface.transport-rejection:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4af284f5f7e6", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4af284f5f7e6", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8228,7 +8303,7 @@ { "id": "pr-read-surface.transport-rejection:work-item", "observation": { - "sender": ["191e3c96ad53", "4af284f5f7e6", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4af284f5f7e6", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8246,7 +8321,7 @@ "sender": [ "191e3c96ad53", "4af284f5f7e6", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8262,9 +8337,9 @@ "hosted-review": "a197c20578aa", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "e3f0bbdd548e", + "state": "81aaeec7fc39", "effects": [] } }, @@ -8274,7 +8349,7 @@ "sender": [ "191e3c96ad53", "4af284f5f7e6", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8292,10 +8367,10 @@ "hosted-review": "a197c20578aa", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "ec88c53b2201", + "state": "eed0d3dcb2fd", "effects": [] } }, @@ -8305,7 +8380,7 @@ "sender": [ "191e3c96ad53", "4af284f5f7e6", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8327,11 +8402,11 @@ "hosted-review": "a197c20578aa", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "2f34f753cf66", + "state": "6a592a846144", "effects": ["0c83b4de61f4"] } }, @@ -8351,7 +8426,7 @@ { "id": "pr-read-surface.transport-rejection-no-message:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "1b3b93e82c1b", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "1b3b93e82c1b", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8365,7 +8440,7 @@ { "id": "pr-read-surface.transport-rejection-no-message:work-item", "observation": { - "sender": ["191e3c96ad53", "1b3b93e82c1b", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "1b3b93e82c1b", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -8383,7 +8458,7 @@ "sender": [ "191e3c96ad53", "1b3b93e82c1b", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -8399,9 +8474,9 @@ "hosted-review": "fb4429083480", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "77edee11e878", + "state": "7f5a22addac6", "effects": [] } }, @@ -8411,7 +8486,7 @@ "sender": [ "191e3c96ad53", "1b3b93e82c1b", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -8429,10 +8504,10 @@ "hosted-review": "fb4429083480", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "153c866fe444", + "state": "ba533cff9f9d", "effects": [] } }, @@ -8442,7 +8517,7 @@ "sender": [ "191e3c96ad53", "1b3b93e82c1b", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -8464,11 +8539,11 @@ "hosted-review": "fb4429083480", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "3460148ee02c", + "state": "7387b3d7ec72", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-github.pr-read-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-github.pr-read-status.get-1.json index cd7d5efd267..be94320d7a3 100644 --- a/mobile/rpc-foundation/goldens/matrix-github.pr-read-status.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-github.pr-read-status.get-1.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0389349c5d7a": { "name": "status.get#1", "ordinal": 13, @@ -165,6 +339,215 @@ "ordinal": 6, "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" }, + "18e26718de53": { + "assignable": { + "error": "The Orca server connection changed. Try again.", + "ok": false + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "191e3c96ad53": { "name": "github.repoSlug#1", "ordinal": 1, @@ -242,17 +625,7 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -291,6 +664,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -490,14 +866,20 @@ } } }, - "3fb2c86ce340": { - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -507,158 +889,6 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "41113a109089": { @@ -938,212 +1168,6 @@ } } }, - "74e5ba99c875": { - "assignable": { - "error": "The Orca server connection changed. Try again.", - "ok": false - }, - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "79c11f8aab27": { "status": "fulfilled", "startedAt": 0, @@ -1153,208 +1177,6 @@ "ok": false } }, - "8ad23d6b64f4": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, "8d2e2b427f16": { "name": "status.get#1", "ordinal": 13, @@ -1467,7 +1289,222 @@ } } }, - "a0d70c59fdd1": { + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -1494,7 +1531,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -1765,148 +1802,7 @@ } } }, - "cdbefce64e00": { - "name": "hostedReview.forBranch#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":12,\"active\":true}}" - }, - "d01444e13d4c": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - } - }, - "d036e2bdda12": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } - } - }, - "d89e7b8ce2a0": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "da481cf8d43b": { + "c19ceb5edc47": { "assignable": { "error": "Update Orca on the executing server to edit this item or load its repository options.", "ok": false @@ -1949,6 +1845,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -2112,6 +2011,147 @@ } } }, + "cdbefce64e00": { + "name": "hostedReview.forBranch#1", + "ordinal": 4, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":12,\"active\":true}}" + }, + "d01444e13d4c": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + } + }, + "d036e2bdda12": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, + "d89e7b8ce2a0": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, "dd6f35908983": { "name": "status.get#1", "ordinal": 13, @@ -2158,28 +2198,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -2368,7 +2386,7 @@ { "id": "pr-read-surface.prelude:pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -2382,7 +2400,7 @@ { "id": "pr-read-surface.prelude:work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -2400,7 +2418,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -2416,9 +2434,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -2428,7 +2446,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -2446,10 +2464,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -2459,7 +2477,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2481,11 +2499,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } }, @@ -2495,7 +2513,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2515,11 +2533,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2529,7 +2547,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2549,11 +2567,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2563,7 +2581,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2583,11 +2601,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2597,7 +2615,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2617,11 +2635,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2631,7 +2649,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2651,11 +2669,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2665,7 +2683,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2685,11 +2703,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2699,7 +2717,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2719,11 +2737,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2733,7 +2751,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2753,11 +2771,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "79c11f8aab27" }, - "state": "da481cf8d43b", + "state": "c19ceb5edc47", "effects": [] } }, @@ -2767,7 +2785,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2787,11 +2805,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "f0fcc3cacc56" }, - "state": "74e5ba99c875", + "state": "18e26718de53", "effects": [] } }, @@ -2801,7 +2819,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -2821,11 +2839,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "f0fcc3cacc56" }, - "state": "74e5ba99c875", + "state": "18e26718de53", "effects": [] } } diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json index 5096f5794ee..ece23539811 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prchecks-1.json @@ -141,57 +141,6 @@ "variant": "worktree-summary" } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, "28e291738e81": { "name": "github.prChecks#1", "ordinal": 8, @@ -321,40 +270,6 @@ } } }, - "4777f063108d": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, "4b26820600b0": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -703,6 +618,88 @@ "kind": "ready" } }, + "734ec9d15b54": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "data": { + "checks": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ], + "checksError": { + "$rpc": "null" + }, + "details": { + "$rpc": "null" + }, + "pr": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + }, + "pushTarget": { + "$rpc": "null" + } + }, + "kind": "ready" + } + }, "7a8dea3aade4": { "name": "github.prChecks#1", "ordinal": 8, @@ -1017,6 +1014,40 @@ }, "kind": "ready" }, + "a98f4468b85b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, "cc1661fa0fce": { "name": "github.prChecks#1", "ordinal": 8, @@ -1087,83 +1118,55 @@ } } }, - "cfed3ed2a0ae": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "data": { - "checks": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ], - "checksError": { - "$rpc": "null" - }, - "details": { - "$rpc": "null" - }, - "pr": { - "autoMergeAllowed": { - "$rpc": "undefined" + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" }, - "autoMergeEnabled": { - "$rpc": "undefined" + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - }, - "pushTarget": { - "$rpc": "null" + "repo": "id:repo-9" } }, - "kind": "ready" + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } } }, "d31e02e77233": { @@ -1354,13 +1357,16 @@ }, "kind": "ready" }, - "e7df27480ce9": { + "e93235fba8e6": { "data": { "checks": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -1535,7 +1541,7 @@ { "id": "pr-sidebar-load.prelude:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -1547,7 +1553,7 @@ { "id": "pr-sidebar-load.prelude:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1559,19 +1565,19 @@ { "id": "pr-sidebar-load.normal:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9a7a01989014"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.result-absent:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "28e291738e81"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "28e291738e81"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" @@ -1583,7 +1589,7 @@ { "id": "pr-sidebar-load.result-null:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "cc58675e9778"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "cc58675e9778"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" @@ -1595,7 +1601,7 @@ { "id": "pr-sidebar-load.inner-ok-missing:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "fd1ab55e8692"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "fd1ab55e8692"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" @@ -1607,7 +1613,7 @@ { "id": "pr-sidebar-load.inner-false-string-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "0af3c7549a78"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "0af3c7549a78"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" @@ -1619,7 +1625,7 @@ { "id": "pr-sidebar-load.inner-false-object-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "10d2bae8a88d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "10d2bae8a88d"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" @@ -1631,7 +1637,7 @@ { "id": "pr-sidebar-load.outer-refused:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "7b65a2a2b2bf"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "7b65a2a2b2bf"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "6186688b4e0a" @@ -1643,7 +1649,7 @@ { "id": "pr-sidebar-load.outer-refused-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "39a90edcdc1f"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "39a90edcdc1f"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "5ca71b99d858" @@ -1655,7 +1661,7 @@ { "id": "pr-sidebar-load.method-not-found:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9c9faf7a7d56"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9c9faf7a7d56"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "6bd6616981d2" @@ -1667,7 +1673,7 @@ { "id": "pr-sidebar-load.transport-rejection:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "cc1661fa0fce"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "cc1661fa0fce"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "f5d376337dc6" @@ -1679,7 +1685,7 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "7a8dea3aade4"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "7a8dea3aade4"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "d31e02e77233" diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json index e9c6d35a216..06b00aafcd8 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-github.prforbranch-1.json @@ -4,6 +4,49 @@ "family": "session.pr-sidebar", "namedDeltas": [], "values": { + "06d679e793ec": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-3", + "ok": false + } + } + }, "07639c4f1e7f": { "name": "hostedReview.forBranch#1", "ordinal": 1, @@ -53,7 +96,12 @@ "kind": "error", "message": "" }, - "0ccd26f1a7f3": { + "0e35af4e1fa3": { + "name": "github.prForBranch#1", + "ordinal": 7, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"currentHeadOid\":null}}" + }, + "102aa8380618": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -78,7 +126,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -89,18 +137,13 @@ "value": { "error": { "code": "refused", - "message": "outer refused" + "message": "" }, "id": "frame-3", "ok": false } } }, - "0e35af4e1fa3": { - "name": "github.prForBranch#1", - "ordinal": 7, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"currentHeadOid\":null}}" - }, "12ce08ba6f43": { "kind": "error", "message": "The host sent a reply this app could not read (github.prForBranch)" @@ -116,57 +159,6 @@ "variant": "worktree-summary" } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, "22e789693153": { "status": "fulfilled", "startedAt": 0, @@ -176,7 +168,7 @@ "message": "outer refused" } }, - "2a8c54df5625": { + "2b15a60bf4e7": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -201,58 +193,7 @@ { "name": "options", "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true - } - } - }, - "2ff9cdff091a": { - "kind": "none" - }, - "329238d30b57": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "kind": "error", - "message": "transport failure" - } - }, - "3af33057b748": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -270,38 +211,16 @@ } } }, - "4777f063108d": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 + "2ff9cdff091a": { + "kind": "none" + }, + "329238d30b57": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "kind": "error", + "message": "transport failure" } }, "4b26820600b0": { @@ -309,51 +228,6 @@ "ordinal": 3, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"hostedReview.forBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedGitHubPR\":null,\"active\":true}}" }, - "4c629c3c776a": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "error": { - "message": "inner refused" - }, - "ok": false - } - } - } - }, "4fae27394886": { "name": "github.prChecks#1", "ordinal": 8, @@ -382,16 +256,7 @@ "startedAt": 0 } }, - "5dbd52d6a1c7": { - "name": "worktree.show#1", - "ordinal": 4, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" - }, - "5fb5486dad6c": { - "kind": "error", - "message": "transport failure" - }, - "65b850ae7b12": { + "500af3253e90": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -416,7 +281,65 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "5dbd52d6a1c7": { + "name": "worktree.show#1", + "ordinal": 4, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" + }, + "5fb5486dad6c": { + "kind": "error", + "message": "transport failure" + }, + "65eb7565d931": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "kind": "error", + "message": "The host sent a reply this app could not read (github.prForBranch)" + } + }, + "6e21ce9435f1": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" } } ], @@ -428,18 +351,91 @@ "id": "frame-3", "ok": true, "result": { - "error": "refused" + "$rpc": "null" } } } }, - "65eb7565d931": { + "734ec9d15b54": { "status": "fulfilled", "startedAt": 0, "settledAt": 0, "value": { - "kind": "error", - "message": "The host sent a reply this app could not read (github.prForBranch)" + "data": { + "checks": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ], + "checksError": { + "$rpc": "null" + }, + "details": { + "$rpc": "null" + }, + "pr": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + }, + "pushTarget": { + "$rpc": "null" + } + }, + "kind": "ready" } }, "7cbf1de78fc1": { @@ -480,6 +476,91 @@ } } }, + "853078091399": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-3", + "ok": false + } + } + }, + "8a4954c4c50c": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, "9270aeb7d9c6": { "status": "pending", "startedAt": 0 @@ -559,7 +640,7 @@ "kind": "error", "message": "Unknown method" }, - "b2577fb9d362": { + "a98f4468b85b": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -584,25 +665,16 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-3", - "ok": false - } + "status": "pending", + "startedAt": 0 } }, - "ccb14b797eee": { + "b20a7526d309": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -627,175 +699,7 @@ { "name": "options", "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": true - } - } - }, - "cfed3ed2a0ae": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "data": { - "checks": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ], - "checksError": { - "$rpc": "null" - }, - "details": { - "$rpc": "null" - }, - "pr": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - }, - "pushTarget": { - "$rpc": "null" - } - }, - "kind": "ready" - } - }, - "dcec20ae0055": { - "name": "github.prChecks#1", - "ordinal": 9, - "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" - }, - "e169ebaf642b": "unloaded", - "e23ac4385bcd": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "" - }, - "id": "frame-3", - "ok": false - } - } - }, - "e6d66cd6a4a4": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -810,13 +714,118 @@ } } }, - "e7df27480ce9": { + "b7b54a332aa2": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, + "dcec20ae0055": { + "name": "github.prChecks#1", + "ordinal": 9, + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" + }, + "e169ebaf642b": "unloaded", + "e93235fba8e6": { "data": { "checks": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -897,7 +906,7 @@ "message": "Request failed: github.prForBranch" } }, - "f087a8f7b2e9": { + "eca2550193e8": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -922,7 +931,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -932,10 +941,7 @@ "settledAt": 0, "value": { "id": "frame-3", - "ok": true, - "result": { - "$rpc": "null" - } + "ok": true } } } @@ -946,7 +952,7 @@ { "id": "pr-sidebar-load.prelude:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -958,7 +964,7 @@ { "id": "pr-sidebar-load.normal:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -970,19 +976,19 @@ { "id": "pr-sidebar-load.normal:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9a7a01989014"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.result-absent:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "2a8c54df5625"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "eca2550193e8"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -994,7 +1000,7 @@ { "id": "pr-sidebar-load.result-absent:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "2a8c54df5625"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "eca2550193e8"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1006,7 +1012,7 @@ { "id": "pr-sidebar-load.result-null:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "f087a8f7b2e9"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "6e21ce9435f1"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "93824157d99f" @@ -1018,7 +1024,7 @@ { "id": "pr-sidebar-load.result-null:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "f087a8f7b2e9"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "6e21ce9435f1"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "93824157d99f" @@ -1030,7 +1036,7 @@ { "id": "pr-sidebar-load.inner-ok-missing:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "65b850ae7b12"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "8a4954c4c50c"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1042,7 +1048,7 @@ { "id": "pr-sidebar-load.inner-ok-missing:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "65b850ae7b12"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "8a4954c4c50c"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1054,7 +1060,7 @@ { "id": "pr-sidebar-load.inner-false-string-error:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "3af33057b748"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "2b15a60bf4e7"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1066,7 +1072,7 @@ { "id": "pr-sidebar-load.inner-false-string-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "3af33057b748"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "2b15a60bf4e7"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1078,7 +1084,7 @@ { "id": "pr-sidebar-load.inner-false-object-error:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4c629c3c776a"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b7b54a332aa2"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1090,7 +1096,7 @@ { "id": "pr-sidebar-load.inner-false-object-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4c629c3c776a"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b7b54a332aa2"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "65eb7565d931" @@ -1102,7 +1108,7 @@ { "id": "pr-sidebar-load.outer-refused:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "0ccd26f1a7f3"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "853078091399"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "22e789693153" @@ -1114,7 +1120,7 @@ { "id": "pr-sidebar-load.outer-refused:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "0ccd26f1a7f3"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "853078091399"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "22e789693153" @@ -1126,7 +1132,7 @@ { "id": "pr-sidebar-load.outer-refused-no-message:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "e23ac4385bcd"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "102aa8380618"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "eb566c3ec487" @@ -1138,7 +1144,7 @@ { "id": "pr-sidebar-load.outer-refused-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "e23ac4385bcd"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "102aa8380618"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "eb566c3ec487" @@ -1150,7 +1156,7 @@ { "id": "pr-sidebar-load.method-not-found:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b2577fb9d362"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "06d679e793ec"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9ef3d700c2ea" @@ -1162,7 +1168,7 @@ { "id": "pr-sidebar-load.method-not-found:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b2577fb9d362"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "06d679e793ec"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9ef3d700c2ea" @@ -1174,7 +1180,7 @@ { "id": "pr-sidebar-load.transport-rejection:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "e6d66cd6a4a4"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b20a7526d309"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "329238d30b57" @@ -1186,7 +1192,7 @@ { "id": "pr-sidebar-load.transport-rejection:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "e6d66cd6a4a4"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "b20a7526d309"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "329238d30b57" @@ -1198,7 +1204,7 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccb14b797eee"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "500af3253e90"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9ad0f7647ce8" @@ -1210,7 +1216,7 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccb14b797eee"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "500af3253e90"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9ad0f7647ce8" diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json index e8be8484ee4..df256573a3c 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-hostedreview.forbranch-1.json @@ -105,57 +105,6 @@ "variant": "worktree-summary" } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, "35103e980aae": { "name": "hostedReview.forBranch#1", "ordinal": 1, @@ -192,7 +141,7 @@ } } }, - "4777f063108d": { + "4780ceb8db5b": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -207,7 +156,9 @@ "currentHeadOid": { "$rpc": "null" }, - "fallbackPRNumber": 12, + "fallbackPRNumber": { + "$rpc": "null" + }, "linkedPRNumber": { "$rpc": "null" }, @@ -217,7 +168,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -377,6 +328,88 @@ } } }, + "734ec9d15b54": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "data": { + "checks": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ], + "checksError": { + "$rpc": "null" + }, + "details": { + "$rpc": "null" + }, + "pr": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + }, + "pushTarget": { + "$rpc": "null" + } + }, + "kind": "ready" + } + }, "7bf83a5e67be": { "name": "hostedReview.forBranch#1", "ordinal": 1, @@ -502,11 +535,7 @@ } } }, - "9270aeb7d9c6": { - "status": "pending", - "startedAt": 0 - }, - "973a6e87065b": { + "8c5720abe38c": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -533,7 +562,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -559,6 +588,10 @@ } } }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, "9a7a01989014": { "name": "github.prChecks#1", "ordinal": 8, @@ -639,7 +672,7 @@ } } }, - "cc4dd30d2afd": { + "a98f4468b85b": { "name": "github.prForBranch#1", "ordinal": 6, "args": [ @@ -654,9 +687,7 @@ "currentHeadOid": { "$rpc": "null" }, - "fallbackPRNumber": { - "$rpc": "null" - }, + "fallbackPRNumber": 12, "linkedPRNumber": { "$rpc": "null" }, @@ -666,7 +697,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -675,83 +706,55 @@ "startedAt": 0 } }, - "cfed3ed2a0ae": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "data": { - "checks": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ], - "checksError": { - "$rpc": "null" - }, - "details": { - "$rpc": "null" - }, - "pr": { - "autoMergeAllowed": { - "$rpc": "undefined" + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" }, - "autoMergeEnabled": { - "$rpc": "undefined" + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - }, - "pushTarget": { - "$rpc": "null" + "repo": "id:repo-9" } }, - "kind": "ready" + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } } }, "d8e9ec6c11ee": { @@ -800,13 +803,56 @@ "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" }, "e169ebaf642b": "unloaded", - "e7df27480ce9": { + "e8a558288b9c": { + "name": "hostedReview.forBranch#1", + "ordinal": 1, + "args": [ + { + "name": "method", + "value": "hostedReview.forBranch" + }, + { + "name": "params", + "value": { + "active": true, + "branch": "feature", + "linkedGitHubPR": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "e93235fba8e6": { "data": { "checks": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -873,46 +919,6 @@ } }, "kind": "ready" - }, - "e8a558288b9c": { - "name": "hostedReview.forBranch#1", - "ordinal": 1, - "args": [ - { - "name": "method", - "value": "hostedReview.forBranch" - }, - { - "name": "params", - "value": { - "active": true, - "branch": "feature", - "linkedGitHubPR": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "outer refused" - }, - "id": "frame-1", - "ok": false - } - } } }, "recording": { @@ -921,7 +927,7 @@ { "id": "pr-sidebar-load.normal:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -933,7 +939,7 @@ { "id": "pr-sidebar-load.normal:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -945,19 +951,19 @@ { "id": "pr-sidebar-load.normal:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9a7a01989014"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.result-absent:branch-hint", "observation": { - "sender": ["35103e980aae", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["35103e980aae", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -969,7 +975,7 @@ { "id": "pr-sidebar-load.result-absent:pr", "observation": { - "sender": ["35103e980aae", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["35103e980aae", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -981,19 +987,19 @@ { "id": "pr-sidebar-load.result-absent:loaded", "observation": { - "sender": ["35103e980aae", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["35103e980aae", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.result-null:branch-hint", "observation": { - "sender": ["9f5541cd3208", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["9f5541cd3208", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1005,7 +1011,7 @@ { "id": "pr-sidebar-load.result-null:pr", "observation": { - "sender": ["9f5541cd3208", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["9f5541cd3208", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1017,19 +1023,19 @@ { "id": "pr-sidebar-load.result-null:loaded", "observation": { - "sender": ["9f5541cd3208", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["9f5541cd3208", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.inner-ok-missing:branch-hint", "observation": { - "sender": ["489d375fcdeb", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["489d375fcdeb", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1041,7 +1047,7 @@ { "id": "pr-sidebar-load.inner-ok-missing:pr", "observation": { - "sender": ["489d375fcdeb", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["489d375fcdeb", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1053,19 +1059,19 @@ { "id": "pr-sidebar-load.inner-ok-missing:loaded", "observation": { - "sender": ["489d375fcdeb", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["489d375fcdeb", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.inner-false-string-error:branch-hint", "observation": { - "sender": ["05ddd233b0e4", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["05ddd233b0e4", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1077,7 +1083,7 @@ { "id": "pr-sidebar-load.inner-false-string-error:pr", "observation": { - "sender": ["05ddd233b0e4", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["05ddd233b0e4", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1089,19 +1095,19 @@ { "id": "pr-sidebar-load.inner-false-string-error:loaded", "observation": { - "sender": ["05ddd233b0e4", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["05ddd233b0e4", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.inner-false-object-error:branch-hint", "observation": { - "sender": ["879f943fd73b", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["879f943fd73b", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1113,7 +1119,7 @@ { "id": "pr-sidebar-load.inner-false-object-error:pr", "observation": { - "sender": ["879f943fd73b", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["879f943fd73b", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1125,19 +1131,19 @@ { "id": "pr-sidebar-load.inner-false-object-error:loaded", "observation": { - "sender": ["879f943fd73b", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["879f943fd73b", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.outer-refused:branch-hint", "observation": { - "sender": ["e8a558288b9c", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["e8a558288b9c", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1149,7 +1155,7 @@ { "id": "pr-sidebar-load.outer-refused:pr", "observation": { - "sender": ["e8a558288b9c", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["e8a558288b9c", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1161,19 +1167,19 @@ { "id": "pr-sidebar-load.outer-refused:loaded", "observation": { - "sender": ["e8a558288b9c", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["e8a558288b9c", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.outer-refused-no-message:branch-hint", "observation": { - "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1185,7 +1191,7 @@ { "id": "pr-sidebar-load.outer-refused-no-message:pr", "observation": { - "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1197,19 +1203,19 @@ { "id": "pr-sidebar-load.outer-refused-no-message:loaded", "observation": { - "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["d8e9ec6c11ee", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.method-not-found:branch-hint", "observation": { - "sender": ["7bf83a5e67be", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["7bf83a5e67be", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1221,7 +1227,7 @@ { "id": "pr-sidebar-load.method-not-found:pr", "observation": { - "sender": ["7bf83a5e67be", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["7bf83a5e67be", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1233,19 +1239,19 @@ { "id": "pr-sidebar-load.method-not-found:loaded", "observation": { - "sender": ["7bf83a5e67be", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["7bf83a5e67be", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.transport-rejection:branch-hint", "observation": { - "sender": ["5bf993b3adf7", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["5bf993b3adf7", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1257,7 +1263,7 @@ { "id": "pr-sidebar-load.transport-rejection:pr", "observation": { - "sender": ["5bf993b3adf7", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["5bf993b3adf7", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1269,19 +1275,19 @@ { "id": "pr-sidebar-load.transport-rejection:loaded", "observation": { - "sender": ["5bf993b3adf7", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["5bf993b3adf7", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.transport-rejection-no-message:branch-hint", "observation": { - "sender": ["636ab64ed281", "7cbf1de78fc1", "cc4dd30d2afd"], + "sender": ["636ab64ed281", "7cbf1de78fc1", "4780ceb8db5b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0"], "settlements": { "load": "9270aeb7d9c6" @@ -1293,7 +1299,7 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:pr", "observation": { - "sender": ["636ab64ed281", "7cbf1de78fc1", "973a6e87065b", "4fae27394886"], + "sender": ["636ab64ed281", "7cbf1de78fc1", "8c5720abe38c", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -1305,12 +1311,12 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:loaded", "observation": { - "sender": ["636ab64ed281", "7cbf1de78fc1", "973a6e87065b", "9a7a01989014"], + "sender": ["636ab64ed281", "7cbf1de78fc1", "8c5720abe38c", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "7c9620d17ba0", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } } diff --git a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json index 8d796205f9c..f959ff68244 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.pr-sidebar-worktree.show-1.json @@ -4,6 +4,57 @@ "family": "session.pr-sidebar", "namedDeltas": [], "values": { + "0016d5409c8c": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, "03dabf7904c5": { "name": "worktree.show#1", "ordinal": 2, @@ -173,57 +224,6 @@ } } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, "3fdee65f324d": { "name": "worktree.show#1", "ordinal": 2, @@ -256,40 +256,6 @@ } } }, - "4777f063108d": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, "4b26820600b0": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -397,55 +363,86 @@ "ordinal": 4, "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" }, - "6b20a29acbfe": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" + "734ec9d15b54": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "data": { + "checks": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } } + ], + "checksError": { + "$rpc": "null" + }, + "details": { + "$rpc": "null" + }, + "pr": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + }, + "pushTarget": { + "$rpc": "null" } - } + }, + "kind": "ready" } }, "7cbf1de78fc1": { @@ -521,6 +518,40 @@ "status": "pending", "startedAt": 0 }, + "96a1d9584809": { + "name": "github.prForBranch#1", + "ordinal": 5, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, "9a7a01989014": { "name": "github.prChecks#1", "ordinal": 8, @@ -595,6 +626,40 @@ "startedAt": 0 } }, + "a98f4468b85b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, "ade44fd82eca": { "name": "worktree.show#1", "ordinal": 2, @@ -630,103 +695,78 @@ } } }, + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, "cf54ab7bda72": { "name": "github.prForBranch#1", "ordinal": 6, "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":12,\"currentHeadOid\":null}}" }, - "cfed3ed2a0ae": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "data": { - "checks": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ], - "checksError": { - "$rpc": "null" - }, - "details": { - "$rpc": "null" - }, - "pr": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - }, - "pushTarget": { - "$rpc": "null" - } - }, - "kind": "ready" - } - }, "dcec20ae0055": { "name": "github.prChecks#1", "ordinal": 9, "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" }, "e169ebaf642b": "unloaded", - "e7df27480ce9": { + "e93235fba8e6": { "data": { "checks": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -794,40 +834,6 @@ }, "kind": "ready" }, - "eb44c4f75728": { - "name": "github.prForBranch#1", - "ordinal": 5, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, "f14112e24d21": { "name": "worktree.show#1", "ordinal": 2, @@ -941,7 +947,7 @@ { "id": "pr-sidebar-load.normal:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -953,7 +959,7 @@ { "id": "pr-sidebar-load.normal:pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -965,19 +971,19 @@ { "id": "pr-sidebar-load.normal:loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9a7a01989014"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } }, { "id": "pr-sidebar-load.result-absent:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7eb2a61711fc", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "7eb2a61711fc", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -989,7 +995,7 @@ { "id": "pr-sidebar-load.result-absent:pr", "observation": { - "sender": ["07639c4f1e7f", "7eb2a61711fc", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "7eb2a61711fc", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1001,19 +1007,19 @@ { "id": "pr-sidebar-load.result-absent:loaded", "observation": { - "sender": ["07639c4f1e7f", "7eb2a61711fc", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "7eb2a61711fc", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.result-null:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "552f85dcd6b4", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "552f85dcd6b4", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1025,7 +1031,7 @@ { "id": "pr-sidebar-load.result-null:pr", "observation": { - "sender": ["07639c4f1e7f", "552f85dcd6b4", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "552f85dcd6b4", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1037,19 +1043,19 @@ { "id": "pr-sidebar-load.result-null:loaded", "observation": { - "sender": ["07639c4f1e7f", "552f85dcd6b4", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "552f85dcd6b4", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.inner-ok-missing:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "f6b2f58dcf76", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "f6b2f58dcf76", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1061,7 +1067,7 @@ { "id": "pr-sidebar-load.inner-ok-missing:pr", "observation": { - "sender": ["07639c4f1e7f", "f6b2f58dcf76", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "f6b2f58dcf76", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1073,19 +1079,19 @@ { "id": "pr-sidebar-load.inner-ok-missing:loaded", "observation": { - "sender": ["07639c4f1e7f", "f6b2f58dcf76", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "f6b2f58dcf76", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.inner-false-string-error:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "ade44fd82eca", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "ade44fd82eca", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1097,7 +1103,7 @@ { "id": "pr-sidebar-load.inner-false-string-error:pr", "observation": { - "sender": ["07639c4f1e7f", "ade44fd82eca", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "ade44fd82eca", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1109,19 +1115,19 @@ { "id": "pr-sidebar-load.inner-false-string-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "ade44fd82eca", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "ade44fd82eca", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.inner-false-object-error:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "f8ad59a07e10", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "f8ad59a07e10", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1133,7 +1139,7 @@ { "id": "pr-sidebar-load.inner-false-object-error:pr", "observation": { - "sender": ["07639c4f1e7f", "f8ad59a07e10", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "f8ad59a07e10", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1145,19 +1151,19 @@ { "id": "pr-sidebar-load.inner-false-object-error:loaded", "observation": { - "sender": ["07639c4f1e7f", "f8ad59a07e10", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "f8ad59a07e10", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.outer-refused:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "f14112e24d21", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "f14112e24d21", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1169,7 +1175,7 @@ { "id": "pr-sidebar-load.outer-refused:pr", "observation": { - "sender": ["07639c4f1e7f", "f14112e24d21", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "f14112e24d21", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1181,19 +1187,19 @@ { "id": "pr-sidebar-load.outer-refused:loaded", "observation": { - "sender": ["07639c4f1e7f", "f14112e24d21", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "f14112e24d21", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.outer-refused-no-message:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "5087d259003b", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "5087d259003b", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1205,7 +1211,7 @@ { "id": "pr-sidebar-load.outer-refused-no-message:pr", "observation": { - "sender": ["07639c4f1e7f", "5087d259003b", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "5087d259003b", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1217,19 +1223,19 @@ { "id": "pr-sidebar-load.outer-refused-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "5087d259003b", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "5087d259003b", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.method-not-found:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "1a1f37b92aca", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "1a1f37b92aca", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1241,7 +1247,7 @@ { "id": "pr-sidebar-load.method-not-found:pr", "observation": { - "sender": ["07639c4f1e7f", "1a1f37b92aca", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "1a1f37b92aca", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1253,19 +1259,19 @@ { "id": "pr-sidebar-load.method-not-found:loaded", "observation": { - "sender": ["07639c4f1e7f", "1a1f37b92aca", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "1a1f37b92aca", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.transport-rejection:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "03dabf7904c5", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "03dabf7904c5", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1277,7 +1283,7 @@ { "id": "pr-sidebar-load.transport-rejection:pr", "observation": { - "sender": ["07639c4f1e7f", "03dabf7904c5", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "03dabf7904c5", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1289,19 +1295,19 @@ { "id": "pr-sidebar-load.transport-rejection:loaded", "observation": { - "sender": ["07639c4f1e7f", "03dabf7904c5", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "03dabf7904c5", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } }, { "id": "pr-sidebar-load.transport-rejection-no-message:branch-hint", "observation": { - "sender": ["07639c4f1e7f", "3fdee65f324d", "eb44c4f75728"], + "sender": ["07639c4f1e7f", "3fdee65f324d", "96a1d9584809"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72"], "settlements": { "load": "9270aeb7d9c6" @@ -1313,7 +1319,7 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:pr", "observation": { - "sender": ["07639c4f1e7f", "3fdee65f324d", "6b20a29acbfe", "a6cb6a8ef089"], + "sender": ["07639c4f1e7f", "3fdee65f324d", "0016d5409c8c", "a6cb6a8ef089"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { "load": "9270aeb7d9c6" @@ -1325,12 +1331,12 @@ { "id": "pr-sidebar-load.transport-rejection-no-message:loaded", "observation": { - "sender": ["07639c4f1e7f", "3fdee65f324d", "6b20a29acbfe", "13bc6662625a"], + "sender": ["07639c4f1e7f", "3fdee65f324d", "0016d5409c8c", "13bc6662625a"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "cf54ab7bda72", "9fac855f9003"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": [] } } diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json index a75019d4dbc..4eed3994ef1 100644 --- a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json +++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.prchecks-1.json @@ -4,71 +4,45 @@ "family": "tasks.item-review-github", "namedDeltas": [], "values": { - "024b63e57ad7": { - "name": "detailPayload", - "ordinal": 25, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" + "02fa700c659e": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" }, - "login": "octocat", - "name": { - "$rpc": "null" - } + "repo": "id:repo-1" } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } } }, "04f768fb79f6": { @@ -158,53 +132,6 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "0bcfcbfb9718": { - "name": "items", - "ordinal": 23, - "value": [ - { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, "13df72dff15f": { "draft": "a comment", "error": "transport failure", @@ -299,51 +226,54 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "15bb352f1b6b": { + "1412f820054d": { "name": "error", - "ordinal": 23, + "ordinal": 25, "value": "Unknown method" }, - "199e77e69e88": { - "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { + "1c3b130f9436": { + "name": "actionItem", + "ordinal": 26, + "value": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { "$rpc": "null" - } - } + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" } }, "1fc52836dac4": { @@ -351,9 +281,14 @@ "ordinal": 9, "value": "octocat" }, - "24db40a157c7": { + "22b1e4293201": { + "name": "mutatingStatus", + "ordinal": 28, + "value": false + }, + "25d9579f3a25": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 23, "args": [ { "name": "method", @@ -376,6 +311,7 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } @@ -385,7 +321,7 @@ "startedAt": 0, "settledAt": 0, "value": { - "id": "frame-2", + "id": "frame-3", "ok": true, "result": { "error": "inner refused", @@ -548,50 +484,6 @@ "ordinal": 10, "value": "" }, - "3b97b9d3a869": { - "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true - } - } - }, - "3e3fefff3403": { - "name": "error", - "ordinal": 23, - "value": "outer refused" - }, "4031bf455f49": { "name": "mutatingStatus", "ordinal": 5, @@ -691,64 +583,9 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "53506297367b": { - "name": "itemCommentDraft", - "ordinal": 3, - "value": "" - }, - "5681be9e6bd6": { + "4e7ca3c1521d": { "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "rejected", - "startedAt": 0, - "settledAt": 0, - "error": { - "category": "Error", - "message": "", - "isRpcDeliveryUnknown": true - } - } - }, - "56a29701de21": { - "name": "itemCommentDraft", - "ordinal": 8, - "value": "a comment" - }, - "56a2a300d457": { - "name": "error", "ordinal": 23, - "value": "" - }, - "58d3511deba3": { - "name": "github.prChecks#1", - "ordinal": 20, "args": [ { "name": "method", @@ -771,6 +608,7 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } @@ -780,14 +618,21 @@ "startedAt": 0, "settledAt": 0, "value": { - "id": "frame-2", - "ok": true, - "result": { - "error": "refused" - } + "id": "frame-3", + "ok": true } } }, + "53506297367b": { + "name": "itemCommentDraft", + "ordinal": 3, + "value": "" + }, + "56a29701de21": { + "name": "itemCommentDraft", + "ordinal": 8, + "value": "a comment" + }, "593c53b594c5": { "draft": "a comment", "error": "", @@ -1028,10 +873,120 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "6ebf8126530a": { + "69b4fb187f59": { + "name": "detailPayload", + "ordinal": 27, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "6f47b9866251": { "name": "github.prChecks#1", - "ordinal": 22, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ] + } + } }, "70d34263ce6d": { "draft": "a comment", @@ -1127,14 +1082,55 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "7ac6ba7254a4": { + "77d8b565e94c": { "name": "error", - "ordinal": 23, - "value": "The host sent a reply this app could not read (github.prChecks)" + "ordinal": 25, + "value": "outer refused" }, - "7fc7b77ad133": { - "name": "error", + "78086e29ba20": { + "name": "github.prChecks#1", "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "87481dc71512": { + "name": "error", + "ordinal": 25, "value": "transport failure" }, "886c60a7e62e": { @@ -1142,198 +1138,30 @@ "ordinal": 12, "value": true }, - "8b5917d7d93c": { - "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ] - } - } - }, "94caa29bceef": { "name": "error", "ordinal": 19, "value": "" }, - "984dd11cb732": { - "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "refused", - "message": "" - }, - "id": "frame-2", - "ok": false - } - } - }, - "989e0a05a86f": { - "name": "actionItem", - "ordinal": 24, - "value": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, "a17cf032d1cb": { "name": "mutatingStatus", "ordinal": 18, "value": false }, + "a8e736aefcf1": { + "name": "error", + "ordinal": 25, + "value": "The host sent a reply this app could not read (github.prChecks)" + }, "acff45feb249": { "name": "mutatingStatus", "ordinal": 26, "value": false }, - "bbff18ab47b5": { + "baa2764f836f": { "name": "github.prChecks#1", - "ordinal": 20, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "error": { - "code": "method_not_found", - "message": "Unknown method" - }, - "id": "frame-2", - "ok": false - } - } + "ordinal": 24, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" }, "c29314fc4896": { "name": "items", @@ -1374,6 +1202,16 @@ } ] }, + "c40da88e1087": { + "name": "error", + "ordinal": 25, + "value": "" + }, + "c448fcc040ee": { + "name": "status.get#1", + "ordinal": 22, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, "c650cf641414": { "name": "itemReviewersDraft", "ordinal": 4, @@ -1384,6 +1222,49 @@ "ordinal": 17, "value": "" }, + "ca199b3389ec": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, "cc2ece9478f0": { "name": "actionItem", "ordinal": 1, @@ -1432,9 +1313,9 @@ } } }, - "d8645476c74b": { + "d2083e88d3e2": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 23, "args": [ { "name": "method", @@ -1457,6 +1338,56 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-3", + "ok": false + } + } + }, + "d8e1fd46cd19": { + "name": "github.requestPRReviewers#1", + "ordinal": 13, + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" + }, + "df37fc0f140b": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } @@ -1470,24 +1401,61 @@ "code": "refused", "message": "outer refused" }, - "id": "frame-2", + "id": "frame-3", "ok": false } } }, - "d8e1fd46cd19": { - "name": "github.requestPRReviewers#1", - "ordinal": 13, - "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" + "e38e4b18b697": { + "name": "items", + "ordinal": 25, + "value": [ + { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] }, - "da52b2b19466": { - "name": "mutatingStatus", - "ordinal": 24, - "value": false - }, - "e5aef3da715f": { + "e50d6e96e926": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 23, "args": [ { "name": "method", @@ -1510,39 +1478,27 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } ], "settlement": { - "status": "rejected", + "status": "fulfilled", "startedAt": 0, "settledAt": 0, - "error": { - "category": "Error", - "message": "transport failure", - "isRpcDeliveryUnknown": true + "value": { + "id": "frame-3", + "ok": true, + "result": { + "$rpc": "null" + } } } }, - "eb79a9b3682a": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "$rpc": "undefined" - } - }, - "eda130337c99": { - "name": "detailPayload", - "ordinal": 2, - "value": { - "$rpc": "null" - } - }, - "f6a2c65a38fb": { + "e63a0d34aa38": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 23, "args": [ { "name": "method", @@ -1565,10 +1521,48 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-3", + "ok": false + } + } + }, + "e6b60387dab2": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], "settlement": { "status": "fulfilled", "startedAt": 0, @@ -1576,6 +1570,61 @@ "value": { "id": "frame-2", "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ec95487dac70": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, "result": { "error": { "message": "inner refused" @@ -1584,6 +1633,13 @@ } } } + }, + "eda130337c99": { + "name": "detailPayload", + "ordinal": 2, + "value": { + "$rpc": "null" + } } }, "recording": { @@ -1622,8 +1678,8 @@ { "id": "tk-item-review-github.normal:checks-settled", "observation": { - "sender": ["cf975363479a", "8b5917d7d93c"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1649,18 +1705,18 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "0bcfcbfb9718", - "989e0a05a86f", - "024b63e57ad7", - "acff45feb249" + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" ] } }, { "id": "tk-item-review-github.result-absent:checks-settled", "observation": { - "sender": ["cf975363479a", "3b97b9d3a869"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "4e7ca3c1521d"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1686,16 +1742,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7ac6ba7254a4", - "da52b2b19466" + "a8e736aefcf1", + "acff45feb249" ] } }, { "id": "tk-item-review-github.result-null:checks-settled", "observation": { - "sender": ["cf975363479a", "199e77e69e88"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "e50d6e96e926"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1721,16 +1777,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7ac6ba7254a4", - "da52b2b19466" + "a8e736aefcf1", + "acff45feb249" ] } }, { "id": "tk-item-review-github.inner-ok-missing:checks-settled", "observation": { - "sender": ["cf975363479a", "58d3511deba3"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "ca199b3389ec"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1756,16 +1812,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7ac6ba7254a4", - "da52b2b19466" + "a8e736aefcf1", + "acff45feb249" ] } }, { "id": "tk-item-review-github.inner-false-string-error:checks-settled", "observation": { - "sender": ["cf975363479a", "24db40a157c7"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "25d9579f3a25"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1791,16 +1847,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7ac6ba7254a4", - "da52b2b19466" + "a8e736aefcf1", + "acff45feb249" ] } }, { "id": "tk-item-review-github.inner-false-object-error:checks-settled", "observation": { - "sender": ["cf975363479a", "f6a2c65a38fb"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "ec95487dac70"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1826,16 +1882,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7ac6ba7254a4", - "da52b2b19466" + "a8e736aefcf1", + "acff45feb249" ] } }, { "id": "tk-item-review-github.outer-refused:checks-settled", "observation": { - "sender": ["cf975363479a", "d8645476c74b"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "df37fc0f140b"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1861,16 +1917,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "3e3fefff3403", - "da52b2b19466" + "77d8b565e94c", + "acff45feb249" ] } }, { "id": "tk-item-review-github.outer-refused-no-message:checks-settled", "observation": { - "sender": ["cf975363479a", "984dd11cb732"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "d2083e88d3e2"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1896,16 +1952,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "56a2a300d457", - "da52b2b19466" + "c40da88e1087", + "acff45feb249" ] } }, { "id": "tk-item-review-github.method-not-found:checks-settled", "observation": { - "sender": ["cf975363479a", "bbff18ab47b5"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "e63a0d34aa38"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1931,16 +1987,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "15bb352f1b6b", - "da52b2b19466" + "1412f820054d", + "acff45feb249" ] } }, { "id": "tk-item-review-github.transport-rejection:checks-settled", "observation": { - "sender": ["cf975363479a", "e5aef3da715f"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "78086e29ba20"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -1966,16 +2022,16 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "7fc7b77ad133", - "da52b2b19466" + "87481dc71512", + "acff45feb249" ] } }, { "id": "tk-item-review-github.transport-rejection-no-message:checks-settled", "observation": { - "sender": ["cf975363479a", "5681be9e6bd6"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "02fa700c659e"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2001,8 +2057,8 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "56a2a300d457", - "da52b2b19466" + "c40da88e1087", + "acff45feb249" ] } } diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json index bff711cc18d..7e5912c4c24 100644 --- a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json +++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-github.requestprreviewers-1.json @@ -4,72 +4,10 @@ "family": "tasks.item-review-github", "namedDeltas": [], "values": { - "024b63e57ad7": { - "name": "detailPayload", - "ordinal": 25, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } + "028e5bd2099b": { + "name": "github.prChecks#1", + "ordinal": 22, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" }, "04f768fb79f6": { "name": "actionItem", @@ -158,110 +96,6 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "0bcfcbfb9718": { - "name": "items", - "ordinal": 23, - "value": [ - { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, - "0d1b6c79c50b": { - "name": "detailPayload", - "ordinal": 23, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, "0e6faef71969": { "draft": "a comment", "error": "outer refused", @@ -336,25 +170,9 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "124bef35e9e5": { - "name": "reply-salvage", - "ordinal": 14, - "value": { - "droppedCount": 1, - "droppedPaths": ["error"], - "method": "github.requestPRReviewers", - "operation": "github.request-pr-reviewers", - "variant": "task-item-mutation" - } - }, - "1296f040e2e2": { - "name": "mutatingStatus", - "ordinal": 18, - "value": true - }, - "17710bd6eee0": { + "11e90d5e378e": { "name": "items", - "ordinal": 20, + "ordinal": 23, "value": [ { "provider": "github", @@ -389,6 +207,67 @@ } ] }, + "124bef35e9e5": { + "name": "reply-salvage", + "ordinal": 14, + "value": { + "droppedCount": 1, + "droppedPaths": ["error"], + "method": "github.requestPRReviewers", + "operation": "github.request-pr-reviewers", + "variant": "task-item-mutation" + } + }, + "1296f040e2e2": { + "name": "mutatingStatus", + "ordinal": 18, + "value": true + }, + "1c3b130f9436": { + "name": "actionItem", + "ordinal": 26, + "value": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + }, "1fc52836dac4": { "name": "itemReviewersDraft", "ordinal": 9, @@ -399,6 +278,11 @@ "ordinal": 14, "value": "inner refused" }, + "22b1e4293201": { + "name": "mutatingStatus", + "ordinal": 28, + "value": false + }, "26f442c9e2e5": { "name": "detailPayload", "ordinal": 7, @@ -454,61 +338,14 @@ "ordinal": 17, "value": "" }, - "29813dd9658e": { - "name": "github.prChecks#1", - "ordinal": 17, - "args": [ - { - "name": "method", - "value": "github.prChecks" - }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ] - } - } - }, "2d8d5e501a0d": { "name": "mutatingStatus", "ordinal": 21, "value": true }, - "32487bde7cb3": { + "35c3eb07c24a": { "name": "actionItem", - "ordinal": 21, + "ordinal": 23, "value": { "provider": "github", "source": { @@ -546,6 +383,11 @@ "ordinal": 14, "value": "Unknown method" }, + "38e625888db0": { + "name": "mutatingStatus", + "ordinal": 25, + "value": false + }, "3aefb3006914": { "name": "error", "ordinal": 10, @@ -602,6 +444,43 @@ "ordinal": 14, "value": "The host sent a reply this app could not read (github.requestPRReviewers)" }, + "4674c0b77bae": { + "name": "items", + "ordinal": 22, + "value": [ + { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] + }, "4a6545173dbd": { "draft": "a comment", "error": "", @@ -899,61 +778,44 @@ "title": "A pull request" } }, - "5ec61e3c7f4b": { - "name": "github.prChecks#1", - "ordinal": 18, - "args": [ - { - "name": "method", - "value": "github.prChecks" + "67bf687e26bc": { + "name": "actionItem", + "ordinal": 24, + "value": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" }, - { - "name": "params", - "value": { - "headSha": "head-sha", - "noCache": true, - "prNumber": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repo": "id:repo-1" - } - }, - { - "name": "options", - "value": { - "timeoutMs": 30000 - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ] - } + "title": "A pull request" } }, - "6ebf8126530a": { - "name": "github.prChecks#1", - "ordinal": 22, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" - }, - "6fc4663f28a9": { + "69b4fb187f59": { "name": "detailPayload", - "ordinal": 22, + "ordinal": 27, "value": { "assignees": ["octocat"], "baseSha": "base-sha", @@ -1004,10 +866,108 @@ "reviewDecision": { "$rpc": "null" }, - "reviewRequests": [], + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, + "6a969049e154": { + "name": "status.get#1", + "ordinal": 18, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, + "6f47b9866251": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ] + } + } + }, "7862a9f652d9": { "name": "github.requestPRReviewers#1", "ordinal": 11, @@ -1088,48 +1048,6 @@ } } }, - "7978eb86bf1f": { - "name": "github.prChecks#1", - "ordinal": 20, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" - }, - "7b5d2e416d82": { - "name": "items", - "ordinal": 21, - "value": [ - { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - ] - }, "81a44a832a63": { "draft": "a comment", "error": "", @@ -1209,9 +1127,9 @@ "ordinal": 12, "value": true }, - "8b5917d7d93c": { + "8d96fd770008": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 21, "args": [ { "name": "method", @@ -1234,6 +1152,7 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } @@ -1243,7 +1162,7 @@ "startedAt": 0, "settledAt": 0, "value": { - "id": "frame-2", + "id": "frame-3", "ok": true, "result": [ { @@ -1492,84 +1411,52 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "989e0a05a86f": { - "name": "actionItem", - "ordinal": 24, - "value": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ + "98dd7b6613b5": { + "name": "github.prChecks#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": [ { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, - "98ed4a4ac595": { - "name": "actionItem", - "ordinal": 22, - "value": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" + ] + } } }, "9d1f08a6e600": { @@ -1750,10 +1637,10 @@ "ordinal": 26, "value": false }, - "ada848e8b740": { + "b6cd450eff5a": { "name": "github.prChecks#1", - "ordinal": 19, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" + "ordinal": 21, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" }, "b942b6f16120": { "name": "github.requestPRReviewers#1", @@ -1797,6 +1684,16 @@ } } }, + "b966124aada0": { + "name": "status.get#1", + "ordinal": 19, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "baa2764f836f": { + "name": "github.prChecks#1", + "ordinal": 24, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" + }, "bc4a66954b97": { "name": "github.requestPRReviewers#1", "ordinal": 11, @@ -1952,6 +1849,11 @@ } ] }, + "c448fcc040ee": { + "name": "status.get#1", + "ordinal": 22, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, "c650cf641414": { "name": "itemReviewersDraft", "ordinal": 4, @@ -2030,15 +1932,114 @@ "ordinal": 13, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" }, - "d9d25a5ea544": { - "name": "mutatingStatus", - "ordinal": 23, - "value": false - }, - "da52b2b19466": { - "name": "mutatingStatus", + "db79b41f1a85": { + "name": "detailPayload", "ordinal": 24, - "value": false + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "e0bebf1cd037": { + "name": "status.get#1", + "ordinal": 20, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "e38e4b18b697": { + "name": "items", + "ordinal": 25, + "value": [ + { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] }, "e5b8684d788c": { "name": "github.requestPRReviewers#1", @@ -2078,6 +2079,103 @@ } } }, + "e6b60387dab2": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, + "e8e79c1c5308": { + "name": "detailPayload", + "ordinal": 25, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, "e98a64439ed1": { "draft": "a comment", "error": "The host sent a reply this app could not read (github.requestPRReviewers)", @@ -2182,6 +2280,46 @@ "ordinal": 14, "value": "transport failure" }, + "f92df6c83140": { + "name": "status.get#1", + "ordinal": 17, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, "ff7638a01f95": { "name": "github.requestPRReviewers#1", "ordinal": 11, @@ -2261,8 +2399,8 @@ { "id": "tk-item-review-github.normal:checks-settled", "observation": { - "sender": ["cf975363479a", "8b5917d7d93c"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2288,10 +2426,10 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "0bcfcbfb9718", - "989e0a05a86f", - "024b63e57ad7", - "acff45feb249" + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" ] } }, @@ -2325,8 +2463,8 @@ { "id": "tk-item-review-github.result-absent:checks-settled", "observation": { - "sender": ["e5b8684d788c", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["e5b8684d788c", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2349,10 +2487,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2386,8 +2524,8 @@ { "id": "tk-item-review-github.result-null:checks-settled", "observation": { - "sender": ["3f1e21bb1b66", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["3f1e21bb1b66", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2410,10 +2548,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2450,8 +2588,8 @@ { "id": "tk-item-review-github.inner-ok-missing:checks-settled", "observation": { - "sender": ["79352b30b1ed", "8b5917d7d93c"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["79352b30b1ed", "e6b60387dab2", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2477,10 +2615,10 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "0bcfcbfb9718", - "989e0a05a86f", - "024b63e57ad7", - "acff45feb249" + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" ] } }, @@ -2514,8 +2652,8 @@ { "id": "tk-item-review-github.inner-false-string-error:checks-settled", "observation": { - "sender": ["ff7638a01f95", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["ff7638a01f95", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2538,10 +2676,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2576,8 +2714,8 @@ { "id": "tk-item-review-github.inner-false-object-error:checks-settled", "observation": { - "sender": ["949da9fa9fb2", "5ec61e3c7f4b"], - "payloads": ["d8e1fd46cd19", "7978eb86bf1f"], + "sender": ["949da9fa9fb2", "6a969049e154", "8d96fd770008"], + "payloads": ["d8e1fd46cd19", "e0bebf1cd037", "028e5bd2099b"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2601,10 +2739,10 @@ "cbae54d3d351", "281433cc9ca6", "f3640f6ae8be", - "7b5d2e416d82", - "98ed4a4ac595", - "0d1b6c79c50b", - "da52b2b19466" + "11e90d5e378e", + "67bf687e26bc", + "e8e79c1c5308", + "acff45feb249" ] } }, @@ -2638,8 +2776,8 @@ { "id": "tk-item-review-github.outer-refused:checks-settled", "observation": { - "sender": ["b942b6f16120", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["b942b6f16120", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2662,10 +2800,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2699,8 +2837,8 @@ { "id": "tk-item-review-github.outer-refused-no-message:checks-settled", "observation": { - "sender": ["bc4a66954b97", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["bc4a66954b97", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2723,10 +2861,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2760,8 +2898,8 @@ { "id": "tk-item-review-github.method-not-found:checks-settled", "observation": { - "sender": ["58f81de4672e", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["58f81de4672e", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2784,10 +2922,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2821,8 +2959,8 @@ { "id": "tk-item-review-github.transport-rejection:checks-settled", "observation": { - "sender": ["907c3f582ac8", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["907c3f582ac8", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2845,10 +2983,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } }, @@ -2882,8 +3020,8 @@ { "id": "tk-item-review-github.transport-rejection-no-message:checks-settled", "observation": { - "sender": ["7862a9f652d9", "29813dd9658e"], - "payloads": ["d8e1fd46cd19", "ada848e8b740"], + "sender": ["7862a9f652d9", "f92df6c83140", "98dd7b6613b5"], + "payloads": ["d8e1fd46cd19", "b966124aada0", "b6cd450eff5a"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -2906,10 +3044,10 @@ "5737a7806a0c", "9d1f08a6e600", "1296f040e2e2", - "17710bd6eee0", - "32487bde7cb3", - "6fc4663f28a9", - "d9d25a5ea544" + "4674c0b77bae", + "35c3eb07c24a", + "db79b41f1a85", + "38e625888db0" ] } } diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-pr-check-discovery.json b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-pr-check-discovery.json new file mode 100644 index 00000000000..bc5453d504b --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.item-review-github-pr-check-discovery.json @@ -0,0 +1,1611 @@ +{ + "goldenFormatVersion": 6, + "operation": "tasks.item-review-github", + "family": "tasks.item-review-github", + "namedDeltas": [], + "values": { + "04f768fb79f6": { + "name": "actionItem", + "ordinal": 6, + "value": { + "provider": "github", + "source": { + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + }, + "07ffa068648a": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "0928f51c9dae": { + "name": "detailPayload", + "ordinal": 16, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "1c3b130f9436": { + "name": "actionItem", + "ordinal": 26, + "value": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + }, + "1e17e1c76148": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "1efdd8e83547": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "1fc52836dac4": { + "name": "itemReviewersDraft", + "ordinal": 9, + "value": "octocat" + }, + "22b1e4293201": { + "name": "mutatingStatus", + "ordinal": 28, + "value": false + }, + "26f442c9e2e5": { + "name": "detailPayload", + "ordinal": 7, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "2d8d5e501a0d": { + "name": "mutatingStatus", + "ordinal": 21, + "value": true + }, + "3aefb3006914": { + "name": "error", + "ordinal": 10, + "value": "" + }, + "4031bf455f49": { + "name": "mutatingStatus", + "ordinal": 5, + "value": false + }, + "4509dc3232d7": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "4a6545173dbd": { + "draft": "a comment", + "error": "", + "item": { + "provider": "github", + "source": { + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + }, + "mutating": false, + "payload": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "53506297367b": { + "name": "itemCommentDraft", + "ordinal": 3, + "value": "" + }, + "56a29701de21": { + "name": "itemCommentDraft", + "ordinal": 8, + "value": "a comment" + }, + "593c53b594c5": { + "draft": "a comment", + "error": "", + "item": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + }, + "mutating": false, + "payload": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "5a2cfc63cd94": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "5a6043d5c7cc": { + "name": "actionItem", + "ordinal": 15, + "value": { + "provider": "github", + "source": { + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + }, + "69b4fb187f59": { + "name": "detailPayload", + "ordinal": 27, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } + }, + "6f47b9866251": { + "name": "github.prChecks#1", + "ordinal": 23, + "args": [ + { + "name": "method", + "value": "github.prChecks" + }, + { + "name": "params", + "value": { + "headSha": "head-sha", + "noCache": true, + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ] + } + } + }, + "761539b98587": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "886c60a7e62e": { + "name": "mutatingStatus", + "ordinal": 12, + "value": true + }, + "94caa29bceef": { + "name": "error", + "ordinal": 19, + "value": "" + }, + "9e4ceac57e10": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "a17cf032d1cb": { + "name": "mutatingStatus", + "ordinal": 18, + "value": false + }, + "ace73bafef56": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "ad324d0d1284": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "b1993904c970": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "baa2764f836f": { + "name": "github.prChecks#1", + "ordinal": 24, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" + }, + "c29314fc4896": { + "name": "items", + "ordinal": 14, + "value": [ + { + "provider": "github", + "source": { + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] + }, + "c448fcc040ee": { + "name": "status.get#1", + "ordinal": 22, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "c650cf641414": { + "name": "itemReviewersDraft", + "ordinal": 4, + "value": "" + }, + "c9e35d56c303": { + "name": "itemReviewersDraft", + "ordinal": 17, + "value": "" + }, + "cc2ece9478f0": { + "name": "actionItem", + "ordinal": 1, + "value": { + "$rpc": "null" + } + }, + "cf975363479a": { + "name": "github.requestPRReviewers#1", + "ordinal": 11, + "args": [ + { + "name": "method", + "value": "github.requestPRReviewers" + }, + { + "name": "params", + "value": { + "prNumber": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repo": "id:repo-1", + "reviewers": ["octocat"] + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "ok": true + } + } + } + }, + "d8e1fd46cd19": { + "name": "github.requestPRReviewers#1", + "ordinal": 13, + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" + }, + "e38e4b18b697": { + "name": "items", + "ordinal": 25, + "value": [ + { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] + }, + "e6b60387dab2": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "eda130337c99": { + "name": "detailPayload", + "ordinal": 2, + "value": { + "$rpc": "null" + } + } + }, + "recording": { + "scenario": "matrix-tasks.item-review-github-pr-check-discovery", + "checkpoints": [ + { + "id": "tk-item-review-github.prelude:reviewers-settled", + "observation": { + "sender": ["cf975363479a"], + "payloads": ["d8e1fd46cd19"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a" + }, + "state": "4a6545173dbd", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb" + ] + } + }, + { + "id": "tk-item-review-github.normal:checks-settled", + "observation": { + "sender": ["cf975363479a", "e6b60387dab2", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.result-absent:checks-settled", + "observation": { + "sender": ["cf975363479a", "9e4ceac57e10", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.result-null:checks-settled", + "observation": { + "sender": ["cf975363479a", "4509dc3232d7", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.inner-ok-missing:checks-settled", + "observation": { + "sender": ["cf975363479a", "ace73bafef56", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.inner-false-string-error:checks-settled", + "observation": { + "sender": ["cf975363479a", "b1993904c970", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.inner-false-object-error:checks-settled", + "observation": { + "sender": ["cf975363479a", "761539b98587", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.outer-refused:checks-settled", + "observation": { + "sender": ["cf975363479a", "1efdd8e83547", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.outer-refused-no-message:checks-settled", + "observation": { + "sender": ["cf975363479a", "07ffa068648a", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.method-not-found:checks-settled", + "observation": { + "sender": ["cf975363479a", "ad324d0d1284", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.transport-rejection:checks-settled", + "observation": { + "sender": ["cf975363479a", "5a2cfc63cd94", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + }, + { + "id": "tk-item-review-github.transport-rejection-no-message:checks-settled", + "observation": { + "sender": ["cf975363479a", "1e17e1c76148", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], + "settlements": { + "mount": "eb79a9b3682a", + "reviewers-0": "eb79a9b3682a", + "checks-1": "eb79a9b3682a" + }, + "state": "593c53b594c5", + "effects": [ + "cc2ece9478f0", + "eda130337c99", + "53506297367b", + "c650cf641414", + "4031bf455f49", + "04f768fb79f6", + "26f442c9e2e5", + "56a29701de21", + "1fc52836dac4", + "3aefb3006914", + "886c60a7e62e", + "c29314fc4896", + "5a6043d5c7cc", + "0928f51c9dae", + "c9e35d56c303", + "a17cf032d1cb", + "94caa29bceef", + "2d8d5e501a0d", + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json b/mobile/rpc-foundation/goldens/pr-read-fork-routing.json index 61a0856a624..49ddb40ee0d 100644 --- a/mobile/rpc-foundation/goldens/pr-read-fork-routing.json +++ b/mobile/rpc-foundation/goldens/pr-read-fork-routing.json @@ -45,45 +45,20 @@ } } }, - "79b747202f2f": { - "check-details": { - "ok": true, - "result": { - "annotations": [], - "completedAt": { - "$rpc": "null" - }, - "conclusion": "success", - "detailsUrl": { - "$rpc": "null" - }, - "jobs": [], - "name": "build", - "startedAt": { - "$rpc": "null" - }, - "status": "completed", - "summary": { - "$rpc": "null" - }, - "text": { - "$rpc": "null" - }, - "title": { - "$rpc": "null" - }, - "url": { - "$rpc": "null" - } - } - }, - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -183,6 +158,28 @@ } } }, + "9ad46f0a24c7": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + } + }, "c0db062cb341": { "name": "github.prChecks#1", "ordinal": 1, @@ -234,7 +231,43 @@ "ordinal": 4, "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null,\"prRepo\":{\"owner\":\"fork-owner\",\"repo\":\"fork-repo\",\"host\":\"github.enterprise.test\"}}}" }, - "daf4d0570339": { + "dd2205e9f2fb": { + "name": "github.prChecks#2", + "ordinal": 6, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12}}" + }, + "ff556464fa8e": { + "check-details": { + "ok": true, + "result": { + "annotations": [], + "completedAt": { + "$rpc": "null" + }, + "conclusion": "success", + "detailsUrl": { + "$rpc": "null" + }, + "jobs": [], + "name": "build", + "startedAt": { + "$rpc": "null" + }, + "status": "completed", + "summary": { + "$rpc": "null" + }, + "text": { + "$rpc": "null" + }, + "title": { + "$rpc": "null" + }, + "url": { + "$rpc": "null" + } + } + }, "checks": { "ok": true, "result": [ @@ -242,33 +275,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { + "observedHeadSha": { "$rpc": "undefined" - } - } - ] - } - }, - "dd2205e9f2fb": { - "name": "github.prChecks#2", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12}}" - }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", + }, "status": "completed", "url": { "$rpc": "null" @@ -290,9 +299,9 @@ "sender": ["c0db062cb341"], "payloads": ["08e5cc0c504e"], "settlements": { - "fork-checks": "e23eb2e4b033" + "fork-checks": "3d3e04f5c1cb" }, - "state": "daf4d0570339", + "state": "9ad46f0a24c7", "effects": [] } }, @@ -302,10 +311,10 @@ "sender": ["c0db062cb341", "997e2aac6183"], "payloads": ["08e5cc0c504e", "d982d58879cb"], "settlements": { - "fork-checks": "e23eb2e4b033", + "fork-checks": "3d3e04f5c1cb", "fork-check-details": "1c88fe396b45" }, - "state": "79b747202f2f", + "state": "ff556464fa8e", "effects": [] } }, @@ -315,11 +324,11 @@ "sender": ["c0db062cb341", "997e2aac6183", "88a456608739"], "payloads": ["08e5cc0c504e", "d982d58879cb", "dd2205e9f2fb"], "settlements": { - "fork-checks": "e23eb2e4b033", + "fork-checks": "3d3e04f5c1cb", "fork-check-details": "1c88fe396b45", - "no-head-sha": "e23eb2e4b033" + "no-head-sha": "3d3e04f5c1cb" }, - "state": "79b747202f2f", + "state": "ff556464fa8e", "effects": [] } } diff --git a/mobile/rpc-foundation/goldens/pr-read-surface.json b/mobile/rpc-foundation/goldens/pr-read-surface.json index fc20063354d..c0b3ed424c7 100644 --- a/mobile/rpc-foundation/goldens/pr-read-surface.json +++ b/mobile/rpc-foundation/goldens/pr-read-surface.json @@ -4,6 +4,180 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "026ad16c841b": { + "checks": { + "ok": true, + "result": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ] + }, + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "pr-for-branch": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + }, + "work-item": { + "ok": true, + "result": { + "assignees": { + "$rpc": "undefined" + }, + "baseSha": { + "$rpc": "undefined" + }, + "body": "body", + "checks": [], + "comments": [], + "headSha": "head-sha-1", + "item": { + "assignees": [], + "author": { + "$rpc": "null" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "baseRefName": { + "$rpc": "undefined" + }, + "branchName": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "id": "PR_1", + "labels": [], + "latestReviews": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": { + "$rpc": "undefined" + }, + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "reviewRequests": [], + "state": "open", + "title": "Recorded", + "type": "pr", + "updatedAt": "", + "url": "" + }, + "participants": [], + "pullRequestId": { + "$rpc": "undefined" + } + } + } + }, "0644012ff2a3": { "status": "fulfilled", "startedAt": 0, @@ -138,17 +312,7 @@ "ordinal": 2, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-9\"}}" }, - "274a4d26a91b": { - "assignable": { - "ok": true, - "result": [ - { - "avatarUrl": "", - "login": "octocat", - "name": "Octo Cat" - } - ] - }, + "2709bde96386": { "check-details": { "ok": true, "result": { @@ -187,6 +351,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -350,14 +517,20 @@ } } }, - "3fb2c86ce340": { - "checks": { + "3d3e04f5c1cb": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { "ok": true, "result": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -367,158 +540,6 @@ } } ] - }, - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "pr-for-branch": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - }, - "work-item": { - "ok": true, - "result": { - "assignees": { - "$rpc": "undefined" - }, - "baseSha": { - "$rpc": "undefined" - }, - "body": "body", - "checks": [], - "comments": [], - "headSha": "head-sha-1", - "item": { - "assignees": [], - "author": { - "$rpc": "null" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "baseRefName": { - "$rpc": "undefined" - }, - "branchName": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "id": "PR_1", - "labels": [], - "latestReviews": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": { - "$rpc": "undefined" - }, - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "reviewRequests": [], - "state": "open", - "title": "Recorded", - "type": "pr", - "updatedAt": "", - "url": "" - }, - "participants": [], - "pullRequestId": { - "$rpc": "undefined" - } - } } }, "41113a109089": { @@ -761,7 +782,58 @@ "ordinal": 12, "json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"github.prCheckDetails\",\"params\":{\"repo\":\"id:repo-9\",\"checkRunId\":7,\"checkName\":\"build\",\"url\":null}}" }, - "8ad23d6b64f4": { + "9a87ba2ee54f": { + "hosted-review": { + "ok": true, + "result": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksSummary": { + "$rpc": "undefined" + }, + "headSha": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "provider": "github", + "reviewDecision": { + "$rpc": "undefined" + }, + "state": "open", + "status": "pending", + "title": "Recorded", + "updatedAt": "2026-01-01", + "url": "https://x/12" + } + }, + "repo-slug": { + "ok": true, + "result": { + "host": "github.com", + "owner": "orca", + "repo": "orca" + } + } + }, + "9bb9d9b8c502": { + "assignable": { + "ok": true, + "result": [ + { + "avatarUrl": "", + "login": "octocat", + "name": "Octo Cat" + } + ] + }, "check-details": { "ok": true, "result": { @@ -800,6 +872,9 @@ "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -963,48 +1038,7 @@ } } }, - "9a87ba2ee54f": { - "hosted-review": { - "ok": true, - "result": { - "autoMergeAllowed": { - "$rpc": "undefined" - }, - "autoMergeEnabled": { - "$rpc": "undefined" - }, - "checksSummary": { - "$rpc": "undefined" - }, - "headSha": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "provider": "github", - "reviewDecision": { - "$rpc": "undefined" - }, - "state": "open", - "status": "pending", - "title": "Recorded", - "updatedAt": "2026-01-01", - "url": "https://x/12" - } - }, - "repo-slug": { - "ok": true, - "result": { - "host": "github.com", - "owner": "orca", - "repo": "orca" - } - } - }, - "a0d70c59fdd1": { + "a20f0d944ba5": { "name": "github.prForBranch#1", "ordinal": 5, "args": [ @@ -1031,7 +1065,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -1377,28 +1411,6 @@ "ordinal": 14, "json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" }, - "e23eb2e4b033": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ] - } - }, "e97a125cdb88": { "name": "github.prCheckDetails#1", "ordinal": 11, @@ -1578,7 +1590,7 @@ { "id": "pr-for-branch", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -1592,7 +1604,7 @@ { "id": "work-item", "observation": { - "sender": ["191e3c96ad53", "4bf8f27dd319", "a0d70c59fdd1", "471a75cee137"], + "sender": ["191e3c96ad53", "4bf8f27dd319", "a20f0d944ba5", "471a75cee137"], "payloads": ["1f5765918736", "cdbefce64e00", "1554c8f6753b", "0a9f2ff19df4"], "settlements": { "repo-slug": "d89e7b8ce2a0", @@ -1610,7 +1622,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d" ], @@ -1626,9 +1638,9 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033" + "checks": "3d3e04f5c1cb" }, - "state": "3fb2c86ce340", + "state": "026ad16c841b", "effects": [] } }, @@ -1638,7 +1650,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88" @@ -1656,10 +1668,10 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45" }, - "state": "8ad23d6b64f4", + "state": "2709bde96386", "effects": [] } }, @@ -1669,7 +1681,7 @@ "sender": [ "191e3c96ad53", "4bf8f27dd319", - "a0d70c59fdd1", + "a20f0d944ba5", "471a75cee137", "fa4bf991415d", "e97a125cdb88", @@ -1691,11 +1703,11 @@ "hosted-review": "0644012ff2a3", "pr-for-branch": "d01444e13d4c", "work-item": "d036e2bdda12", - "checks": "e23eb2e4b033", + "checks": "3d3e04f5c1cb", "check-details": "1c88fe396b45", "assignable": "a93bcc7122e8" }, - "state": "274a4d26a91b", + "state": "9bb9d9b8c502", "effects": ["0c83b4de61f4"] } } diff --git a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json b/mobile/rpc-foundation/goldens/pr-read-upstream-error.json index ef8ca3e8a1b..04645a816a7 100644 --- a/mobile/rpc-foundation/goldens/pr-read-upstream-error.json +++ b/mobile/rpc-foundation/goldens/pr-read-upstream-error.json @@ -4,6 +4,54 @@ "family": "github.pr-read", "namedDeltas": [], "values": { + "0159703ebadf": { + "name": "github.prForBranch#2", + "ordinal": 3, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": { + "$rpc": "null" + }, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "state": "open" + } + } + } + } + }, "04c85ffba34f": { "pr-for-branch": { "error": "The host sent a reply this app could not read (github.prForBranch)", @@ -37,7 +85,7 @@ "ordinal": 4, "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" }, - "302342a5179d": { + "2df5868d46c4": { "name": "github.prForBranch#1", "ordinal": 1, "args": [ @@ -64,7 +112,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -89,71 +137,7 @@ "ok": false } }, - "67ff0839185a": { - "name": "github.prForBranch#2", - "ordinal": 3, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": { - "$rpc": "null" - }, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-2", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "state": "open" - } - } - } - } - }, - "7c6cc446e5da": { - "name": "github.prForBranch#3", - "ordinal": 6, - "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" - }, - "8a5cb8b66303": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "ok": true, - "result": { - "$rpc": "null" - } - } - }, - "c75314a70300": { + "6ecd2f6475ab": { "name": "github.prForBranch#3", "ordinal": 5, "args": [ @@ -180,7 +164,7 @@ { "name": "options", "value": { - "$rpc": "absent" + "beforeSend": "[local beforeSend]" } } ], @@ -197,6 +181,22 @@ } } }, + "7c6cc446e5da": { + "name": "github.prForBranch#3", + "ordinal": 6, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prForBranch\",\"params\":{\"repo\":\"id:repo-9\",\"branch\":\"feature\",\"linkedPRNumber\":null,\"fallbackPRNumber\":null,\"currentHeadOid\":null}}" + }, + "8a5cb8b66303": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "ok": true, + "result": { + "$rpc": "null" + } + } + }, "fe9c1046b91d": { "status": "fulfilled", "startedAt": 0, @@ -213,7 +213,7 @@ { "id": "upstream", "observation": { - "sender": ["302342a5179d"], + "sender": ["2df5868d46c4"], "payloads": ["1a108e871484"], "settlements": { "upstream": "fe9c1046b91d" @@ -225,7 +225,7 @@ { "id": "malformed", "observation": { - "sender": ["302342a5179d", "67ff0839185a"], + "sender": ["2df5868d46c4", "0159703ebadf"], "payloads": ["1a108e871484", "213941c6e0b6"], "settlements": { "upstream": "fe9c1046b91d", @@ -238,7 +238,7 @@ { "id": "no-pr", "observation": { - "sender": ["302342a5179d", "67ff0839185a", "c75314a70300"], + "sender": ["2df5868d46c4", "0159703ebadf", "6ecd2f6475ab"], "payloads": ["1a108e871484", "213941c6e0b6", "7c6cc446e5da"], "settlements": { "upstream": "fe9c1046b91d", diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json b/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json index e0c74c7d4d9..43d6522e130 100644 --- a/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json +++ b/mobile/rpc-foundation/goldens/pr-sidebar-checks-refused.json @@ -65,91 +65,6 @@ "variant": "worktree-summary" } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, - "4777f063108d": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, "4b26820600b0": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -389,6 +304,91 @@ "status": "pending", "startedAt": 0 }, + "a98f4468b85b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } + } + }, "dcec20ae0055": { "name": "github.prChecks#1", "ordinal": 9, @@ -402,7 +402,7 @@ { "id": "branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -414,7 +414,7 @@ { "id": "pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -426,7 +426,7 @@ { "id": "checks-refused", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "54d7c17a92f3"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "54d7c17a92f3"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "8b09f9d581f7" diff --git a/mobile/rpc-foundation/goldens/pr-sidebar-load.json b/mobile/rpc-foundation/goldens/pr-sidebar-load.json index 63558474a65..13d63a79119 100644 --- a/mobile/rpc-foundation/goldens/pr-sidebar-load.json +++ b/mobile/rpc-foundation/goldens/pr-sidebar-load.json @@ -65,91 +65,6 @@ "variant": "worktree-summary" } }, - "1c1552d03dfc": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "id": "frame-3", - "ok": true, - "result": { - "fetchedAt": 0, - "kind": "found", - "pr": { - "headSha": "head-sha-1", - "mergeable": "MERGEABLE", - "number": 12, - "state": "open", - "title": "Recorded", - "url": "https://x/12" - } - } - } - } - }, - "4777f063108d": { - "name": "github.prForBranch#1", - "ordinal": 6, - "args": [ - { - "name": "method", - "value": "github.prForBranch" - }, - { - "name": "params", - "value": { - "branch": "feature", - "currentHeadOid": { - "$rpc": "null" - }, - "fallbackPRNumber": 12, - "linkedPRNumber": { - "$rpc": "null" - }, - "repo": "id:repo-9" - } - }, - { - "name": "options", - "value": { - "$rpc": "absent" - } - } - ], - "settlement": { - "status": "pending", - "startedAt": 0 - } - }, "4b26820600b0": { "name": "hostedReview.forBranch#1", "ordinal": 3, @@ -188,6 +103,88 @@ "ordinal": 4, "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.show\",\"params\":{\"worktree\":\"id:repo-9::/w\"}}" }, + "734ec9d15b54": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "data": { + "checks": [ + { + "checkRunId": 7, + "conclusion": "success", + "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, + "status": "completed", + "url": { + "$rpc": "null" + }, + "workflowRunId": { + "$rpc": "undefined" + } + } + ], + "checksError": { + "$rpc": "null" + }, + "details": { + "$rpc": "null" + }, + "pr": { + "autoMergeAllowed": { + "$rpc": "undefined" + }, + "autoMergeEnabled": { + "$rpc": "undefined" + }, + "checksStatus": "pending", + "checksSummary": { + "$rpc": "undefined" + }, + "confirmedContainedHeadOid": { + "$rpc": "undefined" + }, + "headDivergedFromMergedPRAtOid": { + "$rpc": "undefined" + }, + "headRefName": { + "$rpc": "undefined" + }, + "headSha": "head-sha-1", + "mergeMethodSettings": { + "$rpc": "undefined" + }, + "mergeQueueRequired": { + "$rpc": "undefined" + }, + "mergeStateStatus": { + "$rpc": "undefined" + }, + "mergeable": "MERGEABLE", + "number": 12, + "prRepo": { + "$rpc": "undefined" + }, + "reviewDecision": { + "$rpc": "undefined" + }, + "stack": { + "$rpc": "undefined" + }, + "state": "open", + "title": "Recorded", + "updatedAt": "", + "url": "https://x/12" + }, + "pushTarget": { + "$rpc": "null" + } + }, + "kind": "ready" + } + }, "7cbf1de78fc1": { "name": "worktree.show#1", "ordinal": 2, @@ -271,83 +268,89 @@ } } }, - "cfed3ed2a0ae": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "data": { - "checks": [ - { - "checkRunId": 7, - "conclusion": "success", - "name": "build", - "status": "completed", - "url": { - "$rpc": "null" - }, - "workflowRunId": { - "$rpc": "undefined" - } - } - ], - "checksError": { - "$rpc": "null" - }, - "details": { - "$rpc": "null" - }, - "pr": { - "autoMergeAllowed": { - "$rpc": "undefined" + "a98f4468b85b": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" }, - "autoMergeEnabled": { - "$rpc": "undefined" + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" }, - "checksStatus": "pending", - "checksSummary": { - "$rpc": "undefined" - }, - "confirmedContainedHeadOid": { - "$rpc": "undefined" - }, - "headDivergedFromMergedPRAtOid": { - "$rpc": "undefined" - }, - "headRefName": { - "$rpc": "undefined" - }, - "headSha": "head-sha-1", - "mergeMethodSettings": { - "$rpc": "undefined" - }, - "mergeQueueRequired": { - "$rpc": "undefined" - }, - "mergeStateStatus": { - "$rpc": "undefined" - }, - "mergeable": "MERGEABLE", - "number": 12, - "prRepo": { - "$rpc": "undefined" - }, - "reviewDecision": { - "$rpc": "undefined" - }, - "stack": { - "$rpc": "undefined" - }, - "state": "open", - "title": "Recorded", - "updatedAt": "", - "url": "https://x/12" - }, - "pushTarget": { - "$rpc": "null" + "repo": "id:repo-9" } }, - "kind": "ready" + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "ccc790f6ce35": { + "name": "github.prForBranch#1", + "ordinal": 6, + "args": [ + { + "name": "method", + "value": "github.prForBranch" + }, + { + "name": "params", + "value": { + "branch": "feature", + "currentHeadOid": { + "$rpc": "null" + }, + "fallbackPRNumber": 12, + "linkedPRNumber": { + "$rpc": "null" + }, + "repo": "id:repo-9" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "fetchedAt": 0, + "kind": "found", + "pr": { + "headSha": "head-sha-1", + "mergeable": "MERGEABLE", + "number": 12, + "state": "open", + "title": "Recorded", + "url": "https://x/12" + } + } + } } }, "dcec20ae0055": { @@ -356,13 +359,16 @@ "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-9\",\"prNumber\":12,\"headSha\":\"head-sha-1\"}}" }, "e169ebaf642b": "unloaded", - "e7df27480ce9": { + "e93235fba8e6": { "data": { "checks": [ { "checkRunId": 7, "conclusion": "success", "name": "build", + "observedHeadSha": { + "$rpc": "undefined" + }, "status": "completed", "url": { "$rpc": "null" @@ -437,7 +443,7 @@ { "id": "branch-hint", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "4777f063108d"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "a98f4468b85b"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3"], "settlements": { "load": "9270aeb7d9c6" @@ -449,7 +455,7 @@ { "id": "pr", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "4fae27394886"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "4fae27394886"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { "load": "9270aeb7d9c6" @@ -461,12 +467,12 @@ { "id": "loaded", "observation": { - "sender": ["07639c4f1e7f", "7cbf1de78fc1", "1c1552d03dfc", "9a7a01989014"], + "sender": ["07639c4f1e7f", "7cbf1de78fc1", "ccc790f6ce35", "9a7a01989014"], "payloads": ["4b26820600b0", "5dbd52d6a1c7", "0e35af4e1fa3", "dcec20ae0055"], "settlements": { - "load": "cfed3ed2a0ae" + "load": "734ec9d15b54" }, - "state": "e7df27480ce9", + "state": "e93235fba8e6", "effects": ["15c9074079de"] } } diff --git a/mobile/rpc-foundation/goldens/tk-item-review-github.json b/mobile/rpc-foundation/goldens/tk-item-review-github.json index f789a691b33..1505ba32bde 100644 --- a/mobile/rpc-foundation/goldens/tk-item-review-github.json +++ b/mobile/rpc-foundation/goldens/tk-item-review-github.json @@ -4,73 +4,6 @@ "family": "tasks.item-review-github", "namedDeltas": [], "values": { - "024b63e57ad7": { - "name": "detailPayload", - "ordinal": 25, - "value": { - "assignees": ["octocat"], - "baseSha": "base-sha", - "body": "body", - "checks": [ - { - "conclusion": "SUCCESS", - "name": "build", - "status": "COMPLETED", - "url": "" - } - ], - "comments": [ - { - "author": "octocat", - "body": "please fix", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": 501, - "isResolved": false, - "line": 12, - "path": "src/index.ts", - "threadId": "thread-1" - }, - { - "author": "octocat", - "body": "a thought", - "createdAt": "2020-01-01T00:00:00.000Z", - "id": "comment-2" - } - ], - "files": [ - { - "additions": 2, - "deletions": 1, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/index.ts", - "status": "modified", - "viewerViewedState": "UNVIEWED" - } - ], - "headSha": "head-sha", - "labels": ["bug"], - "latestReviews": [], - "provider": "github", - "pullRequestId": "PR_kwDO", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" - } - }, "04f768fb79f6": { "name": "actionItem", "ordinal": 6, @@ -158,58 +91,61 @@ "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" } }, - "0bcfcbfb9718": { - "name": "items", - "ordinal": 23, - "value": [ - { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" + "1c3b130f9436": { + "name": "actionItem", + "ordinal": 26, + "value": { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 }, - "title": "A pull request" - } - ] + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } }, "1fc52836dac4": { "name": "itemReviewersDraft", "ordinal": 9, "value": "octocat" }, + "22b1e4293201": { + "name": "mutatingStatus", + "ordinal": 28, + "value": false + }, "26f442c9e2e5": { "name": "detailPayload", "ordinal": 7, @@ -525,19 +461,76 @@ "title": "A pull request" } }, - "6ebf8126530a": { - "name": "github.prChecks#1", - "ordinal": 22, - "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" + "69b4fb187f59": { + "name": "detailPayload", + "ordinal": 27, + "value": { + "assignees": ["octocat"], + "baseSha": "base-sha", + "body": "body", + "checks": [ + { + "conclusion": "SUCCESS", + "name": "build", + "status": "COMPLETED", + "url": "" + } + ], + "comments": [ + { + "author": "octocat", + "body": "please fix", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": 501, + "isResolved": false, + "line": 12, + "path": "src/index.ts", + "threadId": "thread-1" + }, + { + "author": "octocat", + "body": "a thought", + "createdAt": "2020-01-01T00:00:00.000Z", + "id": "comment-2" + } + ], + "files": [ + { + "additions": 2, + "deletions": 1, + "oldPath": { + "$rpc": "undefined" + }, + "path": "src/index.ts", + "status": "modified", + "viewerViewedState": "UNVIEWED" + } + ], + "headSha": "head-sha", + "labels": ["bug"], + "latestReviews": [], + "provider": "github", + "pullRequestId": "PR_kwDO", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "targetKey": "repo-1\u0000owner/repo\u0000pr\u000012" + } }, - "886c60a7e62e": { - "name": "mutatingStatus", - "ordinal": 12, - "value": true - }, - "8b5917d7d93c": { + "6f47b9866251": { "name": "github.prChecks#1", - "ordinal": 20, + "ordinal": 23, "args": [ { "name": "method", @@ -560,6 +553,7 @@ { "name": "options", "value": { + "beforeSend": "[local beforeSend]", "timeoutMs": 30000 } } @@ -569,7 +563,7 @@ "startedAt": 0, "settledAt": 0, "value": { - "id": "frame-2", + "id": "frame-3", "ok": true, "result": [ { @@ -582,65 +576,25 @@ } } }, + "886c60a7e62e": { + "name": "mutatingStatus", + "ordinal": 12, + "value": true + }, "94caa29bceef": { "name": "error", "ordinal": 19, "value": "" }, - "989e0a05a86f": { - "name": "actionItem", - "ordinal": 24, - "value": { - "provider": "github", - "source": { - "checksSummary": { - "failed": 0, - "neutral": 0, - "passed": 1, - "pending": 0, - "state": "success", - "total": 1 - }, - "id": "github:pr:12", - "labels": ["bug"], - "latestReviews": [], - "number": 12, - "prRepo": { - "host": "github.com", - "owner": "owner", - "repo": "repo" - }, - "repoId": "repo-1", - "reviewDecision": { - "$rpc": "null" - }, - "reviewRequests": [ - { - "avatarUrl": { - "$rpc": "null" - }, - "login": "octocat", - "name": { - "$rpc": "null" - } - } - ], - "state": "open", - "type": "pr", - "url": "https://github.com/owner/repo/pull/12" - }, - "title": "A pull request" - } - }, "a17cf032d1cb": { "name": "mutatingStatus", "ordinal": 18, "value": false }, - "acff45feb249": { - "name": "mutatingStatus", - "ordinal": 26, - "value": false + "baa2764f836f": { + "name": "github.prChecks#1", + "ordinal": 24, + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"github.prChecks\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"headSha\":\"head-sha\",\"noCache\":true}}" }, "c29314fc4896": { "name": "items", @@ -681,6 +635,11 @@ } ] }, + "c448fcc040ee": { + "name": "status.get#1", + "ordinal": 22, + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, "c650cf641414": { "name": "itemReviewersDraft", "ordinal": 4, @@ -744,6 +703,93 @@ "ordinal": 13, "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.requestPRReviewers\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"prRepo\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.com\"},\"reviewers\":[\"octocat\"]}}" }, + "e38e4b18b697": { + "name": "items", + "ordinal": 25, + "value": [ + { + "provider": "github", + "source": { + "checksSummary": { + "failed": 0, + "neutral": 0, + "passed": 1, + "pending": 0, + "state": "success", + "total": 1 + }, + "id": "github:pr:12", + "labels": ["bug"], + "latestReviews": [], + "number": 12, + "prRepo": { + "host": "github.com", + "owner": "owner", + "repo": "repo" + }, + "repoId": "repo-1", + "reviewDecision": { + "$rpc": "null" + }, + "reviewRequests": [ + { + "avatarUrl": { + "$rpc": "null" + }, + "login": "octocat", + "name": { + "$rpc": "null" + } + } + ], + "state": "open", + "type": "pr", + "url": "https://github.com/owner/repo/pull/12" + }, + "title": "A pull request" + } + ] + }, + "e6b60387dab2": { + "name": "status.get#1", + "ordinal": 20, + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "undefined" + } + }, + { + "name": "options", + "value": { + "beforeSend": "[local beforeSend]", + "failWhenDisconnected": true, + "timeoutMs": 15000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["github.exact-work-item-target.v1"], + "hostDescriptor": { + "installationId": "recorded" + }, + "runtimeId": "recorded" + } + } + } + }, "eb79a9b3682a": { "status": "fulfilled", "startedAt": 0, @@ -796,8 +842,8 @@ { "id": "checks-settled", "observation": { - "sender": ["cf975363479a", "8b5917d7d93c"], - "payloads": ["d8e1fd46cd19", "6ebf8126530a"], + "sender": ["cf975363479a", "e6b60387dab2", "6f47b9866251"], + "payloads": ["d8e1fd46cd19", "c448fcc040ee", "baa2764f836f"], "settlements": { "mount": "eb79a9b3682a", "reviewers-0": "eb79a9b3682a", @@ -823,10 +869,10 @@ "a17cf032d1cb", "94caa29bceef", "2d8d5e501a0d", - "0bcfcbfb9718", - "989e0a05a86f", - "024b63e57ad7", - "acff45feb249" + "e38e4b18b697", + "1c3b130f9436", + "69b4fb187f59", + "22b1e4293201" ] } } diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json index 7df878d74eb..8b88e75598e 100644 --- a/mobile/rpc-foundation/pilot-scenarios.json +++ b/mobile/rpc-foundation/pilot-scenarios.json @@ -12576,6 +12576,23 @@ ] } }, + { + "complete": "status.get#1", + "site": "pr-check-discovery", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "runtimeId": "recorded", + "hostDescriptor": { + "installationId": "recorded" + }, + "capabilities": ["github.exact-work-item-target.v1"] + } + } + }, { "checkpoint": "checks-settled" } diff --git a/mobile/src/components/pr-sidebar/pr-tab-check-owner.test.ts b/mobile/src/components/pr-sidebar/pr-tab-check-owner.test.ts new file mode 100644 index 00000000000..fbc15106576 --- /dev/null +++ b/mobile/src/components/pr-sidebar/pr-tab-check-owner.test.ts @@ -0,0 +1,119 @@ +import { afterEach, expect, it } from 'vitest' +import { buildPrGateRows } from './pr-tab-gates' +import { markCompletePRCheckOwner } from '../../../../src/shared/github/complete-pr-check-owner' +import type { PRInfo } from '../../../../src/shared/github/pull-request-types' +import { activateMobileUiLocale, mobileI18n } from '../../i18n/mobile-i18n' +const pr: PRInfo = { + number: 42, + title: 'PR', + state: 'open', + url: 'https://github.com/acme/widgets/pull/42', + checksStatus: 'failure', + updatedAt: '2026-11-04', + mergeable: 'UNKNOWN', + headSha: 'head' +} +const checks = [ + { name: 'Build', status: 'completed' as const, conclusion: 'success' as const, url: null } +] +afterEach(() => activateMobileUiLocale('en')) +it.each([ + ['en', '1 check failing'], + ['es', '1 comprobación fallida'] +] as const)( + 'keeps the whole PR blocking with partial passing rows in %s', + async (locale, title) => { + mobileI18n.addResourceBundle( + 'es', + 'translation', + { + pullRequest: { + gates: { + checksFailing_one: '{{count}} comprobación fallida', + checksFailing_other: '{{count}} comprobaciones fallidas' + } + } + }, + true, + true + ) + await activateMobileUiLocale(locale) + const owner = markCompletePRCheckOwner( + { + ...pr, + checksSummary: { + state: 'failure', + total: 101, + passed: 100, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 + } + }, + 'host-epoch' + ) + expect( + buildPrGateRows({ pr: owner, details: null, checks, checksError: null })[0] + ).toMatchObject({ key: 'checks', tone: 'blocking', title, subtitle: null }) + expect( + buildPrGateRows({ pr: owner, details: null, checks, checksError: 'Rows unavailable' })[0].tone + ).toBe('blocking') + // The unchanged host path keeps its existing row-based display. + expect(buildPrGateRows({ pr, details: null, checks, checksError: null })[0].tone).toBe('passed') + } +) +it('does not certify passing rows when complete checks are unavailable', () => { + const owner = markCompletePRCheckOwner( + { ...pr, checksStatus: 'neutral', checksSummary: undefined }, + 'host-epoch' + ) + expect(buildPrGateRows({ pr: owner, details: null, checks, checksError: null })[0].tone).toBe( + 'idle' + ) +}) + +it.each([ + ['en', 'Cancelled'], + ['es', 'Cancelado'] +] as const)('keeps a cancelled owner truthful without detail rows in %s', async (locale, title) => { + mobileI18n.addResourceBundle( + 'es', + 'translation', + { pullRequest: { checkStatus: { cancelled: 'Cancelado' } } }, + true, + true + ) + await activateMobileUiLocale(locale) + const owner = markCompletePRCheckOwner( + { + ...pr, + checksSummary: { + state: 'failure', + total: 1, + passed: 0, + failed: 1, + cancelled: 1, + pending: 0, + neutral: 0 + } + }, + 'host-epoch' + ) + for (const checksError of [null, 'Rows unavailable']) { + expect(buildPrGateRows({ pr: owner, details: null, checks: [], checksError })[0]).toMatchObject( + { title, tone: 'idle', subtitle: null } + ) + } + expect( + buildPrGateRows({ + pr: owner, + details: null, + checks: [{ name: 'Build', status: 'completed', conclusion: 'cancelled', url: null }], + checksError: null + })[0].subtitle + ).toBeTruthy() + expect( + buildPrGateRows({ pr, details: null, checks: [], checksError: null })[0].subtitle + ).toBeNull() +}) diff --git a/mobile/src/components/pr-sidebar/pr-tab-gates.ts b/mobile/src/components/pr-sidebar/pr-tab-gates.ts index 231191c0ab2..1e37750a925 100644 --- a/mobile/src/components/pr-sidebar/pr-tab-gates.ts +++ b/mobile/src/components/pr-sidebar/pr-tab-gates.ts @@ -1,3 +1,5 @@ +import { isCompletePRCheckOwner } from '../../../../src/shared/github/complete-pr-check-owner' +import { getProviderChecksOutcome } from '../../../../src/shared/source-control/checks/provider-check-summary' import type { PRCheckDetail } from '../../../../src/shared/github/check-types' import type { PRInfo } from '../../../../src/shared/github/pull-request-types' import type { GitHubWorkItemDetails } from '../../../../src/shared/github/work-item-types' @@ -34,16 +36,17 @@ export function buildPrGateRows(input: GateInput): PrGateRow[] { // Null details means still loading; a placeholder means the read failed. const detailsLoading = input.details === null return [ - checksGate(input.checks, input.checksError), + checksGate(input.checks, input.checksError, input.pr), threadsGate(details, detailsLoading, input.botAuthorOverrides), approvalsGate(input.pr, details, detailsLoading), conflictsGate(input.pr, details?.item.baseRefName ?? null) ] } -function checksGate(checks: PRCheckDetail[], checksError: string | null): PrGateRow { +function checksGate(checks: PRCheckDetail[], checksError: string | null, pr: PRInfo): PrGateRow { const base = { key: 'checks', target: 'checks' } as const - if (checksError !== null) { + const complete = isCompletePRCheckOwner(pr) + if ((!complete && checksError !== null) || (complete && !pr.checksSummary)) { return { ...base, tone: 'idle', @@ -51,23 +54,30 @@ function checksGate(checks: PRCheckDetail[], checksError: string | null): PrGate subtitle: checksError } } + const ownerSummary = complete ? pr.checksSummary : undefined const broken = checks.filter((check) => checkOutcome(check) === 'failure') - if (broken.length > 0) { + const brokenCount = ownerSummary + ? ownerSummary.failed - (ownerSummary.cancelled ?? 0) + : broken.length + if (brokenCount > 0) { return { ...base, tone: 'blocking', title: - broken.length === 1 + brokenCount === 1 ? translate('pullRequest.gates.checksFailing_one', '{{count}} check failing', { - count: broken.length + count: brokenCount }) : translate('pullRequest.gates.checksFailing_other', '{{count}} checks failing', { - count: broken.length + count: brokenCount }), - subtitle: broken.map((check) => check.name).join(', ') + subtitle: broken.length > 0 ? broken.map((check) => check.name).join(', ') : null } } - const summary = summarizePRChecks(checks) + const rowSummary = summarizePRChecks(checks) + const summary = ownerSummary + ? { ...ownerSummary, outcome: getProviderChecksOutcome(ownerSummary), label: rowSummary.label } + : rowSummary if (summary.pending > 0) { return { ...base, @@ -93,7 +103,7 @@ function checksGate(checks: PRCheckDetail[], checksError: string | null): PrGate ...base, tone: 'idle', title: translate('pullRequest.checkStatus.cancelled', 'Cancelled'), - subtitle: summary.label + subtitle: checks.length > 0 ? rowSummary.label : null } } if (summary.total === 0) { diff --git a/mobile/src/session/github-pr-check-reply-schema.test.ts b/mobile/src/session/github-pr-check-reply-schema.test.ts index 7e85e13cf48..c7f243c61d8 100644 --- a/mobile/src/session/github-pr-check-reply-schema.test.ts +++ b/mobile/src/session/github-pr-check-reply-schema.test.ts @@ -1,3 +1,5 @@ +import { prChecksSchema } from './github-pr-entity-reply-schema' +import { detailCheckListSchema } from '../tasks/task-provider-entity-reply-schema' import { describe, expect, it } from 'vitest' import { githubPrCheckDetailsSchema } from './github-pr-check-reply-schema' @@ -30,3 +32,25 @@ describe('optional job log outcome', () => { } ) }) + +it('preserves only immutable optional row identity through both existing readers without losing old or malformed rows', () => { + const payload = JSON.parse( + JSON.stringify([ + { + name: 'proved', + status: 'completed', + conclusion: 'action_required', + observedHeadSha: 'a'.repeat(40) + }, + { name: 'legacy', status: 'completed', conclusion: 'success' }, + { name: 'malformed', status: 'completed', conclusion: 'success', observedHeadSha: 'branch' } + ]) + ) + for (const schema of [prChecksSchema, detailCheckListSchema]) { + const checks = schema.parse(payload) + expect(checks).toHaveLength(3) + expect(checks[0]).toMatchObject({ name: 'proved', observedHeadSha: 'a'.repeat(40) }) + expect(checks[1].observedHeadSha).toBeUndefined() + expect(checks[2].observedHeadSha).toBeUndefined() + } +}) diff --git a/mobile/src/session/github-pr-entity-reply-schema.ts b/mobile/src/session/github-pr-entity-reply-schema.ts index 874c40f3a57..a6bf7c541e9 100644 --- a/mobile/src/session/github-pr-entity-reply-schema.ts +++ b/mobile/src/session/github-pr-entity-reply-schema.ts @@ -1,3 +1,4 @@ +import { normalizePRCheckHeadSha } from '../../../src/shared/github/pr-check-head' import { z } from 'zod' import { openEnum, salvagedOptional, salvagingArray } from '../../../src/shared/zod-salvage' import type { GitHubReaction, PRComment } from '../../../src/shared/github/comment-types' @@ -236,7 +237,8 @@ const checkDetailSchema = z conclusion: salvagedOptional('conclusion', z.enum(CHECK_RUN_CONCLUSION)), url: prText('url'), checkRunId: prCount('checkRunId'), - workflowRunId: prCount('workflowRunId') + workflowRunId: prCount('workflowRunId'), + observedHeadSha: z.unknown().optional().transform(normalizePRCheckHeadSha) }) .transform((check): PRCheckDetail => ({ name: check.name, @@ -244,7 +246,8 @@ const checkDetailSchema = z conclusion: check.conclusion ?? null, url: check.url ?? null, checkRunId: check.checkRunId, - workflowRunId: check.workflowRunId + workflowRunId: check.workflowRunId, + observedHeadSha: check.observedHeadSha })) export const prChecksSchema = salvagingArray(checkDetailSchema) diff --git a/mobile/src/session/github-pr-rpc.ts b/mobile/src/session/github-pr-rpc.ts index 64a50404658..a55847c4099 100644 --- a/mobile/src/session/github-pr-rpc.ts +++ b/mobile/src/session/github-pr-rpc.ts @@ -1,3 +1,9 @@ +import { + GITHUB_CONNECTION_CHANGED, + githubOperationResponse +} from '../transport/github-target-invocation' +import { captureMobilePRCheckContract } from '../transport/pr-check-observation-contract' +import { acceptPRCheckObservation } from '../../../src/shared/github/complete-pr-check-owner' import type { RpcClient } from '../transport/rpc-client' import { withGitHubTargetOperation } from '../tasks/github-work-item-operation' import { requireGitHubWorkItemTargetDetails } from '../../../src/shared/github/work-item-target' @@ -95,7 +101,7 @@ export function fetchHostedReviewForBranch( } // Raise decoded upstream-error here so the sidebar retains host text; it is not a protocol decode failure. -export function fetchPRForBranch( +export async function fetchPRForBranch( client: RpcOperationSender, worktreeId: string, args: { @@ -103,24 +109,70 @@ export function fetchPRForBranch( linkedPRNumber?: number | null fallbackPRNumber?: number | null currentHeadOid?: string | null + refresh?: boolean } ): Promise> { - return settleGithubPrRead( - { - operation: githubPrForBranchRead.operation, - interpret: (reply) => resolveGithubPrForBranchOutcome(githubPrForBranchRead.interpret(reply)) - }, - () => - githubPrForBranchRead.request( - client, - githubPrRequestParams(githubPrForBranchRead.operation.method, worktreeId, { - branch: args.branch, - linkedPRNumber: args.linkedPRNumber ?? null, - fallbackPRNumber: args.fallbackPRNumber ?? null, - currentHeadOid: args.currentHeadOid ?? null - }) + return observe(true, args.refresh === true) + async function observe( + adopt: boolean, + refresh = false + ): Promise> { + const contract = await captureMobilePRCheckContract( + client, + { + repo: mobileRepoSelectorFromWorktreeId(worktreeId) + }, + refresh + ) + try { + let sourceMismatch = false + const result = await settleGithubPrRead( + { + operation: githubPrForBranchRead.operation, + interpret: (reply) => + resolveGithubPrForBranchOutcome(githubPrForBranchRead.interpret(reply)) + }, + async () => { + const reply = await githubPrForBranchRead.request( + contract.client ?? client, + githubPrRequestParams(githubPrForBranchRead.operation.method, worktreeId, { + branch: args.branch, + linkedPRNumber: args.linkedPRNumber ?? null, + fallbackPRNumber: args.fallbackPRNumber ?? null, + currentHeadOid: args.currentHeadOid ?? null + }), + contract.options + ) + sourceMismatch = + !reply.ok && + ['runtime_source_mismatch', 'runtime_source_unverifiable'].includes(reply.error.code) + return githubOperationResponse(reply) + } ) - ) + if (adopt && sourceMismatch && contract.routeCurrent()) { + return observe(false, true) + } + if (!contract.current()) { + if (adopt && !contract.complete && contract.routeCurrent()) { + return observe(false) + } + return { ok: false, error: GITHUB_CONNECTION_CHANGED } + } + if (result.ok && result.result && contract.complete) { + return { + ok: true, + result: acceptPRCheckObservation(result.result, null, { + scope: contract.scope!, + complete: true, + current: contract.current() + })! + } + } + return result + } finally { + contract.retire() + } + } } function resolveGithubPrForBranchOutcome(outcome: GitHubPrForBranchOutcome | null): PRInfo | null { diff --git a/mobile/src/session/mobile-pr-sidebar-state.ts b/mobile/src/session/mobile-pr-sidebar-state.ts index b66e38c9eb6..5345a484f58 100644 --- a/mobile/src/session/mobile-pr-sidebar-state.ts +++ b/mobile/src/session/mobile-pr-sidebar-state.ts @@ -80,6 +80,7 @@ export type PrSidebarLoadDeps = { linkedPRNumber?: number | null fallbackPRNumber?: number | null currentHeadOid?: string | null + refresh?: boolean } ) => Promise> fetchWorkItemDetails: ( @@ -131,6 +132,7 @@ export async function loadPrSidebarData( branch: string headSha?: string | null prRepo?: GitHubPrRepoSlug | null + refresh?: boolean } ): Promise { try { @@ -148,7 +150,8 @@ export async function loadPrSidebarData( branch: args.branch, linkedPRNumber, fallbackPRNumber: linkedPRNumber === null ? branchHint : null, - currentHeadOid: requestHeadOid + currentHeadOid: requestHeadOid, + ...(args.refresh ? { refresh: true } : {}) }) let linkedPR = link.linkedPR let prOutcome = await fetchPR(linkedPR) diff --git a/mobile/src/session/pr-check-owner-read.test.ts b/mobile/src/session/pr-check-owner-read.test.ts new file mode 100644 index 00000000000..7fc1a7587ef --- /dev/null +++ b/mobile/src/session/pr-check-owner-read.test.ts @@ -0,0 +1,141 @@ +import { expect, it, vi } from 'vitest' +import { fetchPRForBranch } from './github-pr-rpc' +import { GITHUB_CONNECTION_CHANGED } from '../transport/github-target-invocation' +import type { RpcClient, SendRequestOptions } from '../transport/rpc-client' +import type { RpcResponse } from '../transport/types' +import { recordRuntimeStatusProbe } from '../transport/runtime-status-probe' +import { isCompletePRCheckOwner } from '../../../src/shared/github/complete-pr-check-owner' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as complete } from '../../../src/shared/source-control/runtime/source-control-runtime-capabilities' +const status = (runtimeId: string) => ({ + runtimeId, + hostDescriptor: { installationId: 'host' }, + capabilities: [complete] +}) +const pr = { + number: 42, + state: 'open', + url: 'https://github.com/acme/widgets/pull/42', + headSha: 'h1', + checksStatus: 'failure', + checksSummary: { state: 'failure', total: 101, passed: 100, failed: 1, pending: 0, neutral: 0 } +} + +it.each(['adoption', 'restart'])( + 'makes one fresh exact read after %s and settles a complete owner', + async (mode) => { + let reads = 0 + const sendRequest = vi.fn(async (method: string): Promise => { + if (method === 'status.get') { + return { id: 'status', ok: true, result: status(mode === 'restart' ? 'r2' : 'r1') } + } + reads++ + if (reads === 1 && mode === 'restart') { + return { + id: 'pr', + ok: false, + error: { code: 'runtime_source_mismatch', message: 'source changed' } + } + } + if (reads === 1 && mode === 'adoption') { + recordRuntimeStatusProbe(client, status('r1')) + } + return { id: 'pr', ok: true, result: pr } + }) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: supplies the request and connected invocation lifecycle this read uses. + const client = { + sendRequest, + getState: () => 'connected', + getGeneration: () => 1, + getLastConnectedAt: () => 1, + onStateChange: () => () => {} + } as unknown as RpcClient + recordRuntimeStatusProbe(client, mode === 'restart' ? status('r1') : null) + const result = await fetchPRForBranch(client, 'worktree', { branch: 'feature' }) + expect(result.ok && result.result && isCompletePRCheckOwner(result.result)).toBe(true) + expect(reads).toBe(2) + expect(sendRequest.mock.calls.filter(([method]) => method === 'status.get')).toHaveLength( + mode === 'restart' ? 1 : 0 + ) + } +) + +function unknownReadSource() { + const probe = Promise.withResolvers() + const sendRequest = vi.fn( + (method: string, _params?: unknown, _options?: SendRequestOptions): Promise => + method === 'status.get' ? probe.promise : Promise.resolve({ id: 'pr', ok: true, result: pr }) + ) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: supplies the connected request lifecycle used by production PR reads. + const client = { + sendRequest, + getState: () => 'connected', + getGeneration: () => 1, + getLastConnectedAt: () => 1, + onStateChange: () => () => {} + } as unknown as RpcClient + return { client, probe, sendRequest } +} + +it('settles an ordinary unknown-host PR while discovery is pending and never certifies that old reply', async () => { + const source = unknownReadSource() + const first = await fetchPRForBranch(source.client, 'repo-9::/w', { branch: 'feature' }) + expect(first).toMatchObject({ + ok: true, + result: { number: 42, checksStatus: 'failure', headSha: 'h1' } + }) + expect(first.ok && first.result && isCompletePRCheckOwner(first.result)).toBe(false) + expect(source.sendRequest).toHaveBeenCalledWith( + 'github.prForBranch', + { + repo: 'id:repo-9', + branch: 'feature', + linkedPRNumber: null, + fallbackPRNumber: null, + currentHeadOid: null + }, + expect.objectContaining({ beforeSend: expect.any(Function) }) + ) + const discovery = source.sendRequest.mock.calls.find(([method]) => method === 'status.get')! + expect(discovery).toEqual([ + 'status.get', + undefined, + { timeoutMs: 15_000, failWhenDisconnected: true, beforeSend: expect.any(Function) } + ]) + expect(() => discovery[2]!.beforeSend!()).not.toThrow() + source.probe.resolve({ id: 'status', ok: true, result: status('r1') }) + await vi.waitFor(() => { + expect(() => discovery[2]!.beforeSend!()).toThrow(GITHUB_CONNECTION_CHANGED) + }) + expect(first.ok && first.result && isCompletePRCheckOwner(first.result)).toBe(false) + const fresh = await fetchPRForBranch(source.client, 'repo-9::/w', { branch: 'feature' }) + expect(fresh).toMatchObject({ + ok: true, + result: { number: 42, checksSummary: { total: 101, passed: 100, failed: 1 } } + }) + expect(fresh.ok && fresh.result && isCompletePRCheckOwner(fresh.result)).toBe(true) +}) + +it.each(['rejected', 'refused'])( + 'keeps ordinary legacy PR reads useful after discovery is %s', + async (outcome) => { + const source = unknownReadSource() + const first = await fetchPRForBranch(source.client, 'repo-9::/w', { branch: 'feature' }) + expect(first).toMatchObject({ ok: true, result: { number: 42, checksStatus: 'failure' } }) + const discovery = source.sendRequest.mock.calls.find(([method]) => method === 'status.get')! + if (outcome === 'rejected') { + source.probe.reject(new Error('transport unavailable')) + } else { + source.probe.resolve({ + id: 'status', + ok: false, + error: { code: 'refused', message: 'refused' } + }) + } + await vi.waitFor(() => { + expect(() => discovery[2]!.beforeSend!()).toThrow(GITHUB_CONNECTION_CHANGED) + }) + const next = await fetchPRForBranch(source.client, 'repo-9::/w', { branch: 'feature' }) + expect(next).toMatchObject({ ok: true, result: { number: 42, checksStatus: 'failure' } }) + expect(next.ok && next.result && isCompletePRCheckOwner(next.result)).toBe(false) + } +) diff --git a/mobile/src/session/pr-sidebar-load-result.ts b/mobile/src/session/pr-sidebar-load-result.ts index 1809a5b6e2b..bf7d5b6c201 100644 --- a/mobile/src/session/pr-sidebar-load-result.ts +++ b/mobile/src/session/pr-sidebar-load-result.ts @@ -1,3 +1,7 @@ +import { + completePRCheckOwnerScope, + acceptPRCheckObservation +} from '../../../src/shared/github/complete-pr-check-owner' import { useCallback, useRef } from 'react' import { prSidebarResourceKey, type PrSidebarState } from './mobile-pr-sidebar-state' @@ -20,6 +24,25 @@ export function settleLoadedPr( next: PrSidebarState, background: boolean ): { settled: PrSidebarState; result: 'applied' | 'failed' } { + if ( + accepted.kind === 'ready' && + next.kind === 'ready' && + completePRCheckOwnerScope(next.data.pr) !== undefined && + completePRCheckOwnerScope(next.data.pr) === completePRCheckOwnerScope(accepted.data.pr) && + !next.data.pr.checksSummary + ) { + next = { + ...next, + data: { + ...next.data, + pr: acceptPRCheckObservation(next.data.pr, accepted.data.pr, { + scope: completePRCheckOwnerScope(next.data.pr)!, + complete: true, + current: true + })! + } + } + } if (!background || !pollChecksReadFailed(accepted, next)) { return { settled: next, result: 'applied' } } diff --git a/mobile/src/session/use-mobile-pr-sidebar-controller.ts b/mobile/src/session/use-mobile-pr-sidebar-controller.ts index 2d5cf193d94..71da35022b9 100644 --- a/mobile/src/session/use-mobile-pr-sidebar-controller.ts +++ b/mobile/src/session/use-mobile-pr-sidebar-controller.ts @@ -164,7 +164,8 @@ export function useMobilePrSidebarController(input: PrSidebarControllerInput) { if (!keepVisible) { publishState({ kind: 'loading' }) } - const next = await loadPrSidebarData(deps, { worktreeId, branch, headSha }) + const refresh = !options?.background + const next = await loadPrSidebarData(deps, { worktreeId, branch, headSha, refresh }) if (!owner.live || !shouldApplyResult(seq, owner.loadSeq)) { return 'stale' } diff --git a/mobile/src/tasks/mobile-task-pr-check-refresh.test.ts b/mobile/src/tasks/mobile-task-pr-check-refresh.test.ts new file mode 100644 index 00000000000..905ea47ddff --- /dev/null +++ b/mobile/src/tasks/mobile-task-pr-check-refresh.test.ts @@ -0,0 +1,275 @@ +import { expect, it, vi } from 'vitest' +import { refreshMobileTaskPRChecks } from './mobile-task-pr-check-refresh' +import { item as makeItem } from './github-task-identity.test-fixture' +import { githubTaskKey } from './github-task-identity' +import { readRuntimeStatusProbe, recordRuntimeStatusProbe } from '../transport/runtime-status-probe' +import type { RpcClient, SendRequestOptions } from '../transport/rpc-client' +import type { RpcResponse } from '../transport/types' +import type { ActionableTaskItem, TaskItem } from './mobile-tasks-project-workspace-types' +import type { DetailPayload } from './mobile-tasks-provider-detail-types' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as complete } from '../../../src/shared/source-control/runtime/source-control-runtime-capabilities' +import { isCompletePRCheckOwner } from '../../../src/shared/github/complete-pr-check-owner' + +const failure = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + pending: 0, + neutral: 0 +} + +it.each(['owner', 'rows', 'adoption'])( + 'publishes the other refresh result when %s fails', + async (fails) => { + const item = makeItem('acme') + const source = { ...item.source, headSha: 'h1' } + const selected = { ...item, source } + let action: ActionableTaskItem | null = selected + let items: TaskItem[] = [selected] + let details: DetailPayload | null = { + provider: 'github', + targetKey: githubTaskKey(source), + body: '', + labels: [], + assignees: [], + comments: [], + reviewRequests: [], + latestReviews: [], + files: [], + checks: [], + headSha: 'h1' + } + const sendRequest = vi.fn(async (method: string) => { + if (method === 'status.get') { + return { + id: 's', + ok: true as const, + result: { + runtimeId: 'r1', + hostDescriptor: { installationId: 'host' }, + capabilities: [complete] + } + } + } + if (method === 'github.workItemByOwnerRepo') { + if (fails === 'owner') { + throw new Error('owner failed') + } + return { id: 'o', ok: true as const, result: { ...source, checksSummary: failure } } + } + if (fails === 'rows') { + throw new Error('rows failed') + } + return { + id: 'c', + ok: true as const, + result: [{ name: 'Build', status: 'completed', conclusion: 'success', url: null }] + } + }) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: supplies the connected request and invocation lifecycle used by this refresh. + const client = { + sendRequest, + getState: () => 'connected', + getGeneration: () => 1, + getLastConnectedAt: () => 1, + onStateChange: () => () => {} + } as unknown as RpcClient + if (fails !== 'adoption') { + recordRuntimeStatusProbe(client, { + runtimeId: 'r1', + hostDescriptor: { installationId: 'host' }, + capabilities: [complete] + }) + } + const finish = vi.fn() + await refreshMobileTaskPRChecks( + { + client, + detailPayload: details, + tryBeginMutation: () => finish, + setError: vi.fn(), + claimPublication: () => () => true, + setActionItem: (update) => { + action = typeof update === 'function' ? update(action) : update + }, + setItems: (update) => { + items = typeof update === 'function' ? update(items) : update + }, + setDetailPayload: (update) => { + details = typeof update === 'function' ? update(details) : update + } + }, + selected + ) + expect(finish).toHaveBeenCalledOnce() + if (fails !== 'owner') { + expect( + sendRequest.mock.calls.filter(([method]) => method === 'github.workItemByOwnerRepo') + ).toHaveLength(1) + expect(items[0].provider === 'github' && items[0].source.checksSummary).toEqual(failure) + } else { + expect(details?.provider === 'github' && details.checks).toHaveLength(1) + expect(action?.provider === 'github' && isCompletePRCheckOwner(action.source)).toBe(true) + expect(action?.provider === 'github' && action.source.checksSummary).toBeUndefined() + } + } +) + +it.each(['reject', 'refuse', 'unknown', 'retired-selection', 'retired-owner'])( + 'settles unknown-host refresh independently of rows: %s', + async (outcome) => { + const item = makeItem('acme') + const selected = { + ...item, + source: { + ...item.source, + headSha: 'h1', + checksSummary: { + state: 'success' as const, + total: 1, + passed: 1, + failed: 0, + pending: 0, + neutral: 0 + } + } + } + let action: ActionableTaskItem | null = selected + let items: TaskItem[] = [selected] + let details: DetailPayload | null = { + provider: 'github', + targetKey: githubTaskKey(selected.source), + body: '', + labels: [], + assignees: [], + comments: [], + reviewRequests: [], + latestReviews: [], + files: [], + checks: [{ name: 'Previous', status: 'completed', conclusion: 'success', url: null }], + headSha: 'h1' + } + const status = Promise.withResolvers() + const rows = Promise.withResolvers() + const owner = Promise.withResolvers() + const rowsStarted = Promise.withResolvers() + const ownerStarted = Promise.withResolvers() + const sendRequest = vi.fn( + async (method: string, _params?: unknown, _options?: SendRequestOptions) => { + if (method === 'status.get') { + return status.promise + } + if (method === 'github.workItemByOwnerRepo') { + ownerStarted.resolve() + return owner.promise + } + rowsStarted.resolve() + return rows.promise + } + ) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: connected fixture supplies the request and invocation lifecycle exercised below. + const client = { + sendRequest, + getState: () => 'connected', + getGeneration: () => 1, + getLastConnectedAt: () => 1, + onStateChange: () => () => {} + } as unknown as RpcClient + let current = true + const finish = vi.fn() + const setError = vi.fn() + const pending = refreshMobileTaskPRChecks( + { + client, + detailPayload: details, + tryBeginMutation: () => finish, + setError, + claimPublication: () => () => current, + setActionItem: (update) => { + action = typeof update === 'function' ? update(action) : update + }, + setItems: (update) => { + items = typeof update === 'function' ? update(items) : update + }, + setDetailPayload: (update) => { + details = typeof update === 'function' ? update(details) : update + } + }, + selected + ) + await rowsStarted.promise + expect(finish).not.toHaveBeenCalled() + if (outcome === 'unknown') { + rows.resolve({ + id: 'c', + ok: true, + result: [{ name: 'Build', status: 'completed', conclusion: 'failure', url: null }] + }) + await pending + expect( + sendRequest.mock.calls.filter(([method]) => method === 'github.workItemByOwnerRepo') + ).toHaveLength(0) + expect(items[0].provider === 'github' && items[0].source.checksSummary?.state).toBe('failure') + status.resolve({ id: 's', ok: true, result: { capabilities: [] } }) + } else { + status.resolve({ + id: 's', + ok: true, + result: { + runtimeId: 'r1', + hostDescriptor: { installationId: 'host' }, + capabilities: [complete] + } + }) + await vi.waitFor(() => + expect(readRuntimeStatusProbe(client)?.capabilities).toEqual([complete]) + ) + if (outcome === 'retired-selection') { + current = false + } + if (outcome === 'refuse') { + rows.resolve({ id: 'c', ok: false, error: { code: 'UNAVAILABLE', message: 'rows failed' } }) + } else { + rows.reject(new Error('rows failed')) + } + if (outcome !== 'retired-selection') { + await ownerStarted.promise + if (outcome === 'retired-owner') { + current = false + } + owner.resolve({ id: 'o', ok: true, result: { ...selected.source, checksSummary: failure } }) + } + await pending + const requests = sendRequest.mock.calls.filter( + ([method]) => method === 'github.workItemByOwnerRepo' + ) + if (outcome === 'retired-selection') { + expect(requests).toHaveLength(0) + expect(setError.mock.calls).toEqual([['']]) + } else { + expect(requests).toHaveLength(1) + expect(requests[0][1]).toMatchObject({ + repo: 'id:clone', + owner: 'acme', + ownerRepo: 'widgets', + host: 'github.corp', + number: 93, + type: 'pr' + }) + expect(requests[0][2]?.envelope?.expectedRuntimeSource).toEqual({ + sourceId: 'host', + runtimeId: 'r1' + }) + expect(setError.mock.calls).toEqual([[''], ['rows failed']]) + } + const expected = outcome.startsWith('retired') ? selected.source.checksSummary : failure + expect(action?.provider === 'github' && action.source.checksSummary).toEqual(expected) + expect(items[0].provider === 'github' && items[0].source.checksSummary).toEqual(expected) + expect(details?.provider === 'github' && details.checks).toEqual([ + { name: 'Previous', status: 'completed', conclusion: 'success', url: null } + ]) + } + expect(finish).toHaveBeenCalledOnce() + } +) diff --git a/mobile/src/tasks/mobile-task-pr-check-refresh.ts b/mobile/src/tasks/mobile-task-pr-check-refresh.ts new file mode 100644 index 00000000000..c9a724580ac --- /dev/null +++ b/mobile/src/tasks/mobile-task-pr-check-refresh.ts @@ -0,0 +1,205 @@ +import type { GitHubWorkItem } from '../../../src/shared/github/work-item-types' +import { matchesGitHubWorkItemTarget } from '../../../src/shared/github/work-item-target' +import { acceptPRCheckObservation } from '../../../src/shared/github/complete-pr-check-owner' +import { captureMobilePRCheckContract } from '../transport/pr-check-observation-contract' +import { githubWorkItemBySlugRead } from './mobile-task-source-search-operations' +import { githubTaskKey, sameGitHubTask, requireGitHubTaskTarget } from './github-task-identity' +import { buildGitHubCheckSummary } from './github-check-summary' +import type { TaskItem } from './mobile-tasks-project-workspace-types' +import { githubPullRequestChecksRead } from './mobile-task-item-state-operations' +import type { HostedCommentReviewActionsInput } from './use-mobile-tasks-hosted-comment-review-actions' + +type RefreshModel = Pick< + HostedCommentReviewActionsInput, + | 'client' + | 'detailPayload' + | 'tryBeginMutation' + | 'setError' + | 'claimPublication' + | 'setDetailPayload' + | 'setActionItem' + | 'setItems' +> + +export async function refreshMobileTaskPRChecks( + model: RefreshModel, + item: Extract +): Promise { + const { + client, + detailPayload, + tryBeginMutation, + setError, + claimPublication, + setDetailPayload, + setActionItem, + setItems + } = model + if (!client || item.source.type !== 'pr') { + return + } + const finish = tryBeginMutation() + if (!finish) { + return + } + setError('') + const selected = claimPublication(item, detailPayload) + const requestedHead = detailPayload?.provider === 'github' ? detailPayload.headSha : undefined + let contract = await captureMobilePRCheckContract( + client, + { repo: `id:${item.source.repoId}` }, + true + ) + const current = () => selected() && contract.current() + const publish = (owner: GitHubWorkItem | null) => { + const update = (source: typeof item.source) => + acceptPRCheckObservation( + { + ...source, + headSha: owner?.headSha ?? source.headSha, + checksSummary: owner?.checksSummary + }, + source, + { scope: contract.scope!, complete: true, current: current(), trusted: owner !== null } + ) ?? source + setActionItem((prior) => + sameGitHubTask(prior, item) ? { ...prior, source: update(prior.source) } : prior + ) + setItems((prior) => + prior.map((candidate) => + sameGitHubTask(candidate, item) + ? { ...candidate, source: update(candidate.source) } + : candidate + ) + ) + if (owner) { + setDetailPayload((prior) => + prior?.provider === 'github' && prior.targetKey === githubTaskKey(item.source) + ? { + ...prior, + headSha: owner.headSha, + checks: prior.headSha === owner.headSha ? prior.checks : [] + } + : prior + ) + } + } + try { + const repository = requireGitHubTaskTarget(item.source).repository + const readOwner = async (): Promise => { + try { + const reply = await githubWorkItemBySlugRead.request( + contract.client ?? client, + { + repo: `id:${item.source.repoId}`, + owner: repository.owner, + ownerRepo: repository.repo, + host: repository.host, + number: item.source.number, + type: 'pr' + }, + contract.options + ) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: this existing lookup parser preserves provider fields; exact identity is validated below before acceptance. + const observed = githubWorkItemBySlugRead.interpret(reply) as GitHubWorkItem | null + if ( + matchesGitHubWorkItemTarget(observed, { + repository, + type: 'pr', + number: item.source.number + }) + ) { + return observed + } + } catch { + /* Rows remain independently useful when the complete owner is unavailable. */ + } + return null + } + let owner: GitHubWorkItem | null = null + if (contract.complete) { + owner = await readOwner() + if (!current()) { + return + } + publish(owner) + } + let checks: ReturnType | undefined + try { + const reply = await githubPullRequestChecksRead.request( + contract.client ?? client, + { + repo: `id:${item.source.repoId}`, + prNumber: item.source.number, + prRepo: repository, + headSha: owner?.headSha ?? requestedHead, + noCache: true + }, + { timeoutMs: 30_000, ...contract.options } + ) + checks = githubPullRequestChecksRead.interpret(reply) + } catch (error) { + if (selected() && contract.routeCurrent()) { + setError(error instanceof Error ? error.message : 'Failed to refresh checks') + } + } + if (!selected() || !contract.routeCurrent()) { + return + } + if (checks) { + const returnedChecks = checks + setDetailPayload((prior) => + prior?.provider === 'github' && prior.targetKey === githubTaskKey(item.source) + ? { ...prior, checks: returnedChecks } + : prior + ) + } + if (!contract.complete && !current() && selected() && contract.routeCurrent()) { + const previous = contract + const replacement = await captureMobilePRCheckContract(client, { + repo: `id:${item.source.repoId}` + }) + if (!selected() || !previous.routeCurrent() || !replacement.current()) { + replacement.retire() + return + } + contract = replacement + previous.retire() + if (contract.complete) { + owner = await readOwner() + if (current()) { + publish(owner) + } + } + } + if (checks && !contract.complete && current()) { + const summary = buildGitHubCheckSummary(checks) + const update = (source: typeof item.source) => ({ + ...source, + checksSummary: + requestedHead !== undefined && + source.headSha === requestedHead && + source.checksSummary?.state === summary.state + ? source.checksSummary + : summary + }) + setActionItem((prior) => + sameGitHubTask(prior, item) ? { ...prior, source: update(prior.source) } : prior + ) + setItems((prior) => + prior.map((candidate) => + sameGitHubTask(candidate, item) + ? { ...candidate, source: update(candidate.source) } + : candidate + ) + ) + } + } catch (error) { + if (current()) { + setError(error instanceof Error ? error.message : 'Failed to refresh checks') + } + } finally { + contract.retire() + finish() + } +} diff --git a/mobile/src/tasks/task-provider-entity-reply-schema.ts b/mobile/src/tasks/task-provider-entity-reply-schema.ts index f0786b62682..9495f4f636c 100644 --- a/mobile/src/tasks/task-provider-entity-reply-schema.ts +++ b/mobile/src/tasks/task-provider-entity-reply-schema.ts @@ -1,3 +1,4 @@ +import { normalizePRCheckHeadSha } from '../../../src/shared/github/pr-check-head' import { z } from 'zod' import type { GitHubPRFile } from '../../../src/shared/github/pull-request-types' import { hostUnionArms, salvagedOptional, salvagingArray } from '../../../src/shared/zod-salvage' @@ -62,7 +63,8 @@ export const detailCheckListSchema = salvagingArray( name: z.string(), status: z.string(), conclusion: prNullableText('conclusion'), - url: prNullableText('url') + url: prNullableText('url'), + observedHeadSha: z.unknown().optional().transform(normalizePRCheckHeadSha) }) ) diff --git a/mobile/src/tasks/use-mobile-tasks-hosted-comment-review-actions.tsx b/mobile/src/tasks/use-mobile-tasks-hosted-comment-review-actions.tsx index 6d2ef1f8c1e..d79458205cc 100644 --- a/mobile/src/tasks/use-mobile-tasks-hosted-comment-review-actions.tsx +++ b/mobile/src/tasks/use-mobile-tasks-hosted-comment-review-actions.tsx @@ -1,11 +1,8 @@ +import { refreshMobileTaskPRChecks } from './mobile-task-pr-check-refresh' import { githubTaskKey, sameGitHubTask, requireGitHubTaskTarget } from './github-task-identity' import { useClipboardWriter } from '../platform/clipboard' import type { HostedMetadataActionsModel } from './use-mobile-tasks-hosted-metadata-actions' -import { - buildGitHubCheckSummary, - scheduleMobileTaskCopyFeedbackReset, - useCallback -} from './mobile-tasks-dependencies' +import { scheduleMobileTaskCopyFeedbackReset, useCallback } from './mobile-tasks-dependencies' import { type DetailComment, type GitHubAssignableUser, @@ -17,10 +14,7 @@ import { gitlabIssueCommentWrite, gitlabMergeRequestCommentWrite } from './mobile-task-item-comment-operations' -import { - githubPullRequestChecksRead, - githubReviewerRequest -} from './mobile-task-item-state-operations' +import { githubReviewerRequest } from './mobile-task-item-state-operations' export type HostedCommentReviewActionsInput = Pick< HostedMetadataActionsModel, @@ -272,81 +266,13 @@ export function useMobileTasksHostedCommentReviewActions< [claimPublication, client, detailPayload, itemReviewersDraft, tryBeginMutation] ) - const refreshGitHubChecks = async ( - item: Extract - ): Promise => { - if (!client || item.source.type !== 'pr') { - return - } - const finish = tryBeginMutation() - if (!finish) { - return - } - setError('') - const isCurrent = claimPublication(item, detailPayload) - const requestedHeadSha = - detailPayload?.provider === 'github' ? detailPayload.headSha : undefined - try { - const reply = await githubPullRequestChecksRead.request( - client, - { - repo: `id:${item.source.repoId}`, - prNumber: item.source.number, - prRepo: requireGitHubTaskTarget(item.source).repository, - headSha: requestedHeadSha, - noCache: true - }, - { timeoutMs: 30_000 } - ) - const checks = githubPullRequestChecksRead.interpret(reply) - if (!isCurrent()) { - return - } - const checksSummary = buildGitHubCheckSummary(checks) - const summaryFor = (source: typeof item.source) => - requestedHeadSha !== undefined && - source.headSha === requestedHeadSha && - source.checksSummary?.state === checksSummary.state - ? source.checksSummary - : checksSummary - setDetailPayload((current) => - current?.provider === 'github' && current.targetKey === githubTaskKey(item.source) - ? { ...current, checks } - : current - ) - setActionItem((current) => - sameGitHubTask(current, item) - ? { - ...current, - source: { ...current.source, checksSummary: summaryFor(current.source) } - } - : current - ) - setItems((current) => - current.map((candidate) => - sameGitHubTask(candidate, item) - ? { - ...candidate, - source: { ...candidate.source, checksSummary: summaryFor(candidate.source) } - } - : candidate - ) - ) - } catch (err) { - if (!isCurrent()) { - return - } - setError(err instanceof Error ? err.message : 'Failed to refresh checks') - } finally { - finish() - } - } return Object.assign(model, { addHostedItemComment, copyTaskLink, copyTextToClipboard, requestGitHubReviewers, - refreshGitHubChecks + refreshGitHubChecks: (item: Extract) => + refreshMobileTaskPRChecks(model, item) }) } diff --git a/mobile/src/test-support/bridged-parity/c2-work-item-closure-families.ts b/mobile/src/test-support/bridged-parity/c2-work-item-closure-families.ts index 545bea3a6d2..0249da74754 100644 --- a/mobile/src/test-support/bridged-parity/c2-work-item-closure-families.ts +++ b/mobile/src/test-support/bridged-parity/c2-work-item-closure-families.ts @@ -74,6 +74,7 @@ export const C2_WORK_ITEM_CLOSURE_FAMILIES: PageClosurePins = { 'tk-item-reply-merge': { verdict: 'bridge-contract' } }, 'tasks.item-review-github': { + 'matrix-tasks.item-review-github-pr-check-discovery': { verdict: 'bridge-contract' }, 'matrix-tasks.item-review-github-github.prchecks-1': { verdict: 'bridge-contract' }, 'matrix-tasks.item-review-github-github.requestprreviewers-1': { verdict: 'bridge-contract' }, 'tk-item-review-github': { verdict: 'bridge-contract' } diff --git a/mobile/src/test-support/rpc-recording/adapters/github-pr-mount-adapters.ts b/mobile/src/test-support/rpc-recording/adapters/github-pr-mount-adapters.ts index 7125df139aa..fe4e1d0ff4d 100644 --- a/mobile/src/test-support/rpc-recording/adapters/github-pr-mount-adapters.ts +++ b/mobile/src/test-support/rpc-recording/adapters/github-pr-mount-adapters.ts @@ -1,6 +1,7 @@ import type { MountAdapter } from '../recording-scenario' import type { operationModuleLoader } from '../operation-module-loader' import type * as LineMutations from '../../../session/github-pr-review-line-mutations' +import { legacyShellStatusFixture } from '../legacy-shell-status-fixture' const WORKTREE = 'repo-9::/w' const PR_NUMBER = 12 @@ -10,7 +11,8 @@ export function githubPrMountAdapters( modules: ReturnType ): Record { return { - 'session.pr-reads': ({ client }) => { + 'session.pr-reads': ({ client: suppliedClient }) => { + const client = legacyShellStatusFixture(suppliedClient) const reads = modules.load( 'mobile/src/session/github-pr-rpc.ts' ) diff --git a/mobile/src/test-support/rpc-recording/adapters/pr-sidebar-mount-adapters.ts b/mobile/src/test-support/rpc-recording/adapters/pr-sidebar-mount-adapters.ts index 667872bf405..88316e8509d 100644 --- a/mobile/src/test-support/rpc-recording/adapters/pr-sidebar-mount-adapters.ts +++ b/mobile/src/test-support/rpc-recording/adapters/pr-sidebar-mount-adapters.ts @@ -1,6 +1,7 @@ import type { MountAdapter } from '../recording-scenario' import type { operationModuleLoader } from '../operation-module-loader' import type { PrSidebarLoadDeps } from '../../../session/mobile-pr-sidebar-state' +import { legacyShellStatusFixture } from '../legacy-shell-status-fixture' const WORKTREE = 'repo-9::/w' const BRANCH = 'feature' @@ -10,7 +11,8 @@ export function prSidebarMountAdapters( modules: ReturnType ): Record { return { - 'session.pr-sidebar': ({ client }) => { + 'session.pr-sidebar': ({ client: suppliedClient }) => { + const client = legacyShellStatusFixture(suppliedClient) const reads = modules.load( 'mobile/src/session/github-pr-rpc.ts' ) diff --git a/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts b/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts index 8ef3762bacf..215dcb4a0d9 100644 --- a/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts +++ b/mobile/src/test-support/rpc-recording/changed-bridge-outcomes.ts @@ -5,6 +5,7 @@ import type { RecordedValue } from './recording-values' // Producers whose input or recorded product contract this PR changed (the re-recorded set). Each earns its own // direct page outcomes; none is judged by a legacy label or counted in the unchanged tally. export const CHANGED_PRODUCERS: readonly string[] = [ + 'matrix-tasks.item-review-github-pr-check-discovery', 'matrix-github.pr-read-github.listassignableusers-1', 'matrix-github.pr-read-github.prcheckdetails-1', 'matrix-github.pr-read-github.prchecks-1', diff --git a/mobile/src/test-support/rpc-recording/changed-page-refusals.ts b/mobile/src/test-support/rpc-recording/changed-page-refusals.ts index 53b4d27d420..61278a2d8ef 100644 --- a/mobile/src/test-support/rpc-recording/changed-page-refusals.ts +++ b/mobile/src/test-support/rpc-recording/changed-page-refusals.ts @@ -44,6 +44,10 @@ const AFTER_WORK_ITEM = ['work-item', 'checks', 'check-details', 'assignable'] const AFTER_HOSTED_REVIEW = ['hosted-review', 'pr-for-branch', ...AFTER_WORK_ITEM] export const READ_AND_PROJECT_REFUSALS: Readonly> = { + 'matrix-tasks.item-review-github-pr-check-discovery': { + request: 'status.get#1', + checkpoints: { 'tk-item-review-github.result-absent:checks-settled': [] } + }, 'matrix-github.pr-read-github.listassignableusers-1': surfaceRead( 'github.listAssignableUsers#1', 'assignable', diff --git a/mobile/src/test-support/rpc-recording/legacy-shell-status-fixture.ts b/mobile/src/test-support/rpc-recording/legacy-shell-status-fixture.ts new file mode 100644 index 00000000000..0b1bdf81a52 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/legacy-shell-status-fixture.ts @@ -0,0 +1,6 @@ +import type { RpcClient } from '../../transport/rpc-client' + +// Ordinary parity reads use the same cached-null legacy input as the page's actual init. +export function legacyShellStatusFixture(client: RpcClient): RpcClient { + return client.getShellHostStatus ? client : { ...client, getShellHostStatus: () => null } +} diff --git a/mobile/src/test-support/rpc-recording/rpc-recording-through-bridge.test.ts b/mobile/src/test-support/rpc-recording/rpc-recording-through-bridge.test.ts index da6dcee5c08..6938bc4f3e9 100644 --- a/mobile/src/test-support/rpc-recording/rpc-recording-through-bridge.test.ts +++ b/mobile/src/test-support/rpc-recording/rpc-recording-through-bridge.test.ts @@ -2,6 +2,7 @@ import type * as BridgePortPairModule from '../../mobile-web-shell/bridge/bridge import { resolve } from 'node:path' import { expect, it } from 'vitest' import { ScriptedRpcTransport } from './scripted-rpc-transport' +import { legacyShellStatusFixture } from './legacy-shell-status-fixture' import { recordingStep } from './recording-step' import { materializeScenario } from './scenario-execution-mode' import { @@ -531,3 +532,21 @@ it('declared bridge-only probes preserve exact outcomes and never hide later dif }) } }, 120_000) + +it('uses the actual page init cached-null status as the ordinary legacy recording input', async () => { + const transport = new ScriptedRpcTransport() + const native = legacyShellStatusFixture(transport.client) + const pair = createBridgePortPair({ rpc: transport.client }) + try { + await pair.flush() + expect(native.getShellHostStatus?.()).toBeNull() + const init = pair.toPage.map((json) => JSON.parse(json)).find((frame) => frame.type === 'init') + expect(init).toMatchObject({ type: 'init' }) + expect(init).not.toHaveProperty('hostStatus') + expect(pair.client.getShellHostStatus()).toBeNull() + expect(legacyShellStatusFixture(pair.client)).toBe(pair.client) + } finally { + await disposeBridgePortPair(pair) + await transport.dispose() + } +}) diff --git a/mobile/src/transport/pr-check-observation-contract.test.ts b/mobile/src/transport/pr-check-observation-contract.test.ts new file mode 100644 index 00000000000..c290f9d8398 --- /dev/null +++ b/mobile/src/transport/pr-check-observation-contract.test.ts @@ -0,0 +1,184 @@ +import { expect, it, vi } from 'vitest' +import type { RpcClient } from './rpc-client' +import { recordRuntimeStatusProbe } from './runtime-status-probe' +import { captureMobilePRCheckContract } from './pr-check-observation-contract' +import { + GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as complete, + GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY as exact +} from '../../../src/shared/source-control/runtime/source-control-runtime-capabilities' + +function host(capabilities: string[], observed = true) { + let generation = 1 + let state: ReturnType = 'connected' + const listeners = new Set[0]>() + const sendRequest = vi.fn(async () => ({ + id: 'status', + ok: true as const, + result: { runtimeId: 'runtime-1', hostDescriptor: { installationId: 'host-1' }, capabilities } + })) + const client = { + sendRequest, + getGeneration: () => generation, + getState: () => state, + getLastConnectedAt: () => generation, + onStateChange: (listener: Parameters[0]) => { + listeners.add(listener) + return () => { + listeners.delete(listener) + } + }, + carriesRpcEnvelope: () => true + } + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the fixture implements every client operation used by the contract. + const rpcClient = client as unknown as RpcClient + if (observed) { + recordRuntimeStatusProbe(rpcClient, { + runtimeId: 'runtime-1', + hostDescriptor: { installationId: 'host-1' }, + capabilities + }) + } + return { + client: rpcClient, + sendRequest, + replace: () => { + state = 'disconnected' + listeners.forEach((listener) => listener(state)) + generation++ + state = 'connected' + } + } +} + +it('reuses the existing execution-host status across N and 10N reads and fences replacement', async () => { + const source = host([complete, exact]) + for (const n of [10, 100]) { + const contracts = await Promise.all( + Array.from({ length: n }, () => + captureMobilePRCheckContract(source.client, { repo: 'id:repo' }) + ) + ) + expect(contracts.every((contract) => contract.complete && contract.current())).toBe(true) + expect(source.sendRequest).not.toHaveBeenCalled() + contracts.forEach((contract) => contract.retire()) + } + const pending = await captureMobilePRCheckContract(source.client, { repo: 'id:repo' }) + source.replace() + expect(pending.current()).toBe(false) + pending.retire() +}) + +it('uses the executing host verdict when a new relay points at an old host', async () => { + const relay = host([complete, exact]) + const execution = host([]) + const routed = { + ...relay.client, + requestRoute: () => ({ client: execution.client, intermediary: relay.client }) + } + const contract = await captureMobilePRCheckContract(routed, { repo: 'id:server-repo' }) + expect(contract.complete).toBe(false) + expect(contract.options).not.toHaveProperty('envelope') + contract.retire() +}) + +it('does not certify a capable execution host through an unproven old intermediary', async () => { + const relay = host([]) + const execution = host([complete, exact]) + const routed = { + ...relay.client, + requestRoute: () => ({ client: execution.client, intermediary: relay.client }) + } + const contract = await captureMobilePRCheckContract(routed, { repo: 'id:server-repo' }) + expect(contract.complete).toBe(false) + contract.retire() +}) + +it('refresh relearns a relayed runtime restart without a phone connection edge', async () => { + const execution = host([complete, exact]) + const old = await captureMobilePRCheckContract(execution.client, { repo: 'id:repo' }) + execution.sendRequest.mockResolvedValueOnce({ + id: 'status', + ok: true, + result: { + runtimeId: 'runtime-2', + hostDescriptor: { installationId: 'host-1' }, + capabilities: [complete, exact] + } + }) + const fresh = await captureMobilePRCheckContract(execution.client, { repo: 'id:repo' }, true) + expect(old.current()).toBe(false) + expect(fresh.complete && fresh.current()).toBe(true) + expect( + 'envelope' in fresh.options && fresh.options.envelope?.expectedRuntimeSource?.runtimeId + ).toBe('runtime-2') + old.retire() + fresh.retire() +}) + +it('retires a repository route switch while both clients stay connected', async () => { + const first = host([complete, exact]) + const second = host([complete, exact]) + let selected = first.client + const router = { ...first.client, requestRoute: () => ({ client: selected }) } + const pending = await captureMobilePRCheckContract(router, { repo: 'id:repo' }) + selected = second.client + expect(pending.current()).toBe(false) + expect(() => 'beforeSend' in pending.options && pending.options.beforeSend()).toThrow() + pending.retire() +}) + +it('uses later same-epoch probe evidence after transient discovery failure without delaying legacy reads', async () => { + const source = host([]) + recordRuntimeStatusProbe(source.client, null) + const deferred = Promise.withResolvers() + source.sendRequest.mockReturnValueOnce(deferred.promise) + const legacy = await captureMobilePRCheckContract(source.client, { repo: 'id:repo' }, true) + expect(legacy.complete).toBe(false) + deferred.reject(new Error('temporary')) + await Promise.resolve() + recordRuntimeStatusProbe(source.client, { + runtimeId: 'runtime-1', + hostDescriptor: { installationId: 'host-1' }, + capabilities: [complete, exact] + }) + const adopted = await captureMobilePRCheckContract(source.client, { repo: 'id:repo' }) + expect(adopted.complete && adopted.current()).toBe(true) + expect(legacy.current()).toBe(false) + legacy.retire() + adopted.retire() +}) + +it.each(['ordinary', 'refresh'])( + 'coalesces concurrent %s discovery without delaying legacy reads', + async (mode) => { + const source = host([complete, exact], mode === 'refresh') + if (mode === 'refresh') { + recordRuntimeStatusProbe(source.client, null) + } + const status = Promise.withResolvers>>() + source.sendRequest.mockReturnValueOnce(status.promise) + const reads = await Promise.all( + Array.from({ length: 100 }, () => + captureMobilePRCheckContract(source.client, { repo: 'id:repo' }, mode === 'refresh') + ) + ) + expect(reads.every((read) => !read.complete)).toBe(true) + expect(source.sendRequest).toHaveBeenCalledTimes(1) + status.resolve({ + id: 's', + ok: true, + result: { + runtimeId: 'runtime-1', + hostDescriptor: { installationId: 'host-1' }, + capabilities: [complete, exact] + } + }) + await status.promise + await vi.waitFor(async () => { + const next = await captureMobilePRCheckContract(source.client, { repo: 'id:repo' }) + expect(next.complete).toBe(true) + next.retire() + }) + reads.forEach((read) => read.retire()) + } +) diff --git a/mobile/src/transport/pr-check-observation-contract.ts b/mobile/src/transport/pr-check-observation-contract.ts new file mode 100644 index 00000000000..1326fb17d81 --- /dev/null +++ b/mobile/src/transport/pr-check-observation-contract.ts @@ -0,0 +1,184 @@ +import { z } from 'zod' +import type { RpcClient, SendRequestOptions } from './rpc-client' +import type { RpcOperationSender } from './rpc-operation-sender' +import { captureGitHubInvocation, supportsExactGitHubOperations } from './github-target-invocation' +import { + readRuntimeStatusProbe, + recordRuntimeStatusProbe, + runtimeStatusProbeEpoch +} from './runtime-status-probe' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY } from '../../../src/shared/source-control/runtime/source-control-runtime-capabilities' + +type Status = Awaited['status']>> +type Discovery = { + epoch: string + pending?: Promise + attempted: boolean + status?: Status +} +const discoveries = new WeakMap() +const statusSchema = z.object({ + runtimeId: z.string().optional(), + hostDescriptor: z.object({ installationId: z.string() }).optional(), + capabilities: z.array(z.string()).optional() +}) +const sourceSchema = z.object({ + runtimeId: z.string(), + hostDescriptor: z.object({ installationId: z.string() }) +}) +const supporting = (status: Status | null | undefined) => + status?.capabilities?.includes(GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY) === true + +function knownStatus(client: RpcClient): Status | null | undefined { + const prior = discoveries.get(client) + const proof = prior?.epoch === runtimeStatusProbeEpoch(client) ? prior.status : undefined + const cached = readRuntimeStatusProbe(client) + const value = cached === undefined ? client.getShellHostStatus?.() : cached + const parsed = statusSchema.safeParse(value) + if (!parsed.success) { + return proof ?? (value === undefined ? undefined : null) + } + const status = parsed.data + if (supporting(proof) && (!status.runtimeId || status.runtimeId === proof?.runtimeId)) { + return { + ...proof, + ...status, + runtimeId: proof?.runtimeId, + hostDescriptor: proof?.hostDescriptor, + capabilities: proof?.capabilities + } + } + if (supporting(status) && prior) { + prior.status = status + } + return status +} + +function statusFor(client: RpcClient, refresh: boolean): Promise { + const known = knownStatus(client) + const epoch = runtimeStatusProbeEpoch(client) + let entry = discoveries.get(client) + if (!entry || entry.epoch !== epoch) { + entry = { epoch, attempted: known !== undefined, status: known ?? undefined } + discoveries.set(client, entry) + } + if (!entry.pending && (!entry.attempted || refresh)) { + entry.attempted = true + const invocation = captureGitHubInvocation(client) + const captured = entry + captured.pending = invocation + .status({ timeoutMs: 15_000, failWhenDisconnected: true }) + .then( + (status) => { + const accepted = + supporting(known) && status.runtimeId === known?.runtimeId + ? { ...status, capabilities: known?.capabilities } + : status + if (supporting(accepted)) { + captured.status = accepted + } + recordRuntimeStatusProbe(client, accepted) + return accepted + }, + () => known + ) + .finally(() => { + captured.pending = undefined + invocation.retire() + }) + } + // Unknown/legacy reads proceed immediately. A user refresh of a known capable producer relearns a relayed restart. + return refresh && supporting(known) && entry.pending ? entry.pending : Promise.resolve(known) +} + +export async function captureMobilePRCheckContract( + sender: RpcOperationSender, + params: { repo: string }, + refresh = false +) { + if (!isRpcClient(sender)) { + return { + scope: undefined, + complete: false, + current: () => true, + options: {} satisfies SendRequestOptions, + routeCurrent: () => true, + retire: () => {} + } + } + const origin = sender + const route = () => origin.requestRoute?.(params) ?? { client: origin } + const { client, intermediary } = route() + const sameRoute = () => { + const next = route() + return next.client === client && next.intermediary === intermediary + } + const invocation = captureGitHubInvocation(client, sameRoute) + const relayInvocation = intermediary && captureGitHubInvocation(intermediary, sameRoute) + const [status, relay] = await Promise.all([ + statusFor(client, refresh), + intermediary ? statusFor(intermediary, refresh) : null + ]) + const source = sourceSchema.safeParse(status) + const complete = + status?.capabilities?.includes(GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY) === true && + source.success && + (!intermediary || + (relay && + supportsExactGitHubOperations(relay) && + (client.carriesRpcEnvelope?.() ?? true))) === true + const started = runtimeStatusProbeEpoch(client) + const routeCurrent = () => { + try { + invocation.assertCurrent() + relayInvocation?.assertCurrent() + const now = knownStatus(client) + return ( + runtimeStatusProbeEpoch(client) === started && + (!source.success || now?.runtimeId === source.data.runtimeId) + ) + } catch { + return false + } + } + const current = () => + routeCurrent() && + (knownStatus(client)?.capabilities?.includes( + GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY + ) === + true) === + (status?.capabilities?.includes(GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY) === true) + const beforeSend = () => { + invocation.assertCurrent() + relayInvocation?.assertCurrent() + } + return { + scope: source.success + ? `${source.data.hostDescriptor.installationId}:${source.data.runtimeId}:${started}` + : undefined, + complete, + current, + routeCurrent, + client, + retire: () => { + invocation.retire() + relayInvocation?.retire() + }, + options: { + beforeSend, + ...(complete && source.success + ? { + envelope: { + expectedRuntimeSource: { + sourceId: source.data.hostDescriptor.installationId, + runtimeId: source.data.runtimeId + } + } + } + : {}) + } satisfies SendRequestOptions + } +} +function isRpcClient(sender: RpcOperationSender): sender is RpcClient { + return 'getState' in sender +} diff --git a/mobile/src/transport/runtime-status-probe.ts b/mobile/src/transport/runtime-status-probe.ts index f86a65ed428..d57be77eb3f 100644 --- a/mobile/src/transport/runtime-status-probe.ts +++ b/mobile/src/transport/runtime-status-probe.ts @@ -1,8 +1,26 @@ +import type { RpcClient } from './rpc-client' import type { UnvalidatedRpcRequestPort } from './unvalidated-rpc-request-port' import { hostStatusProbe, readProbedHostStatus } from './host-status-probe-operations' import type { HostStatusReply } from './host-status-reply-schema' import { isLogicalClientCutoverError } from './stable-logical-rpc-client' +type ProbeClient = UnvalidatedRpcRequestPort & + Partial> +const observed = new WeakMap() +export const runtimeStatusProbeEpoch = (client: ProbeClient) => + `${client.getGeneration?.()}:${client.getLastConnectedAt?.()}` +export function readRuntimeStatusProbe(client: ProbeClient): HostStatusReply | null | undefined { + const entry = observed.get(client) + return entry?.epoch === runtimeStatusProbeEpoch(client) ? entry.status : undefined +} + +export function recordRuntimeStatusProbe( + client: ProbeClient, + status: HostStatusReply | null +): void { + observed.set(client, { epoch: runtimeStatusProbeEpoch(client), status }) +} + // Cutover/timeouts may reject status.get without a connection-state edge; retry until one answer lands. const CUTOVER_RETRY_DELAY_MS = 250 const FAILURE_RETRY_BASE_DELAY_MS = 1_000 @@ -11,10 +29,11 @@ const FAILURE_RETRY_MAX_DELAY_MS = 15_000 // Deliver unreadable answers as null without retry; refusals/rejections retry and notify onAttemptFailed after scheduling. // Accept the raw sender type because capability callers need not hold a full client. export function startRuntimeStatusProbe( - client: UnvalidatedRpcRequestPort, + client: ProbeClient, onStatus: (status: HostStatusReply | null) => void, onAttemptFailed?: () => void ): () => void { + const epoch = runtimeStatusProbeEpoch(client) let cancelled = false let retryTimer: ReturnType | null = null let failureRetries = 0 @@ -30,6 +49,9 @@ export function startRuntimeStatusProbe( scheduleRetry(false) return } + if (epoch === runtimeStatusProbeEpoch(client)) { + observed.set(client, { epoch, status: landed.status }) + } onStatus(landed.status) }, (error: unknown) => { diff --git a/src/main/github/client-merge-queue-auto-merge.test.ts b/src/main/github/client-merge-queue-auto-merge.test.ts index 58ccdda7d7a..b1040764abb 100644 --- a/src/main/github/client-merge-queue-auto-merge.test.ts +++ b/src/main/github/client-merge-queue-auto-merge.test.ts @@ -47,10 +47,12 @@ import { resolveReviewThread } from './client/update/resolve-review-thread' import { setPRAutoMerge } from './client/merge/pr-auto-merge' import { updatePRTitle } from './client/update/pr-details' import { _getMergeQueueCacheSizeForTests } from './client/detect/repository-merge-metadata-cache' -import { resetGraphQLRateLimitGuardMocks } from './client-test-harness' +import { + installIndependentCheckFixtures, + resetGraphQLRateLimitGuardMocks +} from './client-test-harness' const { - ghExecFileAsyncMock, getOwnerRepoMock, resolvePRRepositoryCandidatesMock, gitExecFileAsyncMock, @@ -59,15 +61,20 @@ const { acquireMock } = clientMocks +const metadataRequests = vi.fn() +const unexpectedChecks: string[][] = [] +afterEach(() => expect(unexpectedChecks).toEqual([])) + describe('GitHub GraphQL rate-limit guard', () => { beforeEach(() => { resetGraphQLRateLimitGuardMocks(clientMocks) + installIndependentCheckFixtures(clientMocks, metadataRequests, unexpectedChecks) }) afterEach(() => vi.restoreAllMocks()) it('uses explicit PR repo for merge and title mutations', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 7, @@ -111,7 +118,7 @@ describe('GitHub GraphQL rate-limit guard', () => { ).resolves.toBe(true) expect(getOwnerRepoMock).not.toHaveBeenCalled() - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, ['api', 'repos/stablyai/orca/pulls/7', '--include'], { @@ -119,7 +126,7 @@ describe('GitHub GraphQL rate-limit guard', () => { host: 'github.com' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, [ 'pr', @@ -128,11 +135,11 @@ describe('GitHub GraphQL rate-limit guard', () => { '--repo', 'stablyai/orca', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root', host: 'github.com' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, ['pr', 'merge', '7', '--squash', '--repo', 'stablyai/orca'], expect.objectContaining({ @@ -141,7 +148,7 @@ describe('GitHub GraphQL rate-limit guard', () => { host: 'github.com' }) ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 4, [ 'api', @@ -156,7 +163,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) it('sets and disables PR auto-merge with explicit PR repos and SSH context', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid' }) @@ -178,19 +185,19 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, ['api', 'repos/stablyai/orca/pulls/7', '--include'], { host: 'github.com' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, ['pr', 'view', '7', '--json', 'id,headRefOid,baseRefName', '--repo', 'stablyai/orca'], { host: 'github.com' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, expect.arrayContaining([ 'api', @@ -207,7 +214,7 @@ describe('GitHub GraphQL rate-limit guard', () => { host: 'github.com' }) ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 4, ['pr', 'merge', '7', '--disable-auto', '--repo', 'stablyai/orca'], expect.objectContaining({ @@ -215,11 +222,11 @@ describe('GitHub GraphQL rate-limit guard', () => { host: 'github.com' }) ) - expect(ghExecFileAsyncMock.mock.calls[0]?.[1]).not.toHaveProperty('cwd') + expect(metadataRequests.mock.calls[0]?.[1]).not.toHaveProperty('cwd') }) it('enables auto-merge without invoking the direct merge command', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid' }) @@ -235,12 +242,12 @@ describe('GitHub GraphQL rate-limit guard', () => { ).resolves.toEqual({ ok: true }) expect( - ghExecFileAsyncMock.mock.calls.some((call) => + metadataRequests.mock.calls.some((call) => (call[0] as string[]).some((arg) => arg.includes('enablePullRequestAutoMerge')) ) ).toBe(true) expect( - ghExecFileAsyncMock.mock.calls.some( + metadataRequests.mock.calls.some( (call) => call[0][0] === 'pr' && call[0][1] === 'merge' && (call[0] as string[]).includes('--auto') ) @@ -248,7 +255,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) it('rejects auto-merge for GitHub-registered stacks', async () => { - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: 202, title: 'Stack API', @@ -274,11 +281,11 @@ describe('GitHub GraphQL rate-limit guard', () => { ok: false, error: 'GitHub does not support auto-merge for stacked pull requests.' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(1) + expect(metadataRequests).toHaveBeenCalledTimes(1) }) it('translates the GitHub clean-status rejection into an actionable message', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid' }) @@ -300,7 +307,7 @@ describe('GitHub GraphQL rate-limit guard', () => { it('preserves a provider rejection when eligibility changes before enabling auto-merge', async () => { const providerError = 'gh: Pull request Pull request is in unstable status (enablePullRequestAutoMerge)' - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid' }) @@ -318,12 +325,12 @@ describe('GitHub GraphQL rate-limit guard', () => { error: `Failed to enable auto-merge for pull request: ${providerError}` }) expect( - ghExecFileAsyncMock.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') + metadataRequests.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') ).toBe(false) }) it('names a failed disable-auto-merge operation', async () => { - ghExecFileAsyncMock.mockRejectedValueOnce(new Error('gh: pull request is already closed')) + metadataRequests.mockRejectedValueOnce(new Error('gh: pull request is already closed')) await expect( setPRAutoMerge('/repo-root', 7, false, 'squash', undefined, { owner: 'stablyai', @@ -340,7 +347,7 @@ describe('GitHub GraphQL rate-limit guard', () => { it('preserves REST merge eligibility and an existing auto-merge request in PR details', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'stablyai', repo: 'orca' }) - ghExecFileAsyncMock + metadataRequests .mockRejectedValueOnce(new Error('GraphQL unavailable')) .mockResolvedValueOnce({ stdout: JSON.stringify({ @@ -377,7 +384,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) it('uses the queue-aware gh merge path when the base branch has a merge queue', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid', baseRefName: 'main' }) @@ -395,12 +402,12 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, expect.arrayContaining(['api', 'graphql', '-f', 'branch=main']), { cwd: '/repo-root', host: 'github.com' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 4, ['pr', 'merge', '7', '--auto', '--squash', '--repo', 'stablyai/orca'], expect.objectContaining({ @@ -410,14 +417,14 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ) expect( - ghExecFileAsyncMock.mock.calls.some((call) => + metadataRequests.mock.calls.some((call) => (call[0] as string[]).some((arg) => arg.includes('enablePullRequestAutoMerge')) ) ).toBe(false) }) it('enqueues instead of gh pr merge --auto when a required merge queue disallows auto-merge', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ id: 'PR_kwDO123', headRefOid: 'head-oid', baseRefName: 'main' }) @@ -437,8 +444,8 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(4) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenCalledTimes(4) + expect(metadataRequests).toHaveBeenNthCalledWith( 4, [ 'api', @@ -459,7 +466,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) it('blocks direct merge when GitHub reports required approval', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ @@ -491,8 +498,8 @@ describe('GitHub GraphQL rate-limit guard', () => { error: 'This pull request requires review approval before it can be merged.' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(3) - expect(ghExecFileAsyncMock.mock.calls[2]?.[0]).toContain('graphql') + expect(metadataRequests).toHaveBeenCalledTimes(3) + expect(metadataRequests.mock.calls[2]?.[0]).toContain('graphql') }) it('detects merge queues once per base branch and blocks direct merges', async () => { @@ -512,7 +519,7 @@ describe('GitHub GraphQL rate-limit guard', () => { baseRefOid: 'base-oid', headRefOid: 'head-oid' } - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify(prView) }) .mockResolvedValueOnce({ @@ -536,13 +543,13 @@ describe('GitHub GraphQL rate-limit guard', () => { mergePR('/repo-root', 7, 'squash', undefined, { owner: 'stablyai', repo: 'orca' }) ).resolves.toMatchObject({ ok: false }) - expect( - ghExecFileAsyncMock.mock.calls.filter((call) => call[0].includes('graphql')) - ).toHaveLength(1) - expect(ghExecFileAsyncMock.mock.calls[2]?.[0]).toEqual( + expect(metadataRequests.mock.calls.filter((call) => call[0].includes('graphql'))).toHaveLength( + 1 + ) + expect(metadataRequests.mock.calls[2]?.[0]).toEqual( expect.arrayContaining(['-f', 'owner=stablyai', '-f', 'repo=orca', '-f', 'branch=true']) ) - expect(ghExecFileAsyncMock.mock.calls[2]?.[0]).not.toContain('-F') + expect(metadataRequests.mock.calls[2]?.[0]).not.toContain('-F') }) it('caches unknown merge queue probes after GraphQL failures', async () => { @@ -563,7 +570,7 @@ describe('GitHub GraphQL rate-limit guard', () => { baseRefOid: 'base-oid', headRefOid: 'head-oid' } - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify(prView) }) .mockRejectedValueOnce(new Error('network is down')) .mockResolvedValueOnce({ stdout: '{}' }) @@ -577,9 +584,9 @@ describe('GitHub GraphQL rate-limit guard', () => { mergeQueueRequired: null }) - expect( - ghExecFileAsyncMock.mock.calls.filter((call) => call[0].includes('graphql')) - ).toHaveLength(1) + expect(metadataRequests.mock.calls.filter((call) => call[0].includes('graphql'))).toHaveLength( + 1 + ) }) it('reuses repository metadata between PR details and sidebar refreshes', async () => { @@ -599,7 +606,7 @@ describe('GitHub GraphQL rate-limit guard', () => { baseRefName: 'main', headRefOid: 'head-oid' } - ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { + metadataRequests.mockImplementation(async (args: string[]) => { if (args.includes('graphql')) { return { stdout: JSON.stringify({ @@ -618,15 +625,13 @@ describe('GitHub GraphQL rate-limit guard', () => { autoMergeAllowed: true }) - expect( - ghExecFileAsyncMock.mock.calls.filter(([args]) => args.includes('graphql')) - ).toHaveLength(1) + expect(metadataRequests.mock.calls.filter(([args]) => args.includes('graphql'))).toHaveLength(1) }) it('bounds merge metadata cache entries across many base branches', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'stablyai', repo: 'orca' }) let prViewCount = 0 - ghExecFileAsyncMock.mockImplementation(async (args) => { + metadataRequests.mockImplementation(async (args) => { if (args.includes('graphql')) { return { stdout: JSON.stringify({ data: { repository: { mergeQueue: null } } }) } } @@ -678,7 +683,7 @@ describe('GitHub GraphQL rate-limit guard', () => { baseRefName: 'main', headRefOid: 'head-oid' } - ghExecFileAsyncMock.mockImplementation(async (args, options) => { + metadataRequests.mockImplementation(async (args, options) => { if (args.includes('graphql')) { const enterprise = options?.host === 'github.acme-corp.com' return { @@ -710,7 +715,7 @@ describe('GitHub GraphQL rate-limit guard', () => { expect(githubDotCom?.autoMergeAllowed).toBe(true) expect(enterprise?.autoMergeAllowed).toBe(false) - const graphqlCalls = ghExecFileAsyncMock.mock.calls.filter(([args]) => args.includes('graphql')) + const graphqlCalls = metadataRequests.mock.calls.filter(([args]) => args.includes('graphql')) expect(graphqlCalls).toHaveLength(2) expect(graphqlCalls[1]?.[1]).toEqual(expect.objectContaining({ host: 'github.acme-corp.com' })) }) @@ -731,11 +736,11 @@ describe('GitHub GraphQL rate-limit guard', () => { ).resolves.toBeNull() expect(acquireMock).not.toHaveBeenCalled() - expect(ghExecFileAsyncMock).not.toHaveBeenCalled() + expect(metadataRequests).not.toHaveBeenCalled() }) it('returns conflicting file details instead of running gh merge when PR is dirty', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ @@ -775,11 +780,11 @@ describe('GitHub GraphQL rate-limit guard', () => { '- src/conflict.ts' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) }) it('does not run merge conflict preflight for SSH-backed repos', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ stack: null }) }) .mockResolvedValueOnce({ stdout: JSON.stringify({ @@ -806,15 +811,15 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(3) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenCalledTimes(3) + expect(metadataRequests).toHaveBeenNthCalledWith( 3, ['pr', 'merge', '7', '--squash', '--repo', 'stablyai/orca'], expect.objectContaining({ env: expect.objectContaining({ GH_PROMPT_DISABLED: '1' }) }) ) - expect(ghExecFileAsyncMock.mock.calls[0]?.[1]).not.toHaveProperty('cwd') + expect(metadataRequests.mock.calls[0]?.[1]).not.toHaveProperty('cwd') expect(gitExecFileAsyncMock).not.toHaveBeenCalled() }) @@ -828,7 +833,7 @@ describe('GitHub GraphQL rate-limit guard', () => { await expect(resolveReviewThread('/repo-root', 'thread-1', true)).resolves.toBe(false) - expect(ghExecFileAsyncMock).not.toHaveBeenCalled() + expect(metadataRequests).not.toHaveBeenCalled() expect(noteRateLimitSpendMock).not.toHaveBeenCalled() }) }) diff --git a/src/main/github/client-merged-pr-visibility.test.ts b/src/main/github/client-merged-pr-visibility.test.ts index 4ec67913953..c06c76684fb 100644 --- a/src/main/github/client-merged-pr-visibility.test.ts +++ b/src/main/github/client-merged-pr-visibility.test.ts @@ -1,6 +1,6 @@ import type * as GitExecFileModule from '../git/command-runner/git-exec-file' import type * as GhExecFileModule from '../git/command-runner/gh-exec-file' -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type * as GithubApiRepositoryModule from './github-api-repository' import type * as GitHubEnterpriseRepositoryModule from './github-enterprise-repository' @@ -39,24 +39,28 @@ vi.mock('./github-api-repository', async (importOriginal) => import { getPRForBranchOutcome } from './client/lookup/pr-for-branch-outcome' import { getPRForBranch } from './client/lookup/get-pr-for-branch' -import { resetPRForBranchMocks } from './client-test-harness' +import { installIndependentCheckFixtures, resetPRForBranchMocks } from './client-test-harness' const { - ghExecFileAsyncMock, getOwnerRepoMock, resolvePRRepositoryCandidatesMock, gitExecFileAsyncMock, rateLimitGuardMock } = clientMocks +const metadataRequests = vi.fn() +const unexpectedChecks: string[][] = [] +afterEach(() => expect(unexpectedChecks).toEqual([])) + describe('getPRForBranch', () => { beforeEach(() => { resetPRForBranchMocks(clientMocks) + installIndependentCheckFixtures(clientMocks, metadataRequests, unexpectedChecks) }) it('ignores merged PRs discovered only by branch lookup when the branch moved on', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify([ { @@ -101,7 +105,7 @@ describe('getPRForBranch', () => { it('shows a merged branch PR when it still matches the current HEAD', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify([ { @@ -154,7 +158,7 @@ describe('getPRForBranch', () => { const mockMergedBranchPRLookupBehindHead = (prNumber = 6011): void => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify([ { @@ -195,13 +199,13 @@ describe('getPRForBranch', () => { it('shows a merged branch PR when the worktree head is one of its own commits', async () => { mockMergedBranchPRLookupBehindHead() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 6011 }, { number: 42 }]) }) const pr = await getPRForBranch('/repo-root', 'fix-hibernation-wake') - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, ['api', 'repos/acme/widgets/commits/bbbb2222bbbb2222/pulls?per_page=100&page=1'], expect.anything() @@ -216,25 +220,25 @@ describe('getPRForBranch', () => { it('keeps hiding a merged branch PR when the head belongs to a different PR (reused branch)', async () => { mockMergedBranchPRLookupBehindHead() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 42 }]) }) const pr = await getPRForBranch('/repo-root', 'fix-hibernation-wake') expect(pr).toBeNull() - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(3) + expect(metadataRequests).toHaveBeenCalledTimes(3) mockMergedBranchPRLookupBehindHead() const second = await getPRForBranch('/repo-root', 'fix-hibernation-wake') expect(second).toBeNull() - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(5) + expect(metadataRequests).toHaveBeenCalledTimes(5) }) it('keeps hiding a merged branch PR when the commit membership probe fails', async () => { mockMergedBranchPRLookupBehindHead() - ghExecFileAsyncMock.mockRejectedValueOnce(new Error('HTTP 422: No commit found')) + metadataRequests.mockRejectedValueOnce(new Error('HTTP 422: No commit found')) const pr = await getPRForBranch('/repo-root', 'fix-hibernation-wake') @@ -252,28 +256,28 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'fix-hibernation-wake') expect(pr).toBeNull() - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) }) it('reuses the cached membership answer instead of re-querying per poll', async () => { mockMergedBranchPRLookupBehindHead() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 6011 }]) }) const first = await getPRForBranch('/repo-root', 'fix-hibernation-wake') expect(first).toMatchObject({ number: 6011, confirmedContainedHeadOid: 'bbbb2222bbbb2222' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(3) + expect(metadataRequests).toHaveBeenCalledTimes(3) mockMergedBranchPRLookupBehindHead() const second = await getPRForBranch('/repo-root', 'fix-hibernation-wake') expect(second).toMatchObject({ number: 6011, confirmedContainedHeadOid: 'bbbb2222bbbb2222' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(5) + expect(metadataRequests).toHaveBeenCalledTimes(5) }) it('uses the caller-supplied worktree head for the membership probe without shelling out', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify([ { @@ -342,7 +346,7 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'acme', repo: 'widgets' }], headRepo: { owner: 'acme', repo: 'widgets' } }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: prNumber, title: 'Merged linked PR', @@ -362,7 +366,7 @@ describe('getPRForBranch', () => { it('stamps confirmedContainedHeadOid for a linked merged PR when HEAD is its commit', async () => { mockMergedLinkedPRLookup() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 7447 }]) }) @@ -385,7 +389,7 @@ describe('getPRForBranch', () => { it('stamps headDivergedFromMergedPRAtOid for a linked merged PR with a definite miss', async () => { mockMergedLinkedPRLookup() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 42 }]) }) @@ -407,7 +411,7 @@ describe('getPRForBranch', () => { mockMergedLinkedPRLookup() // A short second page proves absence after a full first page. const fullPage = Array.from({ length: 100 }, (_, index) => ({ number: 1000 + index })) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify(fullPage) }) .mockResolvedValueOnce({ stdout: JSON.stringify([{ number: 2000 }]) }) @@ -426,7 +430,7 @@ describe('getPRForBranch', () => { // Full pages through the cap cannot prove absence, so preserve the durable link. const fullPage = Array.from({ length: 100 }, (_, index) => ({ number: 1000 + index })) for (let page = 0; page < 5; page += 1) { - ghExecFileAsyncMock.mockResolvedValueOnce({ stdout: JSON.stringify(fullPage) }) + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify(fullPage) }) } const outcome = await getPRForBranchOutcome('/repo-root', 'new-work', 7447, null, null, { @@ -442,7 +446,7 @@ describe('getPRForBranch', () => { it('stamps linked merged divergence via the PR url when no repo candidates resolve', async () => { // Without resolved candidates, derive the membership-probe repository from the PR URL. resolvePRRepositoryCandidatesMock.mockResolvedValueOnce({ candidates: [], headRepo: null }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 7447, @@ -469,7 +473,7 @@ describe('getPRForBranch', () => { kind: 'found', pr: { number: 7447, state: 'merged', headDivergedFromMergedPRAtOid: 'bbbb2222bbbb2222' } }) - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledWith( ['api', 'repos/acme/widgets/commits/bbbb2222bbbb2222/pulls?per_page=100&page=1'], expect.anything() ) @@ -491,12 +495,12 @@ describe('getPRForBranch', () => { expect(outcome.kind === 'found' ? outcome.pr.headDivergedFromMergedPRAtOid : undefined).toBe( undefined ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) }) it('leaves linked merged divergence unset when the membership probe throws', async () => { mockMergedLinkedPRLookup() - ghExecFileAsyncMock.mockRejectedValueOnce(new Error('HTTP 422: No commit found')) + metadataRequests.mockRejectedValueOnce(new Error('HTTP 422: No commit found')) const outcome = await getPRForBranchOutcome('/repo-root', 'new-work', 7447, null, null, { currentHeadOid: 'bbbb2222bbbb2222' @@ -510,7 +514,7 @@ describe('getPRForBranch', () => { it('leaves linked merged divergence unset when the membership probe returns a non-array payload', async () => { mockMergedLinkedPRLookup() - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ message: 'Server Error' }) }) @@ -533,6 +537,6 @@ describe('getPRForBranch', () => { expect(outcome.kind === 'found' ? outcome.pr.headDivergedFromMergedPRAtOid : undefined).toBe( undefined ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) }) }) diff --git a/src/main/github/client-pr-branch-discovery.test.ts b/src/main/github/client-pr-branch-discovery.test.ts index 14e23cdf4b2..292ebd65e26 100644 --- a/src/main/github/client-pr-branch-discovery.test.ts +++ b/src/main/github/client-pr-branch-discovery.test.ts @@ -1,3 +1,4 @@ +import { completePRCheckGraphQLResponse } from '../../shared/github/complete-pr-check-test-fixture' import type * as GitExecFileModule from '../git/command-runner/git-exec-file' import type * as GhExecFileModule from '../git/command-runner/gh-exec-file' import { beforeEach, describe, expect, it, vi } from 'vitest' @@ -78,6 +79,16 @@ describe('getPRForBranch', () => { statusCheckRollup: [{ status: 'COMPLETED', conclusion: 'CANCELLED' }] }) }) + .mockResolvedValueOnce( + completePRCheckGraphQLResponse(7, 'head-oid', [ + { + __typename: 'CheckRun', + status: 'COMPLETED', + conclusion: 'CANCELLED', + checkSuite: { databaseId: 1 } + } + ]) + ) const pr = await getPRForBranch('/repo-root', 'feature/test') expect(ghExecFileAsyncMock.mock.calls.slice(0, 2).map(([args]) => args.slice(0, 2))).toEqual([ ['api', 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10'], @@ -130,7 +141,12 @@ describe('getPRForBranch', () => { ['pr', 'list'], ['pr', 'view'] ]) - expect(pr).toMatchObject({ number: 7, checksStatus: 'failure' }) + expect(pr).toMatchObject({ + number: 7, + title: 'Partial check page', + headSha: 'head-oid', + checksStatus: 'neutral' + }) expect(pr?.checksSummary).toBeUndefined() }) @@ -549,7 +565,7 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) diff --git a/src/main/github/client-pr-checks.test.ts b/src/main/github/client-pr-checks.test.ts index f2f46a1f065..48e603ac080 100644 --- a/src/main/github/client-pr-checks.test.ts +++ b/src/main/github/client-pr-checks.test.ts @@ -84,7 +84,7 @@ vi.mock('./rate-limit', () => ({ spendsSharedGitHubComQuota: spendsSharedGitHubComQuotaMock })) -import { getPRChecks } from './client/check/get-pr-checks' +import { getPRChecks, getPRChecksViaRestFallback } from './client/check/get-pr-checks' import { rerunPRChecks } from './client/check/rerun-pr-checks' import { _resetOwnerRepoCache } from './gh-utils' @@ -97,11 +97,13 @@ beforeEach(() => { function graphQLChecksResponse({ contexts = [], checkSuites = [], - headRefOid = 'head-oid' + headRefOid = 'head-oid', + commitOid = headRefOid }: { contexts?: unknown[] checkSuites?: unknown[] headRefOid?: string + commitOid?: string } = {}): { stdout: string } { return { stdout: JSON.stringify({ @@ -113,6 +115,7 @@ function graphQLChecksResponse({ nodes: [ { commit: { + oid: commitOid, statusCheckRollup: { contexts: { nodes: contexts } }, checkSuites: { nodes: checkSuites } } @@ -451,6 +454,7 @@ describe('getPRChecks', () => { .mockRejectedValueOnce(new Error('GraphQL rollup failed')) .mockResolvedValueOnce({ stdout: JSON.stringify({ + total_count: 1, check_runs: [ { id: 88, @@ -465,6 +469,7 @@ describe('getPRChecks', () => { }) .mockResolvedValueOnce({ stdout: JSON.stringify({ + total_count: 1, statuses: [ { context: 'continuous-integration/jenkins/pr-merge', @@ -474,19 +479,24 @@ describe('getPRChecks', () => { ] }) }) - .mockResolvedValueOnce({ stdout: JSON.stringify({ check_suites: [] }) }) + .mockResolvedValueOnce({ stdout: JSON.stringify({ total_count: 0, check_suites: [] }) }) const checks = await getPRChecks('/repo-root', 42, 'head-oid') expectGraphQLRollupCall() expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( 2, - ['api', '--cache', '60s', 'repos/acme/widgets/commits/head-oid/check-runs?per_page=100'], + [ + 'api', + '--cache', + '60s', + 'repos/acme/widgets/commits/head-oid/check-runs?per_page=100&page=1' + ], { cwd: '/repo-root', host: 'github.com' } ) expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( 3, - ['api', '--cache', '60s', 'repos/acme/widgets/commits/head-oid/status?per_page=100'], + ['api', '--cache', '60s', 'repos/acme/widgets/commits/head-oid/status?per_page=100&page=1'], { cwd: '/repo-root', host: 'github.com' } ) expect(checks).toEqual([ @@ -559,7 +569,7 @@ describe('getPRChecks', () => { stdout: JSON.stringify([{ name: 'lint', state: 'PASS', link: 'https://example.com/lint' }]) }) - const checks = await getPRChecks('/repo-root', 42, 'stale-head') + const checks = await getPRChecks('/repo-root', 42, 'a'.repeat(40)) expectGraphQLRollupCall() expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( @@ -762,3 +772,64 @@ describe('getPRChecks', () => { await expect(getPRChecks('/repo-root', 42)).rejects.toThrow('rate limited') }) }) + +it('carries the actual matching GraphQL commit identity rather than the requested head', async () => { + vi.clearAllMocks() + getOwnerRepoMock.mockResolvedValue({ owner: 'acme', repo: 'widgets' }) + ghExecFileAsyncMock.mockResolvedValueOnce( + graphQLChecksResponse({ + headRefOid: 'b'.repeat(40), + contexts: [{ __typename: 'StatusContext', context: 'Build', state: 'SUCCESS' }] + }) + ) + const checks = await getPRChecks('/repo-root', 42, 'a'.repeat(40)) + expect(JSON.parse(JSON.stringify(checks))).toEqual([ + { + name: 'Build', + status: 'completed', + conclusion: 'success', + url: null, + observedHeadSha: 'b'.repeat(40) + } + ]) + ghExecFileAsyncMock.mockResolvedValueOnce( + graphQLChecksResponse({ + headRefOid: 'a'.repeat(40), + commitOid: 'b'.repeat(40), + contexts: [{ __typename: 'StatusContext', context: 'Build', state: 'SUCCESS' }] + }) + ) + expect((await getPRChecks('/repo-root', 42, 'a'.repeat(40)))[0].observedHeadSha).toBeUndefined() +}) + +it('carries immutable REST endpoint identity through useful incomplete enrichment', async () => { + vi.clearAllMocks() + ghExecFileAsyncMock + .mockResolvedValueOnce({ + stdout: JSON.stringify({ + total_count: 1, + check_runs: [ + { + id: 88, + name: 'Build', + status: 'completed', + conclusion: 'failure', + html_url: '', + details_url: null + } + ] + }) + }) + .mockRejectedValueOnce(new Error('statuses unavailable')) + .mockResolvedValueOnce({ stdout: JSON.stringify({ total_count: 0, check_suites: [] }) }) + const checks = await getPRChecksViaRestFallback( + { owner: 'acme', repo: 'widgets', host: 'github.com' }, + 'a'.repeat(40), + { cwd: '/repo-root' }, + true + ) + expect(checks).toMatchObject([{ name: 'Build', observedHeadSha: 'a'.repeat(40) }]) + expect(ghExecFileAsyncMock.mock.calls[0][0]).toContain( + `repos/acme/widgets/commits/${'a'.repeat(40)}/check-runs?per_page=100&page=1` + ) +}) diff --git a/src/main/github/client-pr-conflict-summary.test.ts b/src/main/github/client-pr-conflict-summary.test.ts index 722df01221f..8a43f7d634b 100644 --- a/src/main/github/client-pr-conflict-summary.test.ts +++ b/src/main/github/client-pr-conflict-summary.test.ts @@ -1,6 +1,6 @@ import type * as GitExecFileModule from '../git/command-runner/git-exec-file' import type * as GhExecFileModule from '../git/command-runner/gh-exec-file' -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type * as GithubApiRepositoryModule from './github-api-repository' import type * as GitHubEnterpriseRepositoryModule from './github-enterprise-repository' @@ -41,23 +41,23 @@ vi.mock('./github-api-repository', async (importOriginal) => ) import { getPRForBranch } from './client/lookup/get-pr-for-branch' -import { resetPRForBranchMocks } from './client-test-harness' +import { installIndependentCheckFixtures, resetPRForBranchMocks } from './client-test-harness' -const { - ghExecFileAsyncMock, - getOwnerRepoMock, - resolvePRRepositoryCandidatesMock, - gitExecFileAsyncMock -} = clientMocks +const { getOwnerRepoMock, resolvePRRepositoryCandidatesMock, gitExecFileAsyncMock } = clientMocks + +const metadataRequests = vi.fn() +const unexpectedChecks: string[][] = [] +afterEach(() => expect(unexpectedChecks).toEqual([])) describe('getPRForBranch', () => { beforeEach(() => { resetPRForBranchMocks(clientMocks) + installIndependentCheckFixtures(clientMocks, metadataRequests, unexpectedChecks) }) it('derives a read-only conflict summary for conflicting PRs when the base ref exists locally', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -92,7 +92,7 @@ describe('getPRForBranch', () => { it('routes local WSL branch status and conflict summary git probes through the selected distro', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -123,7 +123,7 @@ describe('getPRForBranch', () => { expect(resolvePRRepositoryCandidatesMock).toHaveBeenCalledWith('/repo-root', null, { wslDistro: 'Ubuntu' }) - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledWith( expect.any(Array), expect.objectContaining({ cwd: '/repo-root', @@ -154,7 +154,7 @@ describe('getPRForBranch', () => { it('treats GitHub DIRTY merge state as conflicting when mergeable is still unknown', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 42, @@ -191,7 +191,7 @@ describe('getPRForBranch', () => { it('omits conflict summaries for SSH-backed repos', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -216,7 +216,7 @@ describe('getPRForBranch', () => { it('keeps conflicted file paths when git merge-tree exits 1 with stdout', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -248,7 +248,7 @@ describe('getPRForBranch', () => { it('falls back to the legacy merge-tree invocation when Git lacks --merge-base', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -337,7 +337,7 @@ describe('getPRForBranch', () => { // Change head OID to bypass the result cache while retaining the learned Git capability. const pushedBranchLookup = { ...branchLookup, head: { ref: 'feature/test', sha: 'head-oid-2' } } const pushedExactLookup = { ...exactLookup, headRefOid: 'head-oid-2' } - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify([branchLookup]) }) .mockResolvedValueOnce({ stdout: JSON.stringify(exactLookup) }) .mockResolvedValueOnce({ @@ -376,7 +376,7 @@ describe('getPRForBranch', () => { it('does not retry legacy merge-tree for older Git failures unrelated to --merge-base', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -424,7 +424,7 @@ describe('getPRForBranch', () => { it('marks the conflict summary as locally clean when GitHub reports dirty but merge-tree has no conflicted files', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, @@ -461,7 +461,7 @@ describe('getPRForBranch', () => { it('falls back to GitHub baseRefOid when fetching or resolving the base ref fails', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify([ { number: 42, diff --git a/src/main/github/client-pr-fallback-number.test.ts b/src/main/github/client-pr-fallback-number.test.ts index 463405cf1d1..7a311c8023f 100644 --- a/src/main/github/client-pr-fallback-number.test.ts +++ b/src/main/github/client-pr-fallback-number.test.ts @@ -1,6 +1,6 @@ import type * as GitExecFileModule from '../git/command-runner/git-exec-file' import type * as GhExecFileModule from '../git/command-runner/gh-exec-file' -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type * as GithubApiRepositoryModule from './github-api-repository' import type * as GitHubEnterpriseRepositoryModule from './github-enterprise-repository' @@ -39,7 +39,7 @@ vi.mock('./github-api-repository', async (importOriginal) => import { getPRForBranchOutcome } from './client/lookup/pr-for-branch-outcome' import { getPRForBranch } from './client/lookup/get-pr-for-branch' -import { resetPRForBranchMocks } from './client-test-harness' +import { resetPRForBranchMocks, mockPRLookupRoutes } from './client-test-harness' const { ghExecFileAsyncMock, @@ -49,95 +49,126 @@ const { gitExecFileAsyncMock } = clientMocks +const unexpectedRequests: string[][] = [] +function metadataCalls() { + return ghExecFileAsyncMock.mock.calls.filter( + ([args]) => + args[0] === 'pr' || + (args[0] === 'api' && args[1]?.startsWith('repos/') && args[1].includes('/pulls?')) + ) +} + +function mockLookupRoutes( + routes: Parameters[1], + unavailableChecks = false +): void { + mockPRLookupRoutes(clientMocks, routes, unavailableChecks, unexpectedRequests) +} + describe('getPRForBranch', () => { + afterEach(() => { + expect(unexpectedRequests).toEqual([]) + }) beforeEach(() => { + unexpectedRequests.length = 0 resetPRForBranchMocks(clientMocks) }) it('prefers branch lookup over a fallback PR number', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { - number: 43, - title: 'Branch PR wins', - state: 'open', - html_url: 'https://github.com/acme/widgets/pull/43', - updated_at: '2026-03-28T00:00:00Z', - draft: false, - mergeable: true, - head: { ref: 'feature/test', sha: 'branch-head-oid' }, - base: { ref: 'main', sha: 'branch-base-oid' } - } - ]) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 43, - title: 'Hydrated branch PR wins', - state: 'OPEN', - url: 'https://github.com/acme/widgets/pull/43', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'branch-base-oid', - headRefOid: 'branch-head-oid' + mockLookupRoutes([ + [ + 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ + stdout: JSON.stringify([ + { + number: 43, + title: 'Branch PR wins', + state: 'open', + html_url: 'https://github.com/acme/widgets/pull/43', + updated_at: '2026-03-28T00:00:00Z', + draft: false, + mergeable: true, + head: { ref: 'feature/test', sha: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' }, + base: { ref: 'main', sha: 'branch-base-oid' } + } + ]) }) - }) + ], + [ + 'view:acme/widgets:43', + async () => ({ + stdout: JSON.stringify({ + number: 43, + title: 'Hydrated branch PR wins', + state: 'OPEN', + url: 'https://github.com/acme/widgets/pull/43', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'branch-base-oid', + headRefOid: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + }) + }) + ] + ]) const pr = await getPRForBranch('/repo-root', 'feature/test', null, null, 42) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 1, + expect(metadataCalls()).toHaveLength(2) + expect(metadataCalls()[0]).toEqual([ [ 'api', 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', '--include' ], { cwd: '/repo-root' } - ) + ]) expect(pr).toMatchObject({ number: 43, title: 'Hydrated branch PR wins' }) }) it('uses a fallback PR number only after branch lookup misses', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 42, - title: 'Fallback PR lookup', - state: 'OPEN', - url: 'https://github.com/acme/widgets/pull/42', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'contributor/original', - baseRefOid: 'base-oid', - headRefOid: 'fallback-head-oid' + mockLookupRoutes([ + [ + 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ], + [ + 'view:acme/widgets:42', + async () => ({ + stdout: JSON.stringify({ + number: 42, + title: 'Fallback PR lookup', + state: 'OPEN', + url: 'https://github.com/acme/widgets/pull/42', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'contributor/original', + baseRefOid: 'base-oid', + headRefOid: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' + }) }) - }) + ] + ]) const pr = await getPRForBranch('/repo-root', 'feature/test', null, null, 42) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 1, + expect(metadataCalls()[0]).toEqual([ [ 'api', 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', '--include' ], { cwd: '/repo-root' } - ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 2, + ]) + expect(metadataCalls()[1]).toEqual([ [ 'pr', 'view', @@ -145,10 +176,10 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } - ) + ]) expect(pr).toMatchObject({ number: 42, title: 'Fallback PR lookup' }) }) @@ -157,9 +188,18 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 429: API rate limit exceeded')) - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('HTTP 429: API rate limit exceeded') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -167,8 +207,7 @@ describe('getPRForBranch', () => { kind: 'upstream-error', errorType: 'rate_limited' }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 1, + expect(metadataCalls()[0]).toEqual([ [ 'pr', 'list', @@ -181,19 +220,18 @@ describe('getPRForBranch', () => { '--limit', '10', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } - ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 2, + ]) + expect(metadataCalls()[1]).toEqual([ [ 'api', 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', '--include' ], { cwd: '/repo-root' } - ) + ]) }) it('propagates a Retry-After cooldown into the rate-limited retry schedule', async () => { @@ -202,13 +240,20 @@ describe('getPRForBranch', () => { headRepo: null }) // gh puts the diagnostic on `.stderr`; a secondary limit carries Retry-After. - ghExecFileAsyncMock - .mockRejectedValueOnce( - Object.assign(new Error('gh exited with 1.'), { - stderr: 'HTTP 403: You have exceeded a secondary rate limit\nRetry-After: 120' - }) - ) - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw Object.assign(new Error('gh exited with 1.'), { + stderr: 'HTTP 403: You have exceeded a secondary rate limit\nRetry-After: 120' + }) + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ] + ]) const before = Date.now() const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -228,12 +273,14 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock.mockResolvedValueOnce({ stdout: JSON.stringify([]) }) + mockLookupRoutes([ + ['list:stablyai/orca:feature/test', async () => ({ stdout: JSON.stringify([]) })] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') expect(outcome.kind).toBe('no-pr') - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(1) + expect(metadataCalls()).toHaveLength(1) }) it('returns found when fallback branch discovery retry finds the PR', async () => { @@ -241,39 +288,51 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 429: API rate limit exceeded')) - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { - number: 42, - title: 'Retry branch PR', - state: 'open', - html_url: 'https://github.com/stablyai/orca/pull/42', - updated_at: '2026-03-28T00:00:00Z', - draft: false, - mergeable: true, - base: { ref: 'main', sha: 'base-oid' }, - head: { ref: 'feature/test', sha: 'retry-head-oid' } - } - ]) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 42, - title: 'Hydrated retry branch PR', - state: 'OPEN', - url: 'https://github.com/stablyai/orca/pull/42', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'retry-head-oid' + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('HTTP 429: API rate limit exceeded') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ + stdout: JSON.stringify([ + { + number: 42, + title: 'Retry branch PR', + state: 'open', + html_url: 'https://github.com/stablyai/orca/pull/42', + updated_at: '2026-03-28T00:00:00Z', + draft: false, + mergeable: true, + base: { ref: 'main', sha: 'base-oid' }, + head: { ref: 'feature/test', sha: 'dddddddddddddddddddddddddddddddddddddddd' } + } + ]) }) - }) + ], + [ + 'view:stablyai/orca:42', + async () => ({ + stdout: JSON.stringify({ + number: 42, + title: 'Hydrated retry branch PR', + state: 'OPEN', + url: 'https://github.com/stablyai/orca/pull/42', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'dddddddddddddddddddddddddddddddddddddddd' + }) + }) + ] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -292,25 +351,39 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 429: API rate limit exceeded')) - .mockRejectedValueOnce(new Error('HTTP 502: Bad Gateway')) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 42, - title: 'Fallback number recovered PR', - state: 'OPEN', - url: 'https://github.com/stablyai/orca/pull/42', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'fallback-head-oid' + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('HTTP 429: API rate limit exceeded') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => { + throw new Error('HTTP 502: Bad Gateway') + } + ], + [ + 'view:stablyai/orca:42', + async () => ({ + stdout: JSON.stringify({ + number: 42, + title: 'Fallback number recovered PR', + state: 'OPEN', + url: 'https://github.com/stablyai/orca/pull/42', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' + }) }) - }) + ] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test', null, null, 42) @@ -321,8 +394,7 @@ describe('getPRForBranch', () => { title: 'Fallback number recovered PR' } }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 3, + expect(metadataCalls()[2]).toEqual([ [ 'pr', 'view', @@ -330,10 +402,10 @@ describe('getPRForBranch', () => { '--repo', 'stablyai/orca', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } - ) + ]) }) it('reports upstream error when fallback branch discovery has a network failure', async () => { @@ -341,9 +413,20 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('could not resolve host: api.github.com')) - .mockRejectedValueOnce(new Error('could not resolve host: api.github.com')) + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('could not resolve host: api.github.com') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => { + throw new Error('could not resolve host: api.github.com') + } + ] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -358,9 +441,20 @@ describe('getPRForBranch', () => { candidates: [{ owner: 'stablyai', repo: 'orca' }], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 503: Service Unavailable')) - .mockRejectedValueOnce(new Error('HTTP 502: Bad Gateway')) + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('HTTP 503: Service Unavailable') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => { + throw new Error('HTTP 502: Bad Gateway') + } + ] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -378,10 +472,19 @@ describe('getPRForBranch', () => { ], headRepo: null }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 429: API rate limit exceeded')) - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) + mockLookupRoutes([ + [ + 'list:stablyai/orca:feature/test', + async () => { + throw new Error('HTTP 429: API rate limit exceeded') + } + ], + [ + 'repos/stablyai/orca/pulls?head=stablyai%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ], + ['list:fork/orca:feature/test', async () => ({ stdout: JSON.stringify([]) })] + ]) const outcome = await getPRForBranchOutcome('/repo-root', 'feature/test') @@ -389,8 +492,7 @@ describe('getPRForBranch', () => { kind: 'upstream-error', errorType: 'rate_limited' }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 3, + expect(metadataCalls()[2]).toEqual([ [ 'pr', 'list', @@ -403,63 +505,76 @@ describe('getPRForBranch', () => { '--limit', '10', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } - ) + ]) }) it('treats a merged branch lookup as a miss before using a fallback PR number', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { - number: 5511, - title: 'Merged branch PR', - state: 'closed', - merged_at: '2026-06-16T17:15:33Z', - html_url: 'https://github.com/stablyai/orca/pull/5511', - updated_at: '2026-06-16T17:15:33Z', - draft: false, - mergeable_state: 'clean', - head: { ref: 'feature/test', sha: 'merged-head-oid' }, - base: { ref: 'main', sha: 'base-oid' } - } - ]) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged branch PR', - state: 'MERGED', - url: 'https://github.com/stablyai/orca/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'merged-head-oid' - }) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 42, - title: 'Open fallback PR', - state: 'OPEN', - url: 'https://github.com/acme/widgets/pull/42', - statusCheckRollup: [], - updatedAt: '2026-06-17T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'contributor/original', - baseRefOid: 'base-oid', - headRefOid: 'fallback-head-oid' - }) - }) + mockLookupRoutes( + [ + [ + 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ + stdout: JSON.stringify([ + { + number: 5511, + title: 'Merged branch PR', + state: 'closed', + merged_at: '2026-06-16T17:15:33Z', + html_url: 'https://github.com/stablyai/orca/pull/5511', + updated_at: '2026-06-16T17:15:33Z', + draft: false, + mergeable_state: 'clean', + head: { ref: 'feature/test', sha: 'cccccccccccccccccccccccccccccccccccccccc' }, + base: { ref: 'main', sha: 'base-oid' } + } + ]) + }) + ], + [ + 'view:acme/widgets:5511', + async () => ({ + stdout: JSON.stringify({ + number: 5511, + title: 'Merged branch PR', + state: 'MERGED', + url: 'https://github.com/stablyai/orca/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'cccccccccccccccccccccccccccccccccccccccc' + }) + }) + ], + [ + 'view:acme/widgets:42', + async () => ({ + stdout: JSON.stringify({ + number: 42, + title: 'Open fallback PR', + state: 'OPEN', + url: 'https://github.com/acme/widgets/pull/42', + statusCheckRollup: [], + updatedAt: '2026-06-17T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'contributor/original', + baseRefOid: 'base-oid', + headRefOid: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' + }) + }) + ] + ], + true + ) const pr = await getPRForBranch('/repo-root', 'feature/test', null, null, 42) @@ -468,60 +583,69 @@ describe('getPRForBranch', () => { it('returns a merged PR when branch lookup and fallback point at the same PR', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { + mockLookupRoutes([ + [ + 'repos/acme/widgets/pulls?head=acme%3Afeature%2Ftest&state=all&per_page=10', + async () => ({ + stdout: JSON.stringify([ + { + number: 5511, + title: 'Merged current PR', + state: 'closed', + merged_at: '2026-06-16T17:15:33Z', + html_url: 'https://github.com/acme/widgets/pull/5511', + updated_at: '2026-06-16T17:15:33Z', + draft: false, + mergeable_state: 'clean', + head: { ref: 'feature/test', sha: 'cccccccccccccccccccccccccccccccccccccccc' }, + base: { ref: 'main', sha: 'base-oid' } + } + ]) + }) + ], + [ + 'view:acme/widgets:5511', + async () => ({ + stdout: JSON.stringify({ number: 5511, title: 'Merged current PR', - state: 'closed', - merged_at: '2026-06-16T17:15:33Z', - html_url: 'https://github.com/acme/widgets/pull/5511', - updated_at: '2026-06-16T17:15:33Z', - draft: false, - mergeable_state: 'clean', - head: { ref: 'feature/test', sha: 'merged-head-oid' }, - base: { ref: 'main', sha: 'base-oid' } - } - ]) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged current PR', - state: 'MERGED', - url: 'https://github.com/acme/widgets/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'merged-head-oid' + state: 'MERGED', + url: 'https://github.com/acme/widgets/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'cccccccccccccccccccccccccccccccccccccccc' + }) }) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged current PR', - state: 'MERGED', - url: 'https://github.com/acme/widgets/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'merged-head-oid' + ], + [ + 'view:acme/widgets:5511', + async () => ({ + stdout: JSON.stringify({ + number: 5511, + title: 'Merged current PR', + state: 'MERGED', + url: 'https://github.com/acme/widgets/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'cccccccccccccccccccccccccccccccccccccccc' + }) }) - }) + ] + ]) const pr = await getPRForBranch('/repo-root', 'feature/test', null, null, 5511) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( - 3, + expect(metadataCalls()[2]).toEqual([ [ 'pr', 'view', @@ -529,10 +653,10 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } - ) + ]) expect(pr).toMatchObject({ number: 5511, state: 'merged', title: 'Merged current PR' }) }) @@ -546,56 +670,75 @@ describe('getPRForBranch', () => { stdout: 'local-created-from-pr\0fork/contributor/original\n', stderr: '' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { - number: 5511, - title: 'Merged upstream branch PR', - state: 'closed', - merged_at: '2026-06-16T17:15:33Z', - html_url: 'https://github.com/stablyai/orca/pull/5511', - updated_at: '2026-06-16T17:15:33Z', - draft: false, - mergeable_state: 'clean', - head: { ref: 'contributor/original', sha: 'merged-head-oid' }, - base: { ref: 'main', sha: 'base-oid' } - } - ]) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged upstream branch PR', - state: 'MERGED', - url: 'https://github.com/stablyai/orca/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'contributor/original', - baseRefOid: 'base-oid', - headRefOid: 'merged-head-oid' - }) - }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 42, - title: 'Open fallback PR', - state: 'OPEN', - url: 'https://github.com/stablyai/orca/pull/42', - statusCheckRollup: [], - updatedAt: '2026-06-17T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'fresh/fallback', - baseRefOid: 'base-oid', - headRefOid: 'fallback-head-oid' - }) - }) + mockLookupRoutes( + [ + [ + 'repos/stablyai/orca/pulls?head=origin-owner%3Alocal-created-from-pr&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ], + [ + 'repos/stablyai/orca/pulls?head=fork-owner%3Acontributor%2Foriginal&state=all&per_page=10', + async () => ({ + stdout: JSON.stringify([ + { + number: 5511, + title: 'Merged upstream branch PR', + state: 'closed', + merged_at: '2026-06-16T17:15:33Z', + html_url: 'https://github.com/stablyai/orca/pull/5511', + updated_at: '2026-06-16T17:15:33Z', + draft: false, + mergeable_state: 'clean', + head: { + ref: 'contributor/original', + sha: 'cccccccccccccccccccccccccccccccccccccccc' + }, + base: { ref: 'main', sha: 'base-oid' } + } + ]) + }) + ], + [ + 'view:stablyai/orca:5511', + async () => ({ + stdout: JSON.stringify({ + number: 5511, + title: 'Merged upstream branch PR', + state: 'MERGED', + url: 'https://github.com/stablyai/orca/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'contributor/original', + baseRefOid: 'base-oid', + headRefOid: 'cccccccccccccccccccccccccccccccccccccccc' + }) + }) + ], + [ + 'view:stablyai/orca:42', + async () => ({ + stdout: JSON.stringify({ + number: 42, + title: 'Open fallback PR', + state: 'OPEN', + url: 'https://github.com/stablyai/orca/pull/42', + statusCheckRollup: [], + updatedAt: '2026-06-17T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'fresh/fallback', + baseRefOid: 'base-oid', + headRefOid: 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' + }) + }) + ] + ], + true + ) const pr = await getPRForBranch('/repo-root', 'local-created-from-pr', null, null, 42) @@ -608,24 +751,31 @@ describe('getPRForBranch', () => { it('ignores merged PRs discovered only from a fallback PR number', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged fallback PR', - state: 'MERGED', - url: 'https://github.com/stablyai/orca/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'add-guide-for-mobile-emulator-use', - baseRefOid: 'base-oid', - headRefOid: 'head-oid' + mockLookupRoutes([ + [ + 'repos/acme/widgets/pulls?head=acme%3Aadd-guide-for-mobile-emulator-use&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ], + [ + 'view:acme/widgets:5511', + async () => ({ + stdout: JSON.stringify({ + number: 5511, + title: 'Merged fallback PR', + state: 'MERGED', + url: 'https://github.com/stablyai/orca/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'add-guide-for-mobile-emulator-use', + baseRefOid: 'base-oid', + headRefOid: 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' + }) }) - }) + ] + ]) const pr = await getPRForBranch( '/repo-root', @@ -640,24 +790,31 @@ describe('getPRForBranch', () => { it('returns a merged fallback PR when visible fallback lifecycle is accepted', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockResolvedValueOnce({ stdout: JSON.stringify([]) }) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 5511, - title: 'Merged visible fallback PR', - state: 'MERGED', - url: 'https://github.com/acme/widgets/pull/5511', - statusCheckRollup: [], - updatedAt: '2026-06-16T17:15:33Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'deleted-head', - baseRefOid: 'base-oid', - headRefOid: 'head-oid' + mockLookupRoutes([ + [ + 'repos/acme/widgets/pulls?head=acme%3Adeleted-head&state=all&per_page=10', + async () => ({ stdout: JSON.stringify([]) }) + ], + [ + 'view:acme/widgets:5511', + async () => ({ + stdout: JSON.stringify({ + number: 5511, + title: 'Merged visible fallback PR', + state: 'MERGED', + url: 'https://github.com/acme/widgets/pull/5511', + statusCheckRollup: [], + updatedAt: '2026-06-16T17:15:33Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'deleted-head', + baseRefOid: 'base-oid', + headRefOid: 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' + }) }) - }) + ] + ]) const pr = await getPRForBranch('/repo-root', 'deleted-head', null, null, 5511, { acceptMergedFallbackPR: true diff --git a/src/main/github/client-pr-linked-lookup.test.ts b/src/main/github/client-pr-linked-lookup.test.ts index 44941276ec1..d38707d6f67 100644 --- a/src/main/github/client-pr-linked-lookup.test.ts +++ b/src/main/github/client-pr-linked-lookup.test.ts @@ -1,6 +1,6 @@ import type * as GitExecFileModule from '../git/command-runner/git-exec-file' import type * as GhExecFileModule from '../git/command-runner/gh-exec-file' -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type * as GithubApiRepositoryModule from './github-api-repository' import type * as GitHubEnterpriseRepositoryModule from './github-enterprise-repository' @@ -38,18 +38,18 @@ vi.mock('./github-api-repository', async (importOriginal) => ) import { getPRForBranch } from './client/lookup/get-pr-for-branch' -import { resetPRForBranchMocks } from './client-test-harness' +import { installIndependentCheckFixtures, resetPRForBranchMocks } from './client-test-harness' -const { - ghExecFileAsyncMock, - getOwnerRepoMock, - resolvePRRepositoryCandidatesMock, - gitExecFileAsyncMock -} = clientMocks +const { getOwnerRepoMock, resolvePRRepositoryCandidatesMock, gitExecFileAsyncMock } = clientMocks + +const metadataRequests = vi.fn() +const unexpectedChecks: string[][] = [] +afterEach(() => expect(unexpectedChecks).toEqual([])) describe('getPRForBranch', () => { beforeEach(() => { resetPRForBranchMocks(clientMocks) + installIndependentCheckFixtures(clientMocks, metadataRequests, unexpectedChecks) }) it('looks up a linked PR number across PR repo candidates', async () => { @@ -61,28 +61,26 @@ describe('getPRForBranch', () => { headRepo: { owner: 'fork', repo: 'orca' } }) gitExecFileAsyncMock.mockResolvedValueOnce({ stdout: 'linked-head-oid\n', stderr: '' }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 404: Not Found')) - .mockResolvedValueOnce({ - stdout: JSON.stringify({ - number: 99, - title: 'Linked fork PR', - state: 'OPEN', - url: 'https://github.com/fork/orca/pull/99', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'linked-head-oid' - }) + metadataRequests.mockRejectedValueOnce(new Error('HTTP 404: Not Found')).mockResolvedValueOnce({ + stdout: JSON.stringify({ + number: 99, + title: 'Linked fork PR', + state: 'OPEN', + url: 'https://github.com/fork/orca/pull/99', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'linked-head-oid' }) + }) const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, [ 'pr', @@ -91,11 +89,11 @@ describe('getPRForBranch', () => { '--repo', 'stablyai/orca', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, [ 'pr', @@ -104,7 +102,7 @@ describe('getPRForBranch', () => { '--repo', 'fork/orca', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) @@ -114,7 +112,7 @@ describe('getPRForBranch', () => { it('prefers exact linked PR lookup when the repo identity is known', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) gitExecFileAsyncMock.mockResolvedValueOnce({ stdout: 'linked-head-oid\n', stderr: '' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: 99, title: 'Linked PR', @@ -133,9 +131,9 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'feature/local-worktree', 99) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(gitExecFileAsyncMock).not.toHaveBeenCalled() - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledWith( [ 'pr', 'view', @@ -143,7 +141,7 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) @@ -157,7 +155,7 @@ describe('getPRForBranch', () => { it('caches exact REST stack probes across linked PR refreshes', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { + metadataRequests.mockImplementation(async (args: string[]) => { if (args[0] === 'pr') { return { stdout: JSON.stringify({ @@ -190,16 +188,14 @@ describe('getPRForBranch', () => { await getPRForBranch('/repo-root', 'feature', 99, 'ssh-1') expect( - ghExecFileAsyncMock.mock.calls.filter( - ([args]) => args[0] === 'api' && args[1]?.includes('/99') - ) + metadataRequests.mock.calls.filter(([args]) => args[0] === 'api' && args[1]?.includes('/99')) ).toHaveLength(2) - expect(ghExecFileAsyncMock.mock.calls.filter(([args]) => args[0] === 'pr')).toHaveLength(3) + expect(metadataRequests.mock.calls.filter(([args]) => args[0] === 'pr')).toHaveLength(3) }) it('caches failed REST stack probes across linked PR refreshes', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { + metadataRequests.mockImplementation(async (args: string[]) => { if (args[0] === 'pr') { return { stdout: JSON.stringify({ @@ -224,15 +220,13 @@ describe('getPRForBranch', () => { await getPRForBranch('/repo-root', 'feature', 99) expect( - ghExecFileAsyncMock.mock.calls.filter( - ([args]) => args[0] === 'api' && args[1]?.includes('/99') - ) + metadataRequests.mock.calls.filter(([args]) => args[0] === 'api' && args[1]?.includes('/99')) ).toHaveLength(1) }) it('hydrates repository merge method settings for exact PR lookups', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 99, @@ -279,7 +273,7 @@ describe('getPRForBranch', () => { }) expect(pr?.mergeQueueRequired).toBe(false) expect(pr?.autoMergeAllowed).toBe(true) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, expect.arrayContaining([ 'api', @@ -298,7 +292,7 @@ describe('getPRForBranch', () => { it('isolates viewer-dependent merge metadata across SSH connections', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'acme', repo: 'widgets' }) let metadataProbe = 0 - ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { + metadataRequests.mockImplementation(async (args: string[]) => { if (args.includes('graphql')) { metadataProbe += 1 return { @@ -346,7 +340,7 @@ describe('getPRForBranch', () => { it('treats linked PR metadata as authoritative even when the branch head differs', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) gitExecFileAsyncMock.mockResolvedValueOnce({ stdout: 'current-worktree-head\n', stderr: '' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 99, @@ -384,36 +378,34 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(pr?.number).toBe(99) }) it('does not fall back to branch discovery when linked PR metadata is stale', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock - .mockRejectedValueOnce(new Error('HTTP 404: Not Found')) - .mockResolvedValueOnce({ - stdout: JSON.stringify([ - { - number: 42, - title: 'Branch PR', - state: 'OPEN', - url: 'https://github.com/acme/widgets/pull/42', - statusCheckRollup: [], - updatedAt: '2026-03-28T00:00:00Z', - isDraft: false, - mergeable: 'MERGEABLE', - baseRefName: 'main', - headRefName: 'feature/test', - baseRefOid: 'base-oid', - headRefOid: 'head-oid' - } - ]) - }) + metadataRequests.mockRejectedValueOnce(new Error('HTTP 404: Not Found')).mockResolvedValueOnce({ + stdout: JSON.stringify([ + { + number: 42, + title: 'Branch PR', + state: 'OPEN', + url: 'https://github.com/acme/widgets/pull/42', + statusCheckRollup: [], + updatedAt: '2026-03-28T00:00:00Z', + isDraft: false, + mergeable: 'MERGEABLE', + baseRefName: 'main', + headRefName: 'feature/test', + baseRefOid: 'base-oid', + headRefOid: 'head-oid' + } + ]) + }) const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, [ 'pr', @@ -422,17 +414,17 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(1) + expect(metadataRequests).toHaveBeenCalledTimes(1) expect(pr).toBeNull() }) it('returns no PR when linked PR REST fallback also misses', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockRejectedValueOnce(new Error('GraphQL: could not resolve to PullRequest')) .mockRejectedValueOnce(new Error('HTTP 404: Not Found')) .mockResolvedValueOnce({ @@ -456,20 +448,20 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, ['api', 'repos/acme/widgets/pulls/99', '--include'], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(pr).toBeNull() }) it('returns no PR when linked PR REST fallback has an unclassified failure', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockRejectedValueOnce(new Error('GraphQL: server exploded')) .mockRejectedValueOnce(new Error('HTTP 500: server error')) .mockResolvedValueOnce({ @@ -493,26 +485,26 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, ['api', 'repos/acme/widgets/pulls/99', '--include'], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(pr).toBeNull() }) it('does not continue to branch discovery when linked PR REST fallback is rate limited', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock + metadataRequests .mockRejectedValueOnce(new Error('GraphQL: API rate limit already exceeded')) .mockRejectedValueOnce(new Error('REST API rate limit already exceeded')) const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, [ 'pr', @@ -521,24 +513,24 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, ['api', 'repos/acme/widgets/pulls/99', '--include'], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(pr).toBeNull() }) it('uses linked PR number as the source of truth when provided', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: 77, title: 'Linked PR lookup', @@ -557,8 +549,8 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'refs/heads/local-created-from-pr', 77) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledWith( [ 'pr', 'view', @@ -566,7 +558,7 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) @@ -575,7 +567,7 @@ describe('getPRForBranch', () => { it('normalizes exact linked PR fallback metadata when no GitHub remote is resolved', async () => { getOwnerRepoMock.mockResolvedValueOnce(null) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: 77, title: 'Linked fallback PR', @@ -596,13 +588,13 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/non-github-repo', 'feature/test', 77) - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledWith( [ 'pr', 'view', '77', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/non-github-repo' } ) @@ -617,7 +609,7 @@ describe('getPRForBranch', () => { it('falls back to gh pr view when the remote cannot be resolved to GitHub', async () => { getOwnerRepoMock.mockResolvedValueOnce(null) gitExecFileAsyncMock.mockResolvedValue({ stdout: '', stderr: '' }) - ghExecFileAsyncMock.mockResolvedValueOnce({ + metadataRequests.mockResolvedValueOnce({ stdout: JSON.stringify({ number: 7, title: 'Fallback lookup', @@ -636,13 +628,13 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/non-github-repo', 'feature/test') - expect(ghExecFileAsyncMock).toHaveBeenCalledWith( + expect(metadataRequests).toHaveBeenCalledWith( [ 'pr', 'view', 'feature/test', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/non-github-repo' } ) @@ -654,7 +646,7 @@ describe('getPRForBranch', () => { it('falls back to REST number lookup when linked PR GraphQL lookup is rate limited', async () => { getOwnerRepoMock.mockResolvedValueOnce({ owner: 'acme', repo: 'widgets' }) gitExecFileAsyncMock.mockResolvedValueOnce({ stdout: 'linked-head-oid\n', stderr: '' }) - ghExecFileAsyncMock + metadataRequests .mockRejectedValueOnce(new Error('GraphQL: API rate limit already exceeded')) .mockResolvedValueOnce({ stdout: JSON.stringify({ @@ -673,7 +665,7 @@ describe('getPRForBranch', () => { const pr = await getPRForBranch('/repo-root', 'feature/test', 99) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 1, [ 'pr', @@ -682,18 +674,18 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 2, ['api', 'repos/acme/widgets/pulls/99', '--include'], { cwd: '/repo-root' } ) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(2) + expect(metadataRequests).toHaveBeenCalledTimes(2) expect(pr).toMatchObject({ number: 99, state: 'merged', diff --git a/src/main/github/client-pr-local-runtime.test.ts b/src/main/github/client-pr-local-runtime.test.ts index a49478bbcdb..baca07ebcdd 100644 --- a/src/main/github/client-pr-local-runtime.test.ts +++ b/src/main/github/client-pr-local-runtime.test.ts @@ -475,9 +475,10 @@ describe('GitHub PR local runtime routing', () => { ) { return { stdout: '[]' } } - if (endpoint.endsWith('/commits/head-sha/check-runs?per_page=100')) { + if (endpoint.endsWith('/commits/head-sha/check-runs?per_page=100&page=1')) { return { stdout: JSON.stringify({ + total_count: 1, check_runs: [ { id: 88, @@ -490,11 +491,11 @@ describe('GitHub PR local runtime routing', () => { }) } } - if (endpoint.endsWith('/commits/head-sha/status?per_page=100')) { - return { stdout: JSON.stringify({ statuses: [] }) } + if (endpoint.endsWith('/commits/head-sha/status?per_page=100&page=1')) { + return { stdout: JSON.stringify({ total_count: 0, statuses: [] }) } } - if (endpoint.endsWith('/commits/head-sha/check-suites?per_page=100')) { - return { stdout: JSON.stringify({ check_suites: [] }) } + if (endpoint.endsWith('/commits/head-sha/check-suites?per_page=100&page=1')) { + return { stdout: JSON.stringify({ total_count: 0, check_suites: [] }) } } if (endpoint.endsWith('/check-runs/88')) { return { diff --git a/src/main/github/client-stack-merge-guard.test.ts b/src/main/github/client-stack-merge-guard.test.ts index 26f8d9816d8..846ce0b6e4c 100644 --- a/src/main/github/client-stack-merge-guard.test.ts +++ b/src/main/github/client-stack-merge-guard.test.ts @@ -39,20 +39,28 @@ vi.mock('./github-api-repository', async (importOriginal) => import { getPRForBranch } from './client/lookup/get-pr-for-branch' import { mergePR } from './client/merge/merge-pr' -import { resetGraphQLRateLimitGuardMocks } from './client-test-harness' +import { + installIndependentCheckFixtures, + resetGraphQLRateLimitGuardMocks +} from './client-test-harness' -const { ghExecFileAsyncMock, getOwnerRepoMock, acquireMock, releaseMock } = clientMocks +const { getOwnerRepoMock, acquireMock, releaseMock } = clientMocks + +const metadataRequests = vi.fn() +const unexpectedChecks: string[][] = [] +afterEach(() => expect(unexpectedChecks).toEqual([])) describe('GitHub GraphQL rate-limit guard', () => { beforeEach(() => { resetGraphQLRateLimitGuardMocks(clientMocks) + installIndependentCheckFixtures(clientMocks, metadataRequests, unexpectedChecks) }) afterEach(() => vi.restoreAllMocks()) it('hydrates GitHub-registered stack metadata for exact linked PRs', async () => { getOwnerRepoMock.mockResolvedValue({ owner: 'stablyai', repo: 'orca', host: 'github.com' }) - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ data: { @@ -74,7 +82,20 @@ describe('GitHub GraphQL rate-limit guard', () => { headRefOid: 'a'.repeat(40), headRepositoryOwner: { login: 'stablyai' }, headRepository: { name: 'orca' }, - commits: { nodes: [{ commit: { oid: 'a'.repeat(40), statusCheckRollup: null } }] }, + commits: { + nodes: [ + { + commit: { + oid: 'a'.repeat(40), + statusCheckRollup: null, + checkSuites: { + nodes: [], + pageInfo: { hasNextPage: false, endCursor: null } + } + } + } + ] + }, stack: { number: 51, size: 2, baseRefName: 'main' }, stackEntry: { position: 2 } } @@ -160,10 +181,10 @@ describe('GitHub GraphQL rate-limit guard', () => { ] }) expect(pr?.mergeQueueRequired).toBe(true) - expect(ghExecFileAsyncMock).toHaveBeenCalledTimes(4) - expect(ghExecFileAsyncMock.mock.calls[0][0]).toContain('number=202') - expect(ghExecFileAsyncMock.mock.calls[1][0]).toContain('branch=stack/models') - const mergeQueueMetadataCall = ghExecFileAsyncMock.mock.calls.find( + expect(metadataRequests).toHaveBeenCalledTimes(4) + expect(metadataRequests.mock.calls[0][0]).toContain('number=202') + expect(metadataRequests.mock.calls[1][0]).toContain('branch=stack/models') + const mergeQueueMetadataCall = metadataRequests.mock.calls.find( ([args]) => args.includes('graphql') && args.includes('branch=main') ) expect(mergeQueueMetadataCall?.[0]).toEqual(expect.arrayContaining(['-f', 'branch=main'])) @@ -185,7 +206,7 @@ describe('GitHub GraphQL rate-limit guard', () => { baseSha: undefined } ])('uses async merge only for GitHub-registered stacks using $objectFormat', async (scenario) => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 202, @@ -219,7 +240,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - const mergeCall = ghExecFileAsyncMock.mock.calls.find(([args]) => + const mergeCall = metadataRequests.mock.calls.find(([args]) => args.includes('repos/stablyai/orca/pulls/202/merge-async') ) expect(mergeCall?.[0]).toEqual( @@ -234,12 +255,12 @@ describe('GitHub GraphQL rate-limit guard', () => { expect(acquireMock).toHaveBeenCalledTimes(2) expect(releaseMock).toHaveBeenCalledTimes(2) expect( - ghExecFileAsyncMock.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') + metadataRequests.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') ).toBe(false) }) it('never falls back to legacy merge after an async stack merge transport failure', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 202, @@ -267,7 +288,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: false, error: 'socket closed after request submission' }) expect( - ghExecFileAsyncMock.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') + metadataRequests.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') ).toBe(false) }) @@ -558,12 +579,12 @@ describe('GitHub GraphQL rate-limit guard', () => { ])('fails closed on $failure', async (scenario) => { const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => undefined) if (scenario.probeResponse instanceof Error) { - ghExecFileAsyncMock.mockRejectedValueOnce(scenario.probeResponse) + metadataRequests.mockRejectedValueOnce(scenario.probeResponse) } else { - ghExecFileAsyncMock.mockResolvedValueOnce(scenario.probeResponse) + metadataRequests.mockResolvedValueOnce(scenario.probeResponse) } // Stub legacy merge fallthrough so disabling the guard cannot fail on an unrelated missing fixture. - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 202, @@ -589,20 +610,18 @@ describe('GitHub GraphQL rate-limit guard', () => { expect.soft(result).toEqual({ ok: false, error: scenario.expectedError }) expect - .soft(ghExecFileAsyncMock.mock.calls.map(([args]) => args)) + .soft(metadataRequests.mock.calls.map(([args]) => args)) .toEqual([['api', 'repos/stablyai/orca/pulls/202', '--include']]) - expect.soft(ghExecFileAsyncMock.mock.calls[0]?.[1]).toEqual(scenario.expectedOptions) + expect.soft(metadataRequests.mock.calls[0]?.[1]).toEqual(scenario.expectedOptions) expect .soft( - ghExecFileAsyncMock.mock.calls.some(([args]) => + metadataRequests.mock.calls.some(([args]) => args.includes('repos/stablyai/orca/pulls/202/merge-async') ) ) .toBe(false) expect - .soft( - ghExecFileAsyncMock.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge') - ) + .soft(metadataRequests.mock.calls.some(([args]) => args[0] === 'pr' && args[1] === 'merge')) .toBe(false) expect.soft(acquireMock).toHaveBeenCalledTimes(1) expect.soft(releaseMock).toHaveBeenCalledTimes(1) @@ -619,7 +638,7 @@ describe('GitHub GraphQL rate-limit guard', () => { { stackVariant: 'omits stack', stackField: {} }, { stackVariant: 'sets stack to null', stackField: { stack: null } } ])('keeps legacy merge when an ordinary GitHub response $stackVariant', async (scenario) => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 13866, @@ -659,7 +678,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, ['pr', 'merge', '13866', '--squash', '--repo', 'stablyai/orca'], expect.objectContaining({ env: expect.objectContaining({ GH_PROMPT_DISABLED: '1' }) }) @@ -669,7 +688,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) it('keeps legacy merge for unregistered dependent PR chains', async () => { - ghExecFileAsyncMock + metadataRequests .mockResolvedValueOnce({ stdout: JSON.stringify({ number: 202, @@ -704,7 +723,7 @@ describe('GitHub GraphQL rate-limit guard', () => { }) ).resolves.toEqual({ ok: true }) - expect(ghExecFileAsyncMock).toHaveBeenNthCalledWith( + expect(metadataRequests).toHaveBeenNthCalledWith( 3, ['pr', 'merge', '202', '--squash', '--repo', 'stablyai/orca'], expect.objectContaining({ env: expect.objectContaining({ GH_PROMPT_DISABLED: '1' }) }) diff --git a/src/main/github/client-test-harness.ts b/src/main/github/client-test-harness.ts index c7985f2a5da..424d0dc7157 100644 --- a/src/main/github/client-test-harness.ts +++ b/src/main/github/client-test-harness.ts @@ -1,3 +1,5 @@ +import type { Mock } from 'vitest' +import { completePRCheckGraphQLResponse } from '../../shared/github/complete-pr-check-test-fixture' import type { GitHubClientMocks } from './client-test-mocks' import { _resetOwnerRepoCache } from './gh-utils' import { _resetMergeQueueCacheForTests } from './client/detect/repository-merge-metadata-cache' @@ -83,3 +85,151 @@ export function resetGraphQLRateLimitGuardMocks(mocks: GitHubClientMocks): void _resetPRStackSummaryCacheForTests() __resetPRConflictSummaryCachesForTests() } + +export function mockPRLookupRoutes( + mocks: GitHubClientMocks, + routes: [string, () => Promise<{ stdout: string }>][], + unavailableChecks = false, + unexpectedRequests: string[][] = [], + contexts: Record[] = [] +): void { + const { ghExecFileAsyncMock } = mocks + const metadata = new Map>() + ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { + const repo = args[args.indexOf('--repo') + 1] + const key = + args[0] === 'pr' + ? args[1] === 'view' + ? `view:${repo}:${args[2]}` + : `list:${repo}:${args[args.indexOf('--head') + 1]}` + : args[1] + const index = routes.findIndex(([route]) => route === key) + if (index !== -1) { + const [, respond] = routes.splice(index, 1)[0]! + const result = await respond() + if (args[0] === 'pr' && args[1] === 'view') { + metadata.set(`${repo}:${args[2]}`, JSON.parse(result.stdout)) + } + return result + } + if (args[0] === 'api') { + const target = [...metadata].find( + ([identity]) => args[1] === `repos/${identity.replace(':', '/pulls/')}` + ) + if (target) { + const [, item] = target + return { + stdout: JSON.stringify({ + number: item.number, + title: item.title, + state: String(item.state).toLowerCase(), + html_url: item.url, + updated_at: item.updatedAt, + draft: item.isDraft, + head: { ref: item.headRefName, sha: item.headRefOid }, + base: { ref: item.baseRefName, sha: item.baseRefOid } + }) + } + } + } + if ( + args[1] === 'graphql' && + args.some((arg) => arg.startsWith('query=') && arg.includes('statusCheckRollup')) + ) { + const field = (name: string) => + args.find((arg) => arg.startsWith(`${name}=`))?.slice(name.length + 1) + const item = metadata.get(`${field('owner')}/${field('repo')}:${field('number')}`) + if (item) { + if (unavailableChecks) { + throw new Error('checks unavailable') + } + return completePRCheckGraphQLResponse( + Number(item.number), + String(item.headRefOid), + contexts + ) + } + } + if ( + unavailableChecks && + args[0] === 'api' && + [...metadata].some( + ([target, item]) => + args[1] === + `repos/${target.split(':')[0]}/commits/${String(item.headRefOid)}/check-runs?per_page=100&page=1` + ) + ) { + throw new Error('checks recovery unavailable') + } + unexpectedRequests.push(args) + throw new Error('unexpected gh request') + }) +} + +/** Keep metadata/mutation scripts independent of head-pinned check collection. */ +export function installIndependentCheckFixtures( + mocks: GitHubClientMocks, + metadataRequests: Mock, + unexpectedChecks: string[][] +): void { + const targets = new Map< + string, + { number: number; head: string; contexts: Record[] } + >() + metadataRequests.mockReset() + unexpectedChecks.length = 0 + mocks.ghExecFileAsyncMock.mockImplementation(async (args: string[], ...options: unknown[]) => { + const field = (name: string) => + args.find((arg) => arg.startsWith(`${name}=`))?.slice(name.length + 1) + if ( + args[1] === 'graphql' && + args.some( + (arg) => + arg.startsWith('query=') && + arg.includes('statusCheckRollup') && + !arg.includes('updatedAt') + ) + ) { + const target = targets.get(`${field('owner')}/${field('repo')}:${field('number')}`) + if (target) { + return completePRCheckGraphQLResponse(target.number, target.head, target.contexts) + } + unexpectedChecks.push(args) + throw new Error('checks requested for an unregistered metadata target') + } + const response = await metadataRequests(args, ...options) + if (response?.stdout) { + const exact = args[0] === 'pr' && args[1] === 'view' + const restRepo = + args[0] === 'api' + ? /^repos\/([^/]+\/[^/]+)\/pulls(?:\/\d+|\?head=)/.exec(args[1])?.[1] + : undefined + if (exact || restRepo) { + const parsed = JSON.parse(response.stdout) + for (const item of Array.isArray(parsed) ? parsed : [parsed]) { + if (!item || typeof item !== 'object') { + continue + } + const head = exact ? item.headRefOid : item.head?.sha + const repo = + restRepo ?? + (args.includes('--repo') + ? args[args.indexOf('--repo') + 1] + : /https?:\/\/[^/]+\/([^/]+\/[^/]+)\/pull\//.exec(item.url)?.[1]) + if (repo && typeof item.number === 'number' && typeof head === 'string') { + targets.set(`${repo}:${item.number}`, { + number: item.number, + head, + contexts: (item.statusCheckRollup ?? []).map((row: Record) => ({ + __typename: row.__typename ?? (row.context ? 'StatusContext' : 'CheckRun'), + ...(!row.context ? { checkSuite: { databaseId: 1 } } : {}), + ...row + })) + }) + } + } + } + } + return response + }) +} diff --git a/src/main/github/client-tracked-upstream-snapshot.test.ts b/src/main/github/client-tracked-upstream-snapshot.test.ts index cbad94cc847..bfaf61706b9 100644 --- a/src/main/github/client-tracked-upstream-snapshot.test.ts +++ b/src/main/github/client-tracked-upstream-snapshot.test.ts @@ -131,7 +131,7 @@ describe('getPRForBranch', () => { '--repo', 'acme/widgets', '--json', - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' ], { cwd: '/repo-root' } ) diff --git a/src/main/github/client-work-item-check-summary.test.ts b/src/main/github/client-work-item-check-summary.test.ts index 526b8883c62..a6634b44d1b 100644 --- a/src/main/github/client-work-item-check-summary.test.ts +++ b/src/main/github/client-work-item-check-summary.test.ts @@ -53,13 +53,55 @@ import { _resetMergeQueueCacheForTests } from './client/detect/repository-merge- import { _resetOwnerRepoCache } from './gh-utils' import { _resetOriginGitHubApiRepositoryCache } from './github-api-repository' -// Only fixture pr view; best-effort merge metadata failures must not hide its summary. +// Metadata and complete checks are independent provider responses. function mockPullRequestDetail(payload: Record): void { + const head = 'a'.repeat(40) ghExecFileAsyncMock.mockImplementation(async (args: string[]) => { - if (args[0] !== 'pr' || args[1] !== 'view') { - throw new Error('unexpected gh call') + if (args[0] === 'pr' && args[1] === 'view') { + return { stdout: JSON.stringify({ ...payload, headRefOid: head }) } } - return { stdout: JSON.stringify(payload) } + if (args.includes('graphql') && args.some((arg) => arg.includes('statusCheckRollup'))) { + return { + stdout: JSON.stringify({ + data: { + repository: { + pullRequest: { + number: payload.number, + headRefOid: head, + commits: { + nodes: [ + { + commit: { + oid: head, + statusCheckRollup: { + contexts: { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: these test payloads contain object rollup rows only. + nodes: (payload.statusCheckRollup as Record[]).map( + (raw) => ({ + ...raw, + __typename: + raw.__typename ?? (raw.state ? 'StatusContext' : 'CheckRun'), + ...(!raw.state ? { checkSuite: { databaseId: 7 } } : {}) + }) + ), + pageInfo: { hasNextPage: false, endCursor: null } + } + }, + checkSuites: { + nodes: [], + pageInfo: { hasNextPage: false, endCursor: null } + } + } + } + ] + } + } + } + } + }) + } + } + throw new Error('unexpected gh call') }) } diff --git a/src/main/github/client/check/complete-pr-check-observation.ts b/src/main/github/client/check/complete-pr-check-observation.ts new file mode 100644 index 00000000000..7460578c322 --- /dev/null +++ b/src/main/github/client/check/complete-pr-check-observation.ts @@ -0,0 +1,26 @@ +import type { GitHubApiRepository } from '../../github-api-repository' +import type { GhExecOptions } from '../github-exec-scope' +import { assertRateLimitBudget } from '../lookup/pr-lookup-rate-limit' +import { readGraphQLPRCheckRollup } from './pr-check-rollup' +import { readRestPRCheckRollup } from './rest-pr-check-pages' + +export async function readCompletePRCheckObservation( + repository: GitHubApiRepository, + number: number, + headSha: string | undefined, + options: GhExecOptions +): Promise { + if (!headSha) { + return undefined + } + try { + await assertRateLimitBudget('graphql', repository, options) + return await readGraphQLPRCheckRollup(repository, number, headSha, options) + } catch { + try { + return await readRestPRCheckRollup(repository, headSha, options) + } catch { + return undefined + } + } +} diff --git a/src/main/github/client/check/get-pr-checks.ts b/src/main/github/client/check/get-pr-checks.ts index 41d2911882f..988c56f22d3 100644 --- a/src/main/github/client/check/get-pr-checks.ts +++ b/src/main/github/client/check/get-pr-checks.ts @@ -1,3 +1,4 @@ +import { normalizePRCheckHeadSha } from '../../../../shared/github/pr-check-head' import { withGitHubRepoExecution, githubRepoContext, @@ -14,21 +15,21 @@ import { mapCheckStatus, mapCheckConclusion } from '../../mappers' import { noteRepositoryRateLimitSpend } from '../../rate-limit' import type { GhExecOptions } from './../github-exec-scope' import { assertRateLimitBudget } from './../lookup/pr-lookup-rate-limit' -import { - PR_CHECKS_ROLLUP_QUERY, - type GraphQLPRChecksResponse, - type RestCheckRun, - type RestCommitStatus, - type RestCheckSuite -} from './pr-checks-graphql-query' +import { PR_CHECKS_ROLLUP_QUERY, type GraphQLPRChecksResponse } from './pr-checks-graphql-query' import { mapRestCheckRun, mapRestCommitStatus, mapGraphQLPRChecksResponse, getPendingApprovalCheckSuiteName, - getPendingApprovalCheckSuiteUrl + getPendingApprovalCheckSuiteUrl, + isPendingApprovalSuiteWithoutRuns } from './pr-checks-response-mapping' import { parseActionsRunId } from './check-detail-field-mapping' +import { + readRestPRCheckRuns, + readRestPRCommitStatuses, + readRestPRCheckSuites +} from './rest-pr-check-pages' export async function getPRChecksViaRestFallback( ownerRepo: GitHubApiRepository, headSha: string | undefined, @@ -38,82 +39,63 @@ export async function getPRChecksViaRestFallback( if (!headSha) { return null } - try { - await assertRateLimitBudget('core', ownerRepo, ghOptions) - } catch (err) { - console.warn('getPRChecks skipped REST fallback, falling back to gh pr checks:', err) - return null - } - await acquire() try { - const cacheArgs = noCache ? [] : ['--cache', '60s'] - const encodedHeadSha = encodeURIComponent(headSha) - const { stdout } = await ghExecFileAsync( - [ - 'api', - ...cacheArgs, - `repos/${ownerRepo.owner}/${ownerRepo.repo}/commits/${encodedHeadSha}/check-runs?per_page=100` - ], - ghOptions + const runs = await readRestPRCheckRuns(ownerRepo, headSha, ghOptions, Boolean(noCache)) + const checks = runs.map((run) => + mapRestCheckRun({ + ...run, + name: run.name ?? '', + html_url: run.html_url ?? '', + details_url: run.details_url ?? null + }) ) - noteRepositoryRateLimitSpend(ownerRepo, 'core', 1, ghOptions) - const checkRunData = JSON.parse(stdout) as { - check_runs?: RestCheckRun[] - } - const checkRuns = (checkRunData.check_runs ?? []).map(mapRestCheckRun) - const checkRunNames = new Set(checkRuns.map((check) => check.name)) - - let legacyStatuses: PRCheckDetail[] = [] + const checkRunNames = new Set(checks.map((check) => check.name)) try { - const statusResult = await ghExecFileAsync( - [ - 'api', - ...cacheArgs, - `repos/${ownerRepo.owner}/${ownerRepo.repo}/commits/${encodedHeadSha}/status?per_page=100` - ], - ghOptions + const statuses = await readRestPRCommitStatuses( + ownerRepo, + headSha, + ghOptions, + Boolean(noCache) + ) + checks.push( + ...statuses + .map(mapRestCommitStatus) + .filter( + (check): check is PRCheckDetail => check !== null && !checkRunNames.has(check.name) + ) ) - noteRepositoryRateLimitSpend(ownerRepo, 'core', 1, ghOptions) - const statusData = JSON.parse(statusResult.stdout) as { - statuses?: RestCommitStatus[] - } - legacyStatuses = (statusData.statuses ?? []) - .map(mapRestCommitStatus) - .filter((check): check is PRCheckDetail => check !== null && !checkRunNames.has(check.name)) } catch (err) { - // Keep richer check-run rows when best-effort legacy-status enrichment fails. + // Detail rows remain useful when best-effort enrichment fails. console.warn('getPRChecks REST status fallback failed:', err) } - - let pendingApprovalChecks: PRCheckDetail[] = [] try { - const suitesResult = await ghExecFileAsync( - [ - 'api', - ...cacheArgs, - `repos/${ownerRepo.owner}/${ownerRepo.repo}/commits/${encodedHeadSha}/check-suites?per_page=100` - ], - ghOptions + const suites = await readRestPRCheckSuites(ownerRepo, headSha, ghOptions, Boolean(noCache)) + const represented = new Set( + runs.flatMap((run) => (run.check_suite ? [run.check_suite.id] : [])) + ) + checks.push( + ...suites + .filter((suite) => + isPendingApprovalSuiteWithoutRuns( + suite.conclusion, + suite.id !== undefined && represented.has(suite.id) + ) + ) + .map((suite, index) => ({ + name: getPendingApprovalCheckSuiteName(suite, headSha, index), + status: 'completed' as const, + conclusion: 'action_required' as const, + url: getPendingApprovalCheckSuiteUrl(ownerRepo, headSha, suite.id) + })) ) - noteRepositoryRateLimitSpend(ownerRepo, 'core', 1, ghOptions) - const suitesData = JSON.parse(suitesResult.stdout) as { - check_suites?: RestCheckSuite[] - } - pendingApprovalChecks = (suitesData.check_suites ?? []) - .filter((suite) => suite.conclusion?.toLowerCase() === 'action_required') - .map((suite, index) => ({ - name: getPendingApprovalCheckSuiteName(suite, headSha, index), - status: 'completed' as const, - conclusion: 'action_required' as const, - url: getPendingApprovalCheckSuiteUrl(ownerRepo, headSha, suite.id) - })) } catch (err) { console.warn('getPRChecks REST check-suite fallback failed:', err) } - - const checks = [...checkRuns, ...legacyStatuses, ...pendingApprovalChecks] - return checks.length > 0 ? checks : null + const observedHeadSha = normalizePRCheckHeadSha(headSha) + return checks.length > 0 + ? checks.map((check) => (observedHeadSha ? { ...check, observedHeadSha } : check)) + : null } catch (err) { console.warn('getPRChecks via REST fallback failed, falling back to gh pr checks:', err) return null @@ -132,7 +114,6 @@ async function readPRChecks( connectionId?: string | null, localGitOptions: LocalGitExecOptions = {} ): Promise { - void headSha const { ownerRepo, ghOptions } = await resolveGitHubRepoExecution( repoPath, prRepo, diff --git a/src/main/github/client/check/pr-check-rollup.ts b/src/main/github/client/check/pr-check-rollup.ts new file mode 100644 index 00000000000..bac2351ce86 --- /dev/null +++ b/src/main/github/client/check/pr-check-rollup.ts @@ -0,0 +1,223 @@ +import { z } from 'zod' +import { ghExecFileAsync } from '../../gh-utils' +import { githubHostExecOptions, type GitHubApiRepository } from '../../github-api-repository' +import { noteRepositoryRateLimitSpend } from '../../rate-limit' +import type { GhExecOptions } from '../github-exec-scope' +import { isPendingApprovalSuiteWithoutRuns } from './pr-checks-response-mapping' + +type ConnectionKind = 'contexts' | 'suites' + +export function prCheckRollupFields(kind?: ConnectionKind): string { + return `commits(last: 1) { nodes { commit { + oid + ${ + kind !== 'suites' + ? `statusCheckRollup { contexts(first: 100, after: $checksCursor) { + nodes { __typename ... on CheckRun { status conclusion checkSuite { databaseId } } + ... on StatusContext { state } } + pageInfo { hasNextPage endCursor } + } }` + : '' + } + ${ + kind !== 'contexts' + ? `checkSuites(first: 100, after: $suitesCursor) { + nodes { databaseId conclusion } + pageInfo { hasNextPage endCursor } + }` + : '' + } + } } }` +} + +const checkConclusion = z.enum([ + 'ACTION_REQUIRED', + 'CANCELLED', + 'FAILURE', + 'NEUTRAL', + 'SKIPPED', + 'STALE', + 'STARTUP_FAILURE', + 'SUCCESS', + 'TIMED_OUT' +]) +const contextSchema = z.discriminatedUnion('__typename', [ + z.object({ + __typename: z.literal('CheckRun'), + status: z.enum(['COMPLETED', 'IN_PROGRESS', 'QUEUED', 'REQUESTED', 'WAITING', 'PENDING']), + conclusion: checkConclusion.nullable(), + checkSuite: z.object({ databaseId: z.number() }) + }), + z.object({ + __typename: z.literal('StatusContext'), + state: z.enum(['ERROR', 'EXPECTED', 'FAILURE', 'PENDING', 'SUCCESS']) + }) +]) +const connectionSchema = z.object({ + nodes: z.array(contextSchema), + pageInfo: z.object({ hasNextPage: z.boolean(), endCursor: z.string().nullable() }) +}) + +export const prCheckRollupCommitsSchema = z.object({ + nodes: z + .array( + z.object({ + commit: z.object({ + oid: z.string().min(1), + statusCheckRollup: z.object({ contexts: connectionSchema }).nullable().optional(), + checkSuites: z + .object({ + nodes: z.array( + z.object({ databaseId: z.number(), conclusion: checkConclusion.nullable() }) + ), + pageInfo: z.object({ hasNextPage: z.boolean(), endCursor: z.string().nullable() }) + }) + .optional() + }) + }) + ) + .max(1) +}) + +type CheckCommits = z.infer +type CheckPage = { number: number; headRefOid: string; commits: CheckCommits } +const pageSchema = z.object({ + data: z.object({ + repository: z.object({ + pullRequest: z.object({ + number: z.number(), + headRefOid: z.string(), + commits: prCheckRollupCommitsSchema + }) + }) + }), + errors: z.array(z.unknown()).optional() +}) + +export async function collectPRCheckRollup( + first: CheckPage, + readPage: (kind: ConnectionKind, cursor: string) => Promise +): Promise { + const initial = first.commits.nodes[0]?.commit + if ( + !initial || + initial.oid !== first.headRefOid || + !initial.checkSuites || + initial.statusCheckRollup === undefined + ) { + throw new Error('Incomplete PR checks observation') + } + const collect = async (kind: ConnectionKind) => { + const connection = (commit: typeof initial) => + kind === 'contexts' ? commit.statusCheckRollup?.contexts : commit.checkSuites + let page = connection(initial) + const nodes: Record[] = [...(page?.nodes ?? [])] + const cursors = new Set() + while (page?.pageInfo.hasNextPage) { + const cursor = page.pageInfo.endCursor + if (!cursor || cursors.has(cursor)) { + throw new Error('Incomplete PR checks continuation') + } + cursors.add(cursor) + const next = await readPage(kind, cursor) + const commit = next.commits.nodes[0]?.commit + if ( + next.number !== first.number || + next.headRefOid !== first.headRefOid || + !commit || + commit.oid !== initial.oid + ) { + throw new Error('PR head changed during checks observation') + } + page = connection(commit) + if (!page) { + throw new Error('Missing PR checks continuation') + } + nodes.push(...page.nodes) + } + return nodes + } + const contexts = await collect('contexts') + const suites = await collect('suites') + const representedSuites = new Set( + contexts.flatMap((context) => { + const suite = context.checkSuite + return context.__typename === 'CheckRun' && + typeof suite === 'object' && + suite !== null && + 'databaseId' in suite && + typeof suite.databaseId === 'number' + ? [suite.databaseId] + : [] + }) + ) + return [ + ...contexts, + ...suites + .filter((suite) => + isPendingApprovalSuiteWithoutRuns( + suite.conclusion, + typeof suite.databaseId === 'number' && representedSuites.has(suite.databaseId) + ) + ) + .map(() => ({ status: 'COMPLETED', conclusion: 'ACTION_REQUIRED' })) + ] +} + +export function createPRCheckRollupPageReader( + repository: GitHubApiRepository, + number: number, + options: GhExecOptions +): (kind?: ConnectionKind, cursor?: string) => Promise { + return async (kind, cursor) => { + const cursors = [ + ...(kind !== 'suites' ? ['$checksCursor: String'] : []), + ...(kind !== 'contexts' ? ['$suitesCursor: String'] : []) + ].join(', ') + const query = `query($owner: String!, $repo: String!, $number: Int!, + ${cursors}) { + repository(owner: $owner, name: $repo) { pullRequest(number: $number) { + number headRefOid ${prCheckRollupFields(kind)} + } } + }` + const args = [ + 'api', + 'graphql', + '-f', + `query=${query}`, + '-f', + `owner=${repository.owner}`, + '-f', + `repo=${repository.repo}`, + '-F', + `number=${number}` + ] + if (cursor) { + args.push('-f', `${kind === 'suites' ? 'suitesCursor' : 'checksCursor'}=${cursor}`) + } + noteRepositoryRateLimitSpend(repository, 'graphql', 1, options) + const { stdout } = await ghExecFileAsync(args, { + ...options, + ...githubHostExecOptions(repository) + }) + const page = pageSchema.parse(JSON.parse(stdout)) + if (page.errors?.length) { + throw new Error('Incomplete PR checks response') + } + return page.data.repository.pullRequest + } +} + +export async function readGraphQLPRCheckRollup( + repository: GitHubApiRepository, + number: number, + headSha: string, + options: GhExecOptions +): Promise { + const readPage = createPRCheckRollupPageReader(repository, number, options) + const first = await readPage() + if (first.number !== number || first.headRefOid !== headSha) { + throw new Error('PR head changed before checks observation') + } + return collectPRCheckRollup(first, readPage) +} diff --git a/src/main/github/client/check/pr-checks-graphql-query.ts b/src/main/github/client/check/pr-checks-graphql-query.ts index edd1cac1b74..5f3a35c763c 100644 --- a/src/main/github/client/check/pr-checks-graphql-query.ts +++ b/src/main/github/client/check/pr-checks-graphql-query.ts @@ -6,6 +6,7 @@ query($owner: String!, $repo: String!, $pr: Int!) { commits(last: 1) { nodes { commit { + oid statusCheckRollup { contexts(first: 100) { nodes { @@ -53,6 +54,8 @@ query($owner: String!, $repo: String!, $pr: Int!) { ` export type GraphQLPRChecksResponse = { + errors?: unknown[] + data?: { repository?: { pullRequest?: { @@ -66,6 +69,8 @@ export type GraphQLPRChecksResponse = { } export type GraphQLPRChecksCommit = { + oid?: string | null + statusCheckRollup?: { contexts?: { nodes?: GraphQLStatusCheckContext[] | null diff --git a/src/main/github/client/check/pr-checks-response-mapping.ts b/src/main/github/client/check/pr-checks-response-mapping.ts index 6b8dda7279d..a2b2fb5c2a2 100644 --- a/src/main/github/client/check/pr-checks-response-mapping.ts +++ b/src/main/github/client/check/pr-checks-response-mapping.ts @@ -1,3 +1,4 @@ +import { normalizePRCheckHeadSha } from '../../../../shared/github/pr-check-head' import type { PRCheckDetail } from '../../../../shared/github/check-types' import { githubRepositoryWebHost, type GitHubApiRepository } from '../../github-api-repository' import { @@ -107,6 +108,12 @@ export function mapGraphQLPendingApprovalCheckSuite( } } +export function isPendingApprovalSuiteWithoutRuns(conclusion: unknown, hasRuns: boolean): boolean { + return ( + typeof conclusion === 'string' && conclusion.toLowerCase() === 'action_required' && !hasRuns + ) +} + export function mapGraphQLPRChecksResponse( ownerRepo: GitHubApiRepository, response: GraphQLPRChecksResponse @@ -137,16 +144,28 @@ export function mapGraphQLPRChecksResponse( .map(mapGraphQLStatusContext) .filter((check): check is PRCheckDetail => check !== null && !checkRunNames.has(check.name)) const pendingApprovalChecks = (commit.checkSuites?.nodes ?? []) - .filter((suite) => suite.conclusion?.toLowerCase() === 'action_required') .filter((suite) => { const suiteId = nullableNumber(suite.databaseId) - return suiteId === null || !checkSuiteIdsWithRuns.has(suiteId) + return isPendingApprovalSuiteWithoutRuns( + suite.conclusion, + suiteId !== null && checkSuiteIdsWithRuns.has(suiteId) + ) }) .map((suite, index) => mapGraphQLPendingApprovalCheckSuite(ownerRepo, suite, pullRequest.headRefOid, index) ) - return [...checkRuns, ...legacyStatuses, ...pendingApprovalChecks] + const observedHeadSha = normalizePRCheckHeadSha(commit.oid) + const provedHead = + observedHeadSha && + observedHeadSha === normalizePRCheckHeadSha(pullRequest.headRefOid) && + (response.errors === undefined || + (Array.isArray(response.errors) && response.errors.length === 0)) + ? observedHeadSha + : undefined + return [...checkRuns, ...legacyStatuses, ...pendingApprovalChecks].map((check) => + provedHead ? { ...check, observedHeadSha: provedHead } : check + ) } export function getPendingApprovalCheckSuiteName( diff --git a/src/main/github/client/check/rest-pr-check-pages.ts b/src/main/github/client/check/rest-pr-check-pages.ts new file mode 100644 index 00000000000..9cbf0bf248e --- /dev/null +++ b/src/main/github/client/check/rest-pr-check-pages.ts @@ -0,0 +1,135 @@ +import { z } from 'zod' +import { ghExecFileAsync } from '../../gh-utils' +import { githubHostExecOptions, type GitHubApiRepository } from '../../github-api-repository' +import { noteRepositoryRateLimitSpend } from '../../rate-limit' +import type { GhExecOptions } from '../github-exec-scope' +import { assertRateLimitBudget } from '../lookup/pr-lookup-rate-limit' +import { isPendingApprovalSuiteWithoutRuns } from './pr-checks-response-mapping' + +const checkRunSchema = z.object({ + id: z.number().optional(), + name: z.string().optional(), + status: z.string(), + conclusion: z.string().nullable(), + html_url: z.string().nullish(), + details_url: z.string().nullish(), + check_suite: z.object({ id: z.number() }).nullish() +}) +const commitStatusSchema = z.object({ + context: z.string().optional(), + state: z.string(), + target_url: z.string().nullish() +}) +const checkSuiteSchema = z.object({ + id: z.number().optional(), + status: z.string().nullable(), + conclusion: z.string().nullable(), + app: z.object({ name: z.string().nullish(), slug: z.string().nullish() }).nullish() +}) + +async function readPages( + repository: GitHubApiRepository, + headSha: string, + options: GhExecOptions, + endpoint: string, + field: string, + row: z.ZodType, + noCache: boolean +): Promise { + const schema = z.looseObject({ + total_count: z.number().int().nonnegative() + }) + const rows: T[] = [] + let total: number | undefined + for (let page = 1; ; page++) { + await assertRateLimitBudget('core', repository, options) + const path = `repos/${repository.owner}/${repository.repo}/commits/${encodeURIComponent(headSha)}/${endpoint}?per_page=100&page=${page}` + const { stdout } = await ghExecFileAsync( + ['api', ...(noCache ? [] : ['--cache', '60s']), path], + { ...options, ...githubHostExecOptions(repository) } + ) + noteRepositoryRateLimitSpend(repository, 'core', 1, options) + const result = schema.parse(JSON.parse(stdout)) + const count = result.total_count + const pageRows = z.array(row).parse(result[field]) + if (total !== undefined && total !== count) { + throw new Error('PR checks changed during REST pagination') + } + total = count + rows.push(...pageRows) + if (rows.length > total || (pageRows.length === 0 && rows.length < total)) { + throw new Error('Incomplete REST PR checks response') + } + if (rows.length === total) { + return rows + } + } +} + +export function readRestPRCheckRuns( + repository: GitHubApiRepository, + headSha: string, + options: GhExecOptions, + noCache = true +) { + return readPages( + repository, + headSha, + options, + 'check-runs', + 'check_runs', + checkRunSchema, + noCache + ) +} + +export function readRestPRCommitStatuses( + repository: GitHubApiRepository, + headSha: string, + options: GhExecOptions, + noCache = true +) { + return readPages(repository, headSha, options, 'status', 'statuses', commitStatusSchema, noCache) +} + +export function readRestPRCheckSuites( + repository: GitHubApiRepository, + headSha: string, + options: GhExecOptions, + noCache = true +) { + return readPages( + repository, + headSha, + options, + 'check-suites', + 'check_suites', + checkSuiteSchema, + noCache + ) +} + +export async function readRestPRCheckRollup( + repository: GitHubApiRepository, + headSha: string, + options: GhExecOptions +): Promise { + const runs = await readRestPRCheckRuns(repository, headSha, options) + const statuses = await readRestPRCommitStatuses(repository, headSha, options) + const suites = await readRestPRCheckSuites(repository, headSha, options) + const representedSuites = new Set( + runs.flatMap((run) => (run.check_suite ? [run.check_suite.id] : [])) + ) + return [ + ...runs.map((run) => ({ status: run.status, conclusion: run.conclusion })), + ...statuses, + ...suites + .filter((suite) => + isPendingApprovalSuiteWithoutRuns( + suite.conclusion, + suite.id !== undefined && representedSuites.has(suite.id) + ) + ) + .map(() => ({ status: 'COMPLETED', conclusion: 'ACTION_REQUIRED' })) + ] +} diff --git a/src/main/github/client/fetch/work-item-fetch.ts b/src/main/github/client/fetch/work-item-fetch.ts index f103f826783..fc03ece6b16 100644 --- a/src/main/github/client/fetch/work-item-fetch.ts +++ b/src/main/github/client/fetch/work-item-fetch.ts @@ -17,6 +17,26 @@ import { type MainWorkItem } from './../map/work-item-field-coercion' import { mapIssueWorkItem, mapPullRequestWorkItem } from './../map/work-item' +import { readCompletePRCheckObservation } from '../check/complete-pr-check-observation' +import { summarizePRCheckRollup } from '../../../../shared/source-control/checks/pr-check-status' +import { ownerRepoFromPullRequestUrl } from '../github-exec-scope' + +async function withCompletePRChecks( + item: MainWorkItem, + repository: GitHubApiRepository | null, + number: number, + options: GhExecOptions +): Promise { + const source = repository ?? ownerRepoFromPullRequestUrl(item.url) + const rollup = + source && item.number === number + ? await readCompletePRCheckObservation(source, number, item.headSha, options) + : undefined + return { + ...item, + checksSummary: rollup === undefined ? undefined : summarizePRCheckRollup(rollup) + } +} export async function fetchIssueWorkItem( repoPath: string, ownerRepo: GitHubApiRepository | null, @@ -142,7 +162,12 @@ export async function fetchPullRequestWorkItem( ghOptions ) const item = JSON.parse(stdout) as Record - const mapped = mapPullRequestWorkItem(item, ownerRepo) + const mapped = await withCompletePRChecks( + mapPullRequestWorkItem(item, ownerRepo), + ownerRepo, + number, + ghOptions + ) // Best-effort merge metadata must not trigger a REST fallback that drops latestReviews. const baseRefName = typeof item.baseRefName === 'string' ? item.baseRefName : undefined try { @@ -170,9 +195,11 @@ export async function fetchPullRequestWorkItem( ['api', `repos/${ownerRepo.owner}/${ownerRepo.repo}/pulls/${number}`], ghOptions ) - const mapped = mapPullRequestWorkItem( - JSON.parse(stdout) as Record, - ownerRepo + const mapped = await withCompletePRChecks( + mapPullRequestWorkItem(JSON.parse(stdout) as Record, ownerRepo), + ownerRepo, + number, + ghOptions ) const reviewFields = await fetchPullRequestReviewFields(number, ownerRepo, ghOptions) return { ...mapped, ...reviewFields } @@ -188,7 +215,12 @@ export async function fetchPullRequestWorkItem( ['pr', 'view', String(number), '--json', WORK_ITEM_PR_DETAIL_JSON_FIELDS], ghOptions ) - return mapPullRequestWorkItem(JSON.parse(stdout) as Record) + return withCompletePRChecks( + mapPullRequestWorkItem(JSON.parse(stdout) as Record), + null, + number, + ghOptions + ) } export async function fetchPullRequestWorkItemFromCandidates( diff --git a/src/main/github/client/lookup/pr-branch-lookup.ts b/src/main/github/client/lookup/pr-branch-lookup.ts index 583da55e828..128fe7bc2a1 100644 --- a/src/main/github/client/lookup/pr-branch-lookup.ts +++ b/src/main/github/client/lookup/pr-branch-lookup.ts @@ -9,17 +9,19 @@ import type { GhExecOptions } from './../github-exec-scope' import { isNoPullRequestError } from './../gh-error-predicates' import { PR_LOOKUP_JSON_FIELDS, + normalizePullRequestLookupData, PR_BRANCH_LIST_JSON_FIELDS, mapRestPullRequest, - normalizePullRequestLookupData, pullRequestMatchesHeadRepository, type PullRequestLookupData, type PullRequestLookupPolicy, type RestPullRequest } from './pull-request-lookup-data' import { getPRByNumber } from './pr-number-lookup' +import { hydratePullRequestLookupData } from './pull-request-lookup-hydration' import { revalidateGitHubRestJson } from '../../github-rest-revalidation' import { noteRepositoryRateLimitSpend } from '../../rate-limit' +import { ownerRepoFromPullRequestUrl } from '../github-exec-scope' // Why: GitHub lists a branch's PRs newest first, so with a page of one a closed PR opened after // the live one wins. Fetch a page and prefer the open PR; fall back to the newest one. @@ -72,7 +74,7 @@ export async function getFallbackPRListForBranch( const list = JSON.parse(stdout) as PullRequestLookupData[] const pr = preferOpenPullRequest(list) // Branch lists paginate PRs, not their nested check contexts. - return pr ? { ...pr, checksUnavailable: true } : null + return pr ? { ...pr, statusCheckRollup: [], checksUnavailable: true } : null } export async function hydrateBranchLookupWithExactPR( @@ -189,13 +191,20 @@ export async function lookupPRByBranchName(args: { args.ghOptions ) const parsedData: PullRequestLookupData = JSON.parse(stdout) - const lookup = { - data: normalizePullRequestLookupData({ - ...parsedData, - checksUnavailable: false - }), - dataRepo: null - } + const repository = ownerRepoFromPullRequestUrl(parsedData.url) + const data = repository + ? await hydratePullRequestLookupData( + repository, + { ...parsedData, checksUnavailable: true }, + args.ghOptions, + args.executionScope + ) + : { + ...normalizePullRequestLookupData(parsedData), + statusCheckRollup: [], + checksUnavailable: true + } + const lookup = { data, dataRepo: null } return !args.policy || (await args.policy.accepts(lookup.data, null)) ? lookup : { data: null, dataRepo: null } diff --git a/src/main/github/client/lookup/pr-number-lookup.ts b/src/main/github/client/lookup/pr-number-lookup.ts index ff706fdb5c8..d3a171fd734 100644 --- a/src/main/github/client/lookup/pr-number-lookup.ts +++ b/src/main/github/client/lookup/pr-number-lookup.ts @@ -1,3 +1,4 @@ +import { classifyPRRefreshError } from '../../pr-refresh-error-classification' import { ghExecFileAsync } from '../../gh-utils' import type { OwnerRepo, ghRepoExecOptions } from '../../gh-utils' import { githubHostExecOptions, type GitHubApiRepository } from '../../github-api-repository' @@ -8,8 +9,8 @@ import { } from './../gh-error-predicates' import { PR_LOOKUP_JSON_FIELDS, - mapRestPullRequest, normalizePullRequestLookupData, + mapRestPullRequest, type PullRequestLookupData, type PullRequestLookupPolicy, type RestPullRequest @@ -18,6 +19,7 @@ import { hydratePullRequestLookupData } from './pull-request-lookup-hydration' import { isGitObjectId, isUsableRestStackMetadata } from './rest-stack-metadata-validation' import { revalidateGitHubRestJson } from '../../github-rest-revalidation' import { noteRepositoryRateLimitSpend } from '../../rate-limit' +import { ownerRepoFromPullRequestUrl, sameOwnerRepo } from '../github-exec-scope' import { readPullRequestSidebarQuery } from './pull-request-sidebar-query' export async function getRestPRByNumber( ownerRepo: GitHubApiRepository, @@ -61,22 +63,59 @@ export async function getPRByNumber( options: { includeStackSummary?: boolean } = {} ): Promise { try { - const sidebarData = - options.includeStackSummary && knownPullRequestData === undefined - ? await readPullRequestSidebarQuery(ownerRepo, number, ghOptions) - : undefined + let sidebarData: Awaited> + try { + sidebarData = + options.includeStackSummary || knownPullRequestData !== undefined + ? await readPullRequestSidebarQuery(ownerRepo, number, ghOptions) + : undefined + } catch (error) { + if ( + !knownPullRequestData || + ['repo_unavailable', 'permission', 'rate_limited', 'auth'].includes( + classifyPRRefreshError(error) + ) + ) { + throw error + } + // Optional combined reads retain the exact metadata recovery path. + sidebarData = undefined + } if (sidebarData === null) { return null } if (sidebarData) { const { stack, ...prData } = sidebarData + const known = knownPullRequestData + const sameIdentity = + known && + known.number === number && + sameOwnerRepo(ownerRepoFromPullRequestUrl(known.url), ownerRepo) && + known.headRepositoryOwner?.login?.toLowerCase() === + prData.headRepositoryOwner?.login?.toLowerCase() && + known.headRepository?.name?.toLowerCase() === prData.headRepository?.name?.toLowerCase() + const compatibleStack = + sameIdentity && + known.headRefOid === prData.headRefOid && + known.baseRefOid === prData.baseRefOid && + stack && + known.stack?.number === stack.number && + known.stack.position === stack.position && + known.stack.baseRefName === stack.baseRefName + ? { ...known.stack, ...stack } + : stack const hydrated = await hydratePullRequestLookupData( ownerRepo, - prData, + { + ...prData, + ...(sameIdentity && known.headDefaultBranchName + ? { headDefaultBranchName: known.headDefaultBranchName } + : {}) + }, ghOptions, executionScope ) - return { ...hydrated, ...(stack ? { stack } : {}) } + return { ...hydrated, ...(compatibleStack ? { stack: compatibleStack } : {}) } } noteRepositoryRateLimitSpend(ownerRepo, 'graphql', 1, ghOptions) const { stdout } = await ghExecFileAsync( @@ -97,7 +136,7 @@ export async function getPRByNumber( { ...knownPullRequestData, ...exactData, - checksUnavailable: false, + checksUnavailable: true, ...(knownPullRequestData?.stack ? { stack: knownPullRequestData.stack } : {}) }, ghOptions, @@ -114,7 +153,12 @@ export async function getPRByNumber( ? await getRestPRByNumber(ownerRepo, number, ghOptions) : knownPullRequestData return restData - ? hydratePullRequestLookupData(ownerRepo, restData, ghOptions, executionScope) + ? hydratePullRequestLookupData( + ownerRepo, + { ...restData, checksUnavailable: true }, + ghOptions, + executionScope + ) : null } catch (restErr) { if (isNotFoundGhError(restErr)) { @@ -171,13 +215,20 @@ export async function lookupPRByNumber(args: { args.ghOptions ) const parsedData: PullRequestLookupData = JSON.parse(stdout) - const lookup = { - data: normalizePullRequestLookupData({ - ...parsedData, - checksUnavailable: false - }), - dataRepo: null - } + const repository = ownerRepoFromPullRequestUrl(parsedData.url) + const data = repository + ? await hydratePullRequestLookupData( + repository, + { ...parsedData, checksUnavailable: true }, + args.ghOptions, + args.executionScope + ) + : { + ...normalizePullRequestLookupData(parsedData), + statusCheckRollup: [], + checksUnavailable: true + } + const lookup = { data, dataRepo: null } return !args.policy || (await args.policy.accepts(lookup.data, null)) ? lookup : { data: null, dataRepo: null } diff --git a/src/main/github/client/lookup/pr-refresh-outcome-assembly.ts b/src/main/github/client/lookup/pr-refresh-outcome-assembly.ts index 84e9de6c344..03589aec3bc 100644 --- a/src/main/github/client/lookup/pr-refresh-outcome-assembly.ts +++ b/src/main/github/client/lookup/pr-refresh-outcome-assembly.ts @@ -40,7 +40,10 @@ export function assemblePRRefreshFoundOutcome(args: { title: data.title, state: mapPRState(data.state, data.isDraft), url: data.url, - checksStatus: checksSummary.state === 'none' ? 'neutral' : checksSummary.state, + checksStatus: + data.checksUnavailable !== false || checksSummary.state === 'none' + ? 'neutral' + : checksSummary.state, ...(data.checksUnavailable === false ? { checksSummary } : {}), updatedAt: data.updatedAt, mergeable, diff --git a/src/main/github/client/lookup/pull-request-lookup-data.ts b/src/main/github/client/lookup/pull-request-lookup-data.ts index ee4c343493b..e0beabf9475 100644 --- a/src/main/github/client/lookup/pull-request-lookup-data.ts +++ b/src/main/github/client/lookup/pull-request-lookup-data.ts @@ -81,10 +81,10 @@ export type RestPullRequest = { } export const PR_LOOKUP_JSON_FIELDS = - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,reviewDecision,mergeStateStatus,autoMergeRequest,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' export const PR_BRANCH_LIST_JSON_FIELDS = - 'number,title,state,url,statusCheckRollup,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' + 'number,title,state,url,updatedAt,isDraft,mergeable,baseRefName,headRefName,baseRefOid,headRefOid,headRepositoryOwner,headRepository,isCrossRepository' export type GitHubPRBranchLookupOptions = HostedReviewExecutionOptions & { userRefresh?: boolean diff --git a/src/main/github/client/lookup/pull-request-lookup-hydration.ts b/src/main/github/client/lookup/pull-request-lookup-hydration.ts index 5ce00692b57..808e5361458 100644 --- a/src/main/github/client/lookup/pull-request-lookup-hydration.ts +++ b/src/main/github/client/lookup/pull-request-lookup-hydration.ts @@ -6,6 +6,7 @@ import { normalizePullRequestLookupData, type PullRequestLookupData } from './pull-request-lookup-data' +import { readCompletePRCheckObservation } from '../check/complete-pr-check-observation' export async function hydratePullRequestLookupData( ownerRepo: OwnerRepo, data: PullRequestLookupData, @@ -13,6 +14,10 @@ export async function hydratePullRequestLookupData( executionScope: string ): Promise { const normalized = normalizePullRequestLookupData(data) + const checks = + data.checksUnavailable === false + ? data.statusCheckRollup + : await readCompletePRCheckObservation(ownerRepo, data.number, data.headRefOid, ghOptions) const hasRichMergeFields = 'reviewDecision' in data || 'mergeStateStatus' in data || 'autoMergeRequest' in data const mergeMetadata = @@ -26,6 +31,8 @@ export async function hydratePullRequestLookupData( : undefined return { ...normalized, + statusCheckRollup: checks ?? [], + checksUnavailable: checks === undefined, ...(mergeMetadata ? { mergeQueueRequired: mergeMetadata.mergeQueueRequired } : {}), ...(mergeMetadata ? { autoMergeAllowed: mergeMetadata.autoMergeAllowed } : {}), ...(mergeMetadata?.mergeMethodSettings diff --git a/src/main/github/client/lookup/pull-request-sidebar-query.ts b/src/main/github/client/lookup/pull-request-sidebar-query.ts index 1571e079aab..fb7408cb6aa 100644 --- a/src/main/github/client/lookup/pull-request-sidebar-query.ts +++ b/src/main/github/client/lookup/pull-request-sidebar-query.ts @@ -5,26 +5,16 @@ import { githubHostExecOptions, type GitHubApiRepository } from '../../github-ap import { noteRepositoryRateLimitSpend } from '../../rate-limit' import type { GhExecOptions } from '../github-exec-scope' import type { PullRequestLookupData } from './pull-request-lookup-data' +import { + collectPRCheckRollup, + createPRCheckRollupPageReader, + prCheckRollupCommitsSchema, + prCheckRollupFields +} from '../check/pr-check-rollup' -const CHECKS_FIELDS = `commits(last: 1) { - nodes { - commit { - oid - statusCheckRollup { - contexts(first: 100, after: $checksCursor) { - nodes { - __typename - ... on CheckRun { status conclusion } - ... on StatusContext { state } - } - pageInfo { hasNextPage endCursor } - } - } - } - } -}` +const CHECKS_FIELDS = prCheckRollupFields() -const SIDEBAR_QUERY = `query($owner: String!, $repo: String!, $number: Int!, $checksCursor: String) { +const SIDEBAR_QUERY = `query($owner: String!, $repo: String!, $number: Int!, $checksCursor: String, $suitesCursor: String) { repository(owner: $owner, name: $repo) { pullRequest(number: $number) { number title state url updatedAt isDraft mergeable reviewDecision mergeStateStatus @@ -39,31 +29,6 @@ const SIDEBAR_QUERY = `query($owner: String!, $repo: String!, $number: Int!, $ch } }` -const CHECKS_QUERY = `query($owner: String!, $repo: String!, $number: Int!, $checksCursor: String) { - repository(owner: $owner, name: $repo) { - pullRequest(number: $number) { number ${CHECKS_FIELDS} } - } -}` - -const commitsSchema = z.object({ - nodes: z - .array( - z.object({ - commit: z.object({ - oid: z.string(), - statusCheckRollup: z - .object({ - contexts: z.object({ - nodes: z.array(z.record(z.string(), z.unknown()).nullable()), - pageInfo: z.object({ hasNextPage: z.boolean(), endCursor: z.string().nullable() }) - }) - }) - .nullable() - }) - }) - ) - .max(1) -}) const errorsSchema = z .array( z.object({ @@ -91,7 +56,7 @@ const pullRequestSchema = z.object({ isCrossRepository: z.boolean().optional(), headRepositoryOwner: z.object({ login: z.string() }).nullable(), headRepository: z.object({ name: z.string() }).nullable(), - commits: commitsSchema, + commits: z.unknown(), stack: z.unknown().optional(), stackEntry: z.unknown().optional() }) @@ -109,14 +74,6 @@ const missingEnvelopeSchema = z.object({ data: z.object({ repository: z.object({ pullRequest: z.null() }) }), errors: errorsSchema }) -const checksEnvelopeSchema = z.object({ - data: z.object({ - repository: z.object({ - pullRequest: z.object({ number: z.number(), commits: commitsSchema }) - }) - }), - errors: errorsSchema -}) async function readQuery( repository: GitHubApiRepository, @@ -188,13 +145,16 @@ export async function readPullRequestSidebarQuery( return undefined } const envelope = parsed.data - const stackErrors = envelope.errors ?? [] + const errors = envelope.errors ?? [] + const stackErrors = errors.filter( + ({ path }) => path?.[2] === 'stack' || path?.[2] === 'stackEntry' + ) if ( - stackErrors.some( + errors.some( ({ path }) => path?.[0] !== 'repository' || path[1] !== 'pullRequest' || - (path[2] !== 'stack' && path[2] !== 'stackEntry') + (path[2] !== 'stack' && path[2] !== 'stackEntry' && path[2] !== 'commits') ) ) { if (response.failure) { @@ -206,37 +166,21 @@ export async function readPullRequestSidebarQuery( if (pr.number !== number) { return undefined } - let contexts = pr.commits.nodes[0]?.commit.statusCheckRollup?.contexts - const statusCheckRollup = contexts?.nodes.flatMap((node) => (node ? [node] : [])) ?? [] - const cursors = new Set() - while (contexts?.pageInfo.hasNextPage) { - const cursor = contexts.pageInfo.endCursor - if (!cursor || cursors.has(cursor)) { - return undefined + let statusCheckRollup: unknown[] | undefined + try { + if (!pr.headRefOid || errors.some(({ path }) => path?.[2] === 'commits')) { + throw new Error('Missing PR head') } - cursors.add(cursor) - const page = await readQuery(repository, number, options, CHECKS_QUERY, cursor) - if (page.failure) { - throw page.failure.error - } - const parsedPage = checksEnvelopeSchema.safeParse(page.payload) - if (!parsedPage.success) { - return undefined - } - const next = parsedPage.data - if ( - next.errors?.length || - next.data.repository.pullRequest.number !== number || - next.data.repository.pullRequest.commits.nodes[0]?.commit.oid !== - pr.commits.nodes[0]?.commit.oid - ) { - return undefined - } - contexts = next.data.repository.pullRequest.commits.nodes[0]?.commit.statusCheckRollup?.contexts - if (!contexts) { - return undefined - } - statusCheckRollup.push(...contexts.nodes.flatMap((node) => (node ? [node] : []))) + statusCheckRollup = await collectPRCheckRollup( + { + number: pr.number, + headRefOid: pr.headRefOid, + commits: prCheckRollupCommitsSchema.parse(pr.commits) + }, + createPRCheckRollupPageReader(repository, number, options) + ) + } catch { + // Metadata remains usable when complete checks need REST recovery. } const stack = stackSchema.safeParse(pr.stack) const entry = stackEntrySchema.safeParse(pr.stackEntry) @@ -248,8 +192,8 @@ export async function readPullRequestSidebarQuery( ...metadata, baseRefOid: pr.baseRefOid ?? undefined, headRefOid: pr.headRefOid ?? undefined, - statusCheckRollup, - checksUnavailable: false, + statusCheckRollup: statusCheckRollup ?? [], + checksUnavailable: statusCheckRollup === undefined, stackMetadataChecked, stack: stackMetadataChecked && validStack diff --git a/src/main/github/client/map/work-item-field-coercion.ts b/src/main/github/client/map/work-item-field-coercion.ts index c002d3a682c..592c84b6ca1 100644 --- a/src/main/github/client/map/work-item-field-coercion.ts +++ b/src/main/github/client/map/work-item-field-coercion.ts @@ -12,7 +12,7 @@ export const WORK_ITEM_PR_LIST_JSON_FIELDS = // Keep first-paint reviewers in list payloads; defer costly checks, review decisions and merge metadata. export const WORK_ITEM_PR_DETAIL_JSON_FIELDS = - 'number,title,state,url,labels,updatedAt,author,isDraft,headRefName,baseRefName,headRefOid,headRepositoryOwner,additions,deletions,changedFiles,reviewDecision,reviewRequests,latestReviews,assignees,statusCheckRollup,mergeable,mergeStateStatus,autoMergeRequest,maintainerCanModify' + 'number,title,state,url,labels,updatedAt,author,isDraft,headRefName,baseRefName,headRefOid,headRepositoryOwner,additions,deletions,changedFiles,reviewDecision,reviewRequests,latestReviews,assignees,mergeable,mergeStateStatus,autoMergeRequest,maintainerCanModify' /** Preserve API-provided avatars with logins; dotcom login-based URLs do not identify Enterprise avatars. */ export function authorFieldsFromUnknown( diff --git a/src/main/github/complete-pr-check-observation.test.ts b/src/main/github/complete-pr-check-observation.test.ts new file mode 100644 index 00000000000..67a1f68a126 --- /dev/null +++ b/src/main/github/complete-pr-check-observation.test.ts @@ -0,0 +1,181 @@ +import { beforeEach, expect, it, vi } from 'vitest' + +const { exec } = vi.hoisted(() => ({ exec: vi.fn() })) +vi.mock('../git/command-runner/gh-exec-file', async (original) => ({ + ...(await original>()), + ghExecFileAsync: exec +})) +vi.mock('./rate-limit', () => ({ + noteRepositoryRateLimitSpend: vi.fn(), + repositoryRateLimitGuard: () => ({ blocked: false }), + spendsSharedGitHubComQuota: () => false +})) +import { readCompletePRCheckObservation } from './client/check/complete-pr-check-observation' +import { summarizePRCheckRollup } from '../../shared/source-control/checks/pr-check-status' + +const repository = { owner: 'acme', repo: 'widgets', host: 'github.com' } +const sha = 'a'.repeat(40) +const success = { + __typename: 'CheckRun', + status: 'COMPLETED', + conclusion: 'SUCCESS', + checkSuite: { databaseId: 7 } +} +const failure = { ...success, conclusion: 'FAILURE' } +const connection = (nodes: unknown[], cursor: string | null = null) => ({ + nodes, + pageInfo: { hasNextPage: cursor !== null, endCursor: cursor } +}) +function page( + contexts: unknown[], + suites: unknown[] = [], + checksCursor: string | null = null, + suitesCursor: string | null = null, + head = sha +) { + return { + stdout: JSON.stringify({ + data: { + repository: { + pullRequest: { + number: 42, + headRefOid: head, + commits: { + nodes: [ + { + commit: { + oid: head, + statusCheckRollup: { contexts: connection(contexts, checksCursor) }, + checkSuites: connection(suites, suitesCursor) + } + } + ] + } + } + } + } + }) + } +} +const read = () => readCompletePRCheckObservation(repository, 42, sha, { cwd: '/repo' }) +beforeEach(() => vi.resetAllMocks()) + +it('counts a hidden failure and suite-only blocker after both first pages without counting a represented suite twice', async () => { + exec + .mockResolvedValueOnce( + page( + Array.from({ length: 100 }, () => success), + [{ databaseId: 7, conclusion: 'ACTION_REQUIRED' }], + 'checks-2', + 'suites-2' + ) + ) + .mockResolvedValueOnce(page([failure])) + .mockResolvedValueOnce(page([], [{ databaseId: 8, conclusion: 'ACTION_REQUIRED' }])) + const rollup = await read() + expect(summarizePRCheckRollup(rollup!)).toEqual({ + state: 'failure', + total: 102, + passed: 100, + failed: 2, + cancelled: 0, + pending: 0, + neutral: 0 + }) +}) + +it('counts unnamed and name-colliding failed observations instead of using detail-list filtering', async () => { + exec.mockResolvedValueOnce( + page([ + success, + { ...failure, name: '' }, + { __typename: 'StatusContext', context: 'same-name', state: 'FAILURE' } + ]) + ) + expect(summarizePRCheckRollup((await read())!)).toMatchObject({ + state: 'failure', + total: 3, + failed: 2 + }) +}) + +it.each(['failed-page', 'changed-head', 'broken-cursor'])( + 'never certifies the successful prefix after %s', + async (kind) => { + exec.mockResolvedValueOnce(page([success], [], 'checks-2')) + if (kind === 'failed-page') { + exec.mockRejectedValueOnce(new Error('Unavailable')) + } else { + exec.mockResolvedValueOnce( + page( + [success], + [], + kind === 'broken-cursor' ? 'checks-2' : null, + null, + kind === 'changed-head' ? 'b'.repeat(40) : sha + ) + ) + } + exec.mockRejectedValue(new Error('REST unavailable')) + expect(await read()).toBeUndefined() + } +) + +it('recovers every REST page and endpoint before publishing a full verdict', async () => { + exec.mockImplementation(async (args: string[]) => { + if (args.includes('graphql')) { + throw new Error('GraphQL unavailable') + } + const path = args.at(-1)! + expect(args).not.toContain('--cache') + if (path.includes('/check-runs?')) { + return { + stdout: JSON.stringify({ + total_count: 101, + check_runs: path.endsWith('page=1') + ? Array.from({ length: 100 }, () => ({ + status: 'completed', + conclusion: 'success', + check_suite: { id: 7 } + })) + : [{ status: 'completed', conclusion: 'cancelled', check_suite: { id: 7 } }] + }) + } + } + if (path.includes('/status?')) { + return { + stdout: JSON.stringify({ total_count: 1, statuses: [{ state: 'failure', context: '' }] }) + } + } + return { + stdout: JSON.stringify({ + total_count: 1, + check_suites: [{ id: 8, status: 'completed', conclusion: 'action_required' }] + }) + } + }) + expect(summarizePRCheckRollup((await read())!)).toEqual({ + state: 'failure', + total: 103, + passed: 100, + failed: 3, + cancelled: 1, + pending: 0, + neutral: 0 + }) +}) + +it('distinguishes exhausted empty REST collections from a missing required subread', async () => { + let failStatuses = false + exec.mockImplementation(async (args: string[]) => { + if (args.includes('graphql') || (failStatuses && args.at(-1)!.includes('/status?'))) { + throw new Error('Unavailable') + } + return { + stdout: JSON.stringify({ total_count: 0, check_runs: [], statuses: [], check_suites: [] }) + } + }) + expect(await read()).toEqual([]) + failStatuses = true + expect(await read()).toBeUndefined() +}) diff --git a/src/main/github/project-account-operations.test.ts b/src/main/github/project-account-operations.test.ts index d0a0dbf1c65..d5ccf8b4da5 100644 --- a/src/main/github/project-account-operations.test.ts +++ b/src/main/github/project-account-operations.test.ts @@ -644,7 +644,7 @@ it.each(['error', 'absent'] as const)( it('recovers visible merged review through Bob complete membership iteration after Alice error and reuses Bob confirmation', async () => { request = (args, child, token) => queueMicrotask(() => { - const membership = args.find((arg) => arg.includes('/commits/')) + const membership = args.find((arg) => arg.includes('/commits/') && arg.includes('/pulls?')) if (membership && token === 'Alice-token') { child.stderr?.emit('data', Buffer.from('request failed')) child.emit('exit', 1, null) @@ -697,8 +697,11 @@ it('recovers visible merged review through Bob complete membership iteration aft }) expect( requests - .filter((r) => r.args.some((arg) => arg.includes('/commits/'))) - .map((r) => ({ endpoint: r.args.find((arg) => arg.includes('/commits/')), token: r.token })) + .filter((r) => r.args.some((arg) => arg.includes('/commits/') && arg.includes('/pulls?'))) + .map((r) => ({ + endpoint: r.args.find((arg) => arg.includes('/commits/') && arg.includes('/pulls?')), + token: r.token + })) ).toEqual([ { endpoint: 'repos/acme/widgets/commits/bbbb2222bbbb2222/pulls?per_page=100&page=1', diff --git a/src/main/github/pull-request-sidebar-query.test.ts b/src/main/github/pull-request-sidebar-query.test.ts index b4c6d188572..af7f7bba5ef 100644 --- a/src/main/github/pull-request-sidebar-query.test.ts +++ b/src/main/github/pull-request-sidebar-query.test.ts @@ -12,7 +12,8 @@ vi.mock('../git/command-runner/git-exec-file', async (importOriginal) => ({ })) vi.mock('./rate-limit', () => ({ noteRepositoryRateLimitSpend: spend, - repositoryRateLimitGuard: () => ({ blocked: false }) + repositoryRateLimitGuard: () => ({ blocked: false }), + spendsSharedGitHubComQuota: () => false })) import { getPRByNumber, lookupPRByNumber } from './client/lookup/pr-number-lookup' @@ -33,9 +34,17 @@ function commits(checks: unknown[] = [successCheck], endCursor?: string, oid = ' { commit: { oid, + checkSuites: { nodes: [], pageInfo: { hasNextPage: false, endCursor: null } }, statusCheckRollup: { contexts: { - nodes: checks, + nodes: checks.map((raw) => + raw && + typeof raw === 'object' && + '__typename' in raw && + raw.__typename === 'CheckRun' + ? { ...raw, checkSuite: { databaseId: 7 } } + : raw + ), pageInfo: { hasNextPage: Boolean(endCursor), endCursor: endCursor ?? null } } } @@ -136,9 +145,7 @@ describe('sidebar PR query', () => { ).resolves.toMatchObject({ number: 42 }) - expect(exec).toHaveBeenCalledTimes(2) expect(exec.mock.calls[1][0]).toContain('repos/acme/widgets/pulls/42') - expect(spend.mock.calls.filter(([, bucket]) => bucket === 'graphql')).toHaveLength(1) } ) @@ -166,18 +173,18 @@ describe('sidebar PR query', () => { } ) - it('uses REST recovery directly if a continuation request fails', async () => { + it('retains PR metadata but never certifies a successful prefix after continuation failure', async () => { exec .mockResolvedValueOnce(response({ ...fields, commits: commits([successCheck], 'next') })) - .mockRejectedValueOnce(new Error('ETIMEDOUT')) - .mockResolvedValueOnce(restResponse()) + .mockRejectedValue(new Error('Unavailable')) await expect( getPRByNumber(repository, 42, options, 'local:host', undefined, { includeStackSummary: true }) ).resolves.toMatchObject({ - number: 42 + number: 42, + title: fields.title, + checksUnavailable: true, + statusCheckRollup: [] }) - expect(exec).toHaveBeenCalledTimes(3) - expect(exec.mock.calls[2][0]).toContain('repos/acme/widgets/pulls/42') }) it('keeps capability hydration on the PR base before attaching its stack summary', async () => { @@ -300,7 +307,9 @@ describe('sidebar PR query', () => { ) }) ) - .mockResolvedValueOnce(response({ number: 42, commits: commits([null, failingCheck]) })) + .mockResolvedValueOnce( + response({ number: 42, headRefOid: fields.headRefOid, commits: commits([failingCheck]) }) + ) const data = await getPRByNumber(repository, 42, options, 'local:host', undefined, { includeStackSummary: true }) @@ -312,26 +321,29 @@ describe('sidebar PR query', () => { }) it.each([ - { number: 42, commits: commits([], 'next') }, - { number: 42, commits: commits([], undefined, 'c'.repeat(40)) } + { number: 42, headRefOid: fields.headRefOid, commits: commits([], 'next') }, + { number: 42, headRefOid: fields.headRefOid, commits: commits([], undefined, 'c'.repeat(40)) } ])( - 'recovers through the rich CLI if checks pagination stops advancing or the commit changes', + 'keeps metadata without a certified summary when checks pagination stops advancing or the commit changes', async (nextPage) => { exec .mockResolvedValueOnce(response({ ...fields, commits: commits([successCheck], 'next') })) .mockResolvedValueOnce(response(nextPage)) - .mockResolvedValueOnce(legacyResponse()) + .mockRejectedValue(new Error('Unavailable')) const data = await getPRByNumber(repository, 42, options, 'local:host', undefined, { includeStackSummary: true }) - expect(deriveCheckStatus(data?.statusCheckRollup)).toBe('success') - expect(exec).toHaveBeenCalledTimes(3) - expect(exec.mock.calls[2][0].slice(0, 2)).toEqual(['pr', 'view']) + expect(data).toMatchObject({ + number: 42, + title: fields.title, + checksUnavailable: true, + statusCheckRollup: [] + }) } ) - it('preserves known branch discovery metadata without adding another query', async () => { - exec.mockResolvedValueOnce(legacyResponse()) + it('preserves known branch discovery metadata while reusing the combined exact check page', async () => { + exec.mockResolvedValueOnce(response()) const known = { ...fields, statusCheckRollup: [], @@ -341,8 +353,7 @@ describe('sidebar PR query', () => { } const data = await getPRByNumber(repository, 42, options, 'local:host', known) expect(data).toMatchObject({ headDefaultBranchName: 'trunk', stackMetadataChecked: true }) - expect(exec).toHaveBeenCalledTimes(1) - expect(exec.mock.calls[0][0].slice(0, 2)).toEqual(['pr', 'view']) + expect(exec.mock.calls[0][0].slice(0, 2)).toEqual(['api', 'graphql']) }) it.each([ @@ -370,7 +381,6 @@ describe('sidebar PR query', () => { usedExactNumberLookup: true }) expect(data.stackMetadataChecked).toBe(true) - expect(exec).toHaveBeenCalledTimes(2) expect(exec.mock.calls[1][0]).toContain('repos/acme/widgets/pulls/42') } ) @@ -407,12 +417,11 @@ describe('sidebar PR query', () => { ).resolves.toMatchObject({ title: 'CLI fallback' }) - expect(exec).toHaveBeenCalledTimes(2) expect(exec.mock.calls[1][0].slice(0, 2)).toEqual(['pr', 'view']) }) it.each(['github.corp.example', undefined])( - 'keeps the existing read for host %s', + 'uses host-scoped metadata and the complete collector for host %s', async (host) => { exec.mockResolvedValueOnce({ stdout: JSON.stringify({ ...fields, statusCheckRollup: [] }) }) await expect( @@ -420,7 +429,6 @@ describe('sidebar PR query', () => { includeStackSummary: true }) ).resolves.toMatchObject({ number: 42 }) - expect(exec).toHaveBeenCalledTimes(1) expect(exec.mock.calls[0][0].slice(0, 2)).toEqual(['pr', 'view']) } ) @@ -450,3 +458,113 @@ describe('sidebar PR query', () => { expect(exec.mock.calls[0][1]).toEqual({ ...options, ...execution, host: 'github.com' }) }) }) + +it.each([ + { checks: [null], errors: undefined }, + { + checks: [{ __typename: 'CheckRun', status: 'FUTURE_STATUS', conclusion: null }], + errors: undefined + }, + { + checks: [successCheck], + errors: [ + { path: ['repository', 'pullRequest', 'commits', 'nodes', 0, 'commit', 'statusCheckRollup'] } + ] + } +])( + 'keeps valid metadata and stack when strict checks are unavailable: %j', + async ({ checks, errors }) => { + exec.mockResolvedValueOnce( + response( + { + ...fields, + commits: commits(checks), + stack: { number: 7, size: 2, baseRefName: 'main' }, + stackEntry: { position: 1 } + }, + errors + ) + ) + await expect(readPullRequestSidebarQuery(repository, 42, options)).resolves.toMatchObject({ + title: fields.title, + checksUnavailable: true, + stackMetadataChecked: true, + stack: { number: 7, size: 2, position: 1 } + }) + } +) + +it.each([1, 10])( + 'reuses combined exact hydration with independent context and suite populations at N=%i', + async (n) => { + const contextPages = 2 * n + const suitePages = 3 * n + exec.mockImplementation(async (args: string[]) => { + const contextCursor = args.find((arg) => arg.startsWith('checksCursor=')) + const suiteCursor = args.find((arg) => arg.startsWith('suitesCursor=')) + const contextIndex = contextCursor ? Number(contextCursor.split('=')[1]) : 0 + const suiteIndex = suiteCursor ? Number(suiteCursor.split('=')[1]) : 0 + const lastContext = contextIndex === contextPages - 1 + const commit = { + oid: fields.headRefOid, + ...(!suiteCursor + ? { + statusCheckRollup: { + contexts: { + nodes: [ + lastContext ? { __typename: 'StatusContext', state: 'FAILURE' } : successCheck + ], + pageInfo: { + hasNextPage: !lastContext, + endCursor: lastContext ? null : String(contextIndex + 1) + } + } + } + } + : {}), + ...(!contextCursor + ? { + checkSuites: { + nodes: [{ databaseId: suiteIndex + 1, conclusion: 'SUCCESS' }], + pageInfo: { + hasNextPage: suiteIndex < suitePages - 1, + endCursor: suiteIndex < suitePages - 1 ? String(suiteIndex + 1) : null + } + } + } + : {}) + } + return response({ ...fields, commits: { nodes: [{ commit }] } }) + }) + const known = { + ...fields, + stack: undefined, + statusCheckRollup: [], + headDefaultBranchName: 'trunk' + } + const observed = await getPRByNumber(repository, 42, options, 'local:host', known) + expect(observed).toMatchObject({ headDefaultBranchName: 'trunk', checksUnavailable: false }) + expect(observed?.statusCheckRollup).toHaveLength(contextPages) + expect(observed?.statusCheckRollup?.at(-1)).toEqual({ + __typename: 'StatusContext', + state: 'FAILURE' + }) + expect(exec).toHaveBeenCalledTimes(1 + (contextPages - 1) + (suitePages - 1)) + expect(exec.mock.calls.every(([args]) => args[0] === 'api' && args[1] === 'graphql')).toBe(true) + } +) + +it('retains the rich exact metadata path when the optional combined read fails', async () => { + exec + .mockRejectedValueOnce(new Error('unsupported optional query')) + .mockResolvedValueOnce(legacyResponse()) + await expect( + getPRByNumber(repository, 42, options, 'local:host', { + ...fields, + stack: undefined, + statusCheckRollup: [], + headDefaultBranchName: 'trunk' + }) + ).resolves.toMatchObject({ reviewDecision: null, headDefaultBranchName: 'trunk' }) + expect(exec.mock.calls[1][0].slice(0, 2)).toEqual(['pr', 'view']) +}) diff --git a/src/renderer/src/components/github-checks-tab-state.ts b/src/renderer/src/components/github-checks-tab-state.ts index a5be3b63e9a..ff3f3965f67 100644 --- a/src/renderer/src/components/github-checks-tab-state.ts +++ b/src/renderer/src/components/github-checks-tab-state.ts @@ -1,3 +1,4 @@ +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' import type { PRCheckDetail, PRCheckRunDetails } from '../../../shared/github/check-types' export type CheckDetailsLoadState = { @@ -16,6 +17,7 @@ export type GitHubChecksTabState = { contextKey: string contextOwner: GitHubChecksContextOwner sourceChecks: GitHubChecksSource + checkObservationOwner?: GitHubWorkItem localChecks: PRCheckDetail[] | null expandedCheckKey: string | null detailsByCheckKey: Record @@ -45,9 +47,13 @@ export function resolveGitHubChecksTabState( if (state.contextKey !== contextKey) { return createGitHubChecksTabState(sourceChecks, contextKey) } - return state.sourceChecks === sourceChecks - ? state - : resetGitHubChecksTabForSource(state, sourceChecks) + if (state.sourceChecks === sourceChecks) { + return state + } + const reset = resetGitHubChecksTabForSource(state, sourceChecks) + return sourceChecks === state.localChecks + ? { ...reset, checkObservationOwner: state.checkObservationOwner } + : reset } export function resetGitHubChecksTabForSource( @@ -66,11 +72,13 @@ export function resetGitHubChecksTabForSource( export function updateGitHubChecksTabLocalChecks( state: GitHubChecksTabState, - localChecks: PRCheckDetail[] + localChecks: PRCheckDetail[], + checkObservationOwner?: GitHubWorkItem ): GitHubChecksTabState { return { ...state, - localChecks + localChecks, + checkObservationOwner } } diff --git a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-actions.ts b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-actions.ts index e23d0b0a3c6..d2964a411d6 100644 --- a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-actions.ts +++ b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-actions.ts @@ -1,3 +1,4 @@ +import { readPRCheckRefreshOwner } from '@/lib/pr-check-refresh-owner' import type React from 'react' import { toast } from 'sonner' import { callRuntimeRpc } from '@/runtime/runtime-rpc-client' @@ -25,6 +26,8 @@ export type ChecksTabActionContext = { sourceContext?: TaskSourceContext | null repoId: string | null repoPath: string | null + item: GitHubWorkItem + onOwnerUpdated?: (item: GitHubWorkItem) => void itemNumber: number itemRepoId: string headSha: string | undefined @@ -63,6 +66,23 @@ export async function refreshGitHubChecksTab( ctx.activeChecksRefreshRequestIdRef.current = refreshRequestId ctx.setRefreshingOwner({ contextOwner: refreshContextOwner, requestId: refreshRequestId }) try { + const observation = await readPRCheckRefreshOwner({ + repoPath: ctx.repoPath, + repoId: ctx.repoId ?? ctx.itemRepoId, + sourceContext: ctx.sourceContext, + ownerRepo: ctx.prRepo, + item: ctx.item, + accepts: () => + ctx.mountedRef.current && + ctx.committedChecksContextOwnerRef.current === refreshContextOwner && + ctx.activeChecksRefreshRequestIdRef.current === refreshRequestId + }) + if (!observation.current()) { + return null + } + if (observation.owner) { + ctx.onOwnerUpdated?.(observation.owner) + } const nextChecks = await (ctx.runtimeHost ? callRuntimeRpc( { kind: 'environment', environmentId: ctx.runtimeHost.environmentId }, @@ -70,24 +90,25 @@ export async function refreshGitHubChecksTab( { repo: getGitHubRuntimeRepoId(ctx.sourceContext, ctx.repoId ?? ctx.itemRepoId), prNumber: ctx.itemNumber, - headSha: ctx.headSha, + headSha: observation.owner?.headSha ?? ctx.headSha, prRepo: ctx.prRepo, noCache: true }, - { timeoutMs: 30_000 } + { timeoutMs: 30_000, ...observation.rpcOptions } ) : window.api.gh.prChecks({ repoPath: ctx.repoPath ?? '', repoId: ctx.repoId ?? undefined, sourceContext: ctx.sourceContext, prNumber: ctx.itemNumber, - headSha: ctx.headSha, + headSha: observation.owner?.headSha ?? ctx.headSha, prRepo: ctx.prRepo, noCache: true, // Refresh and rerun are user acts: they may start a stopped WSL distro. wakeWslDistro: true })) if ( + !observation.current() || !ctx.mountedRef.current || ctx.committedChecksContextOwnerRef.current !== refreshContextOwner || ctx.activeChecksRefreshRequestIdRef.current !== refreshRequestId @@ -96,7 +117,11 @@ export async function refreshGitHubChecksTab( } ctx.setChecksState((current) => current.contextOwner === refreshContextOwner - ? updateGitHubChecksTabLocalChecks(resetGitHubChecksTabForSource(current), nextChecks) + ? updateGitHubChecksTabLocalChecks( + resetGitHubChecksTabForSource(current), + nextChecks, + observation.owner + ) : current ) ctx.onChecksUpdated(nextChecks) diff --git a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-header.tsx b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-header.tsx index d933dfa5dc3..b45061c442f 100644 --- a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-header.tsx +++ b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab-header.tsx @@ -151,6 +151,7 @@ export function ChecksTabCompactHeader({ counts, summaryLabel, listLength, + showSummary = false, refreshAction, rerunAction, secondaryActions @@ -159,6 +160,7 @@ export function ChecksTabCompactHeader({ summaryColor: string counts: { failing: number; pending: number } summaryLabel: string + showSummary?: boolean listLength: number refreshAction: React.JSX.Element rerunAction: React.JSX.Element | null @@ -179,7 +181,7 @@ export function ChecksTabCompactHeader({
{translate('auto.components.GitHubItemDialog.4bd1f5b055', 'Checks')}
- {listLength > 0 && ( + {(listLength > 0 || showSummary) && (
{summaryLabel}
diff --git a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab.tsx b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab.tsx index ff19bd7c65f..6e47a2b8808 100644 --- a/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab.tsx +++ b/src/renderer/src/components/github-item-dialog/inspect-pull-request/checks-tab.tsx @@ -1,5 +1,8 @@ +import { PRCheckEmptyDetails } from '@/components/pr-check-empty-details' +import { isCompletePRCheckOwner } from '../../../../../shared/github/complete-pr-check-owner' +import { usePRCheckRefreshOwner } from '@/hooks/use-pr-check-refresh-owner' import React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react' -import { CircleDashed, LoaderCircle } from 'lucide-react' +import { LoaderCircle } from 'lucide-react' import { useMountedRef } from '@/hooks/useMountedRef' import { cn } from '@/lib/utils' import { CHECK_COLOR } from '@/components/right-sidebar/checks-panel/presentation/check-presentation' @@ -21,11 +24,11 @@ import type { } from '../../../../../shared/github/work-item-types' import type { TaskSourceContext } from '../../../../../shared/task-source-context' import { getTaskSourceCacheScope } from '../../../../../shared/task-source-context' -import { translate } from '@/i18n/i18n' import { sortChecksBySeverity } from '../../../../../shared/source-control/checks/pr-check-severity-order' import { getCheckCountChips, getCheckCounts, + getOverallCheckCounts, getChecksSummaryLabel } from '@/components/pr-check-counts' import { resolvePullRequestRepo } from '@/components/github/github-work-item-identity' @@ -64,6 +67,7 @@ export function ChecksTab({ variant?: 'compact' | 'page' onChecksUpdated: (checks: PRCheckDetail[]) => void }): React.JSX.Element { + const { checkOwner, onOwnerUpdated } = usePRCheckRefreshOwner(item, sourceContext) const [fixingChecks, setFixingChecks] = useState(false) const mountedRef = useMountedRef() const prRepo = useMemo(() => resolvePullRequestRepo(item), [item]) @@ -109,8 +113,17 @@ export function ChecksTab({ const sorted = sortChecksBySeverity(list) const failedChecks = getBrokenChecks(list) const counts = getCheckCounts(list) - const summaryLabel = getChecksSummaryLabel(list) - const { SummaryIcon, summaryColor } = getChecksTabSummaryPresentation(counts) + const overallCounts = getOverallCheckCounts( + list, + checkOwner, + resolvedChecksState.checkObservationOwner + ) + const summaryLabel = getChecksSummaryLabel( + list, + checkOwner, + resolvedChecksState.checkObservationOwner + ) + const { SummaryIcon, summaryColor } = getChecksTabSummaryPresentation(overallCounts) const canFixBrokenChecks = Boolean((repoId ?? item.repoId) && failedChecks.length > 0) const handleRefresh = useCallback( @@ -122,9 +135,11 @@ export function ChecksTab({ sourceContext, repoId, repoPath, + item: checkOwner, + onOwnerUpdated, itemNumber: item.number, itemRepoId: item.repoId, - headSha, + headSha: checkOwner.headSha, prRepo, mountedRef, committedChecksContextOwnerRef, @@ -140,11 +155,11 @@ export function ChecksTab({ ), [ canUseChecksRepoContext, - headSha, - item.number, - item.repoId, + item, + checkOwner, mountedRef, onChecksUpdated, + onOwnerUpdated, runtimeHost, prRepo, repoId, @@ -162,9 +177,11 @@ export function ChecksTab({ sourceContext, repoId, repoPath, - itemNumber: item.number, - itemRepoId: item.repoId, - headSha, + item: checkOwner, + onOwnerUpdated, + itemNumber: checkOwner.number, + itemRepoId: checkOwner.repoId, + headSha: checkOwner.headSha, prRepo, mountedRef, committedChecksContextOwnerRef, @@ -181,11 +198,10 @@ export function ChecksTab({ ), [ canUseChecksRepoContext, - headSha, - item.number, - item.repoId, + checkOwner, mountedRef, onChecksUpdated, + onOwnerUpdated, prRepo, runtimeHost, rerunning, @@ -215,6 +231,8 @@ export function ChecksTab({ sourceContext, repoId, repoPath, + item, + onOwnerUpdated, itemNumber: item.number, itemRepoId: item.repoId, headSha, @@ -236,10 +254,10 @@ export function ChecksTab({ [ canUseChecksRepoContext, headSha, - item.number, - item.repoId, + item, mountedRef, onChecksUpdated, + onOwnerUpdated, runtimeHost, prRepo, repoId, @@ -283,7 +301,8 @@ export function ChecksTab({ -
- -
- - {translate('auto.components.GitHubItemDialog.ecffebc251', 'No checks found')} - - - {translate( - 'auto.components.GitHubItemDialog.90020cc1f3', - 'This pull request has no reported checks yet.' - )} - -
- {actions} -
- - ) - } return ( - <> - {compactHeader} -
- -
- {translate('auto.components.GitHubItemDialog.e52bed9264', 'No checks reported yet')} -
-
- + ) } if (variant === 'page') { @@ -345,7 +344,7 @@ export function ChecksTab({ className={cn( 'size-4 shrink-0', summaryColor, - counts.pending > 0 && counts.failing === 0 && 'animate-spin' + overallCounts.pending > 0 && overallCounts.failing === 0 && 'animate-spin' )} />
diff --git a/src/renderer/src/components/github-item-dialog/load-item-details/use-github-work-item-details.ts b/src/renderer/src/components/github-item-dialog/load-item-details/use-github-work-item-details.ts index 858e02112a4..89abe0ab33c 100644 --- a/src/renderer/src/components/github-item-dialog/load-item-details/use-github-work-item-details.ts +++ b/src/renderer/src/components/github-item-dialog/load-item-details/use-github-work-item-details.ts @@ -1,3 +1,4 @@ +import { projectPRCheckOwner } from '../../../../../shared/github/complete-pr-check-owner' import { useAppStore } from '@/store' import { useGitHubItemTargetContext } from './github-work-item-target-context' import { @@ -102,7 +103,14 @@ export function useGitHubWorkItemDetails({ // The opened row and the loaded item both show the current record's facts; main's item lacks the row's repo. const taskItems = useMemo( () => - workItem ? [workItem, ...(rawDetails ? [{ ...workItem, ...rawDetails.item }] : [])] : [], + workItem + ? [ + workItem, + ...(rawDetails + ? [projectPRCheckOwner(rawDetails.item, { ...workItem, ...rawDetails.item })] + : []) + ] + : [], [workItem, rawDetails] ) const projectedItems = useGitHubTaskItems(taskItems) @@ -194,7 +202,7 @@ export function useGitHubWorkItemDetails({ if (!workItem || !details?.item) { return projectedWorkItem } - return { + return projectPRCheckOwner(details.item, { ...projectedWorkItem, ...details.item, repoId: workItem.repoId, @@ -202,7 +210,7 @@ export function useGitHubWorkItemDetails({ number: workItem.number, url: workItem.url, ...(resource?.type === 'pr' ? { prRepo: resource.repository } : {}) - } + }) }, [details?.item, workItem, projectedWorkItem, resource]) useEffect(() => { diff --git a/src/renderer/src/components/github-item-dialog/load-item-details/work-item-details-target-contract.test.tsx b/src/renderer/src/components/github-item-dialog/load-item-details/work-item-details-target-contract.test.tsx index a132f348700..2005b839015 100644 --- a/src/renderer/src/components/github-item-dialog/load-item-details/work-item-details-target-contract.test.tsx +++ b/src/renderer/src/components/github-item-dialog/load-item-details/work-item-details-target-contract.test.tsx @@ -1,3 +1,5 @@ +import type * as LocalRuntimeCapabilities from '@/runtime/local-runtime-capabilities' +import { completePRCheckGraphQLResponse } from '../../../../../shared/github/complete-pr-check-test-fixture' import type * as GitRunner from '../../../../../main/git/command-runner/gh-exec-file' import type { GitHubRepoContext } from '../../../../../main/github/github-repository-identity' import type { PRComment } from '../../../../../shared/github/comment-types' @@ -143,7 +145,8 @@ vi.mock('@/runtime/runtime-rpc-client', () => ({ callRuntimeRpc: io.rpc, runtimeEnvironmentSupportsCapability: async () => io.capable })) -vi.mock('@/runtime/local-runtime-capabilities', () => ({ +vi.mock('@/runtime/local-runtime-capabilities', async (importOriginal) => ({ + ...(await importOriginal()), ensureLocalRuntimeCapabilities: async () => ['github.exact-work-item-target.v1'] })) vi.mock('@/i18n/i18n', () => ({ translate: (_key: string, fallback: string) => fallback })) @@ -311,34 +314,15 @@ beforeEach(() => { }) } if (query.includes('statusCheckRollup')) { - return response({ - data: { - repository: { - pullRequest: { - commits: { - nodes: [ - { - commit: { - statusCheckRollup: { - contexts: { - nodes: [ - { - __typename: 'CheckRun', - name: `${owner} check`, - status: 'COMPLETED', - conclusion: 'SUCCESS' - } - ] - } - } - } - } - ] - } - } - } + return completePRCheckGraphQLResponse(93, `${owner}-head`, [ + { + __typename: 'CheckRun', + name: `${owner} check`, + status: 'COMPLETED', + conclusion: 'SUCCESS', + checkSuite: { databaseId: 7 } } - }) + ]) } if (args.some((a) => a.includes('/files?'))) { return response([ diff --git a/src/renderer/src/components/pr-check-counts.ts b/src/renderer/src/components/pr-check-counts.ts index e0fabc1aa39..cb0d5bc67b7 100644 --- a/src/renderer/src/components/pr-check-counts.ts +++ b/src/renderer/src/components/pr-check-counts.ts @@ -1,3 +1,9 @@ +import { normalizePRCheckHeadSha } from '../../../shared/github/pr-check-head' +import { + isCompletePRCheckOwner, + samePRCheckObservation +} from '../../../shared/github/complete-pr-check-owner' +import type { ProviderCheckSummary } from '../../../shared/github/pull-request-types' import { translate } from '../i18n/i18n' import { summarizeProviderChecks } from '../../../shared/source-control/checks/provider-check-summary' import type { PRCheckDetail } from '../../../shared/github/check-types' @@ -35,6 +41,45 @@ export function getCheckCounts(checks: readonly PRCheckDetail[]): PRCheckCounts } } +export function getOverallCheckCounts( + checks: readonly PRCheckDetail[], + owner?: { headSha?: string; checksSummary?: ProviderCheckSummary }, + rowsOwner?: { checksSummary?: ProviderCheckSummary } +): PRCheckCounts { + if (!owner || !isCompletePRCheckOwner(owner)) { + return getCheckCounts(checks) + } + const summary = owner.checksSummary + const failed = (summary?.failed ?? 0) - (summary?.cancelled ?? 0) + const rows = getCheckCounts(checks) + const distinctApprovals = new Set( + checks + .filter((check) => getCheckConclusion(check) === 'action_required') + .map((check) => check.checkRunId ?? check.workflowRunId ?? check.url ?? check.name) + ).size + const explained = + rowsOwner && + samePRCheckObservation(owner, rowsOwner) && + checks.length > 0 && + checks.every( + (check) => + normalizePRCheckHeadSha(check.observedHeadSha) !== undefined && + normalizePRCheckHeadSha(check.observedHeadSha) === normalizePRCheckHeadSha(owner.headSha) + ) && + failed > 0 && + distinctApprovals === failed && + rows.needsAction === distinctApprovals && + rows.failing === 0 + return { + passing: summary?.passed ?? 0, + failing: explained ? 0 : failed, + cancelled: summary?.cancelled ?? 0, + needsAction: explained ? failed : 0, + pending: summary?.pending ?? 0, + neutral: summary?.neutral ?? 0 + } +} + /** `tone` keys the caller's `CHECK_COLOR`/`CHECK_ICON` maps so styling stays with the surface. */ export type PRCheckCountChip = { tone: 'success' | 'failure' | 'cancelled' | 'action_required' | 'pending' | 'neutral' @@ -95,9 +140,18 @@ export function getCheckCountChips(counts: PRCheckCounts): PRCheckCountChip[] { return chips } -export function getChecksSummaryLabel(checks: readonly PRCheckDetail[]): string { - const counts = getCheckCounts(checks) - if (checks.length === 0) { +export function getChecksSummaryLabel( + checks: readonly PRCheckDetail[], + owner?: { headSha?: string; checksSummary?: ProviderCheckSummary }, + rowsOwner?: { checksSummary?: ProviderCheckSummary } +): string { + const complete = owner && isCompletePRCheckOwner(owner) + if (complete && !owner.checksSummary) { + return translate('auto.components.right.sidebar.ChecksPanel.976cefd02f', 'Checks unavailable') + } + const total = complete ? owner.checksSummary!.total : checks.length + const counts = getOverallCheckCounts(checks, owner, rowsOwner) + if (total === 0) { return translate('auto.components.prCheckCounts.noChecksFound', 'No checks found') } if (counts.failing > 0) { @@ -123,14 +177,14 @@ export function getChecksSummaryLabel(checks: readonly PRCheckDetail[]): string if (counts.cancelled > 0) { return translate('auto.components.editor.CheckRunDetailsPanel.91a4c7e2b0', 'Cancelled') } - if (counts.passing === checks.length) { + if (counts.passing === total) { return translate('auto.components.prCheckCounts.allChecksPassing', 'All checks passing') } return translate( 'auto.components.prCheckCounts.checksPassingOfTotal', '{{passing}} of {{count}} checks passing', { - count: checks.length, + count: total, passing: counts.passing, defaultValue_one: '{{passing}} of {{count}} check passing' } diff --git a/src/renderer/src/components/pr-check-empty-details.fixture.tsx b/src/renderer/src/components/pr-check-empty-details.fixture.tsx new file mode 100644 index 00000000000..2d0b262e68c --- /dev/null +++ b/src/renderer/src/components/pr-check-empty-details.fixture.tsx @@ -0,0 +1,69 @@ +import { defineFixture } from '../component-fixtures/component-fixture' +import { PRCheckEmptyDetails } from './pr-check-empty-details' +import { ChecksCompactHeader } from './pull-request-page/checks/toolbar' +import { ChecksTabCompactHeader } from './github-item-dialog/inspect-pull-request/checks-tab-header' +import { getChecksTabSummaryPresentation } from './github-item-dialog/inspect-pull-request/checks-tab-summary' +import { getOverallCheckCounts, getChecksSummaryLabel } from './pr-check-counts' +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' +import { Button } from './ui/button' + +const owner = acceptPRCheckObservation( + { + number: 42, + url: 'https://github.com/acme/widgets/pull/42', + headSha: 'h1', + mergeable: 'UNKNOWN' as const + }, + null, + { scope: 'fixture', complete: true, current: true } +)! +function EmptyChecks({ + variant, + dialog = false +}: { + variant: 'page' | 'compact' + dialog?: boolean +}) { + const counts = getOverallCheckCounts([], owner) + const presentation = getChecksTabSummaryPresentation(counts) + const summaryLabel = getChecksSummaryLabel([], owner) + const Header = dialog ? ChecksTabCompactHeader : ChecksCompactHeader + const action = ( + + ) + return ( +
+ + } + /> +
+ ) +} +export const page = defineFixture({ width: 720, render: () => }) +export const compact = defineFixture({ + width: 305, + render: () => +}) +export const dialog = defineFixture({ + width: 420, + render: () => +}) diff --git a/src/renderer/src/components/pr-check-empty-details.tsx b/src/renderer/src/components/pr-check-empty-details.tsx new file mode 100644 index 00000000000..c2be1016ed8 --- /dev/null +++ b/src/renderer/src/components/pr-check-empty-details.tsx @@ -0,0 +1,75 @@ +import type React from 'react' +import { CircleDashed } from 'lucide-react' +import { cn } from '@/lib/utils' +import { translate } from '@/i18n/i18n' +import { isCompletePRCheckOwner } from '../../../shared/github/complete-pr-check-owner' +import type { ProviderCheckSummary } from '../../../shared/github/pull-request-types' + +export function PRCheckEmptyDetails({ + owner, + dialog = false, + variant, + compactHeader, + actions, + SummaryIcon, + summaryColor, + summaryLabel +}: { + dialog?: boolean + owner?: { checksSummary?: ProviderCheckSummary } + variant: 'page' | 'compact' + compactHeader: React.JSX.Element + actions: React.JSX.Element + SummaryIcon: React.ComponentType<{ className?: string }> + summaryColor: string + summaryLabel: string +}): React.JSX.Element { + const complete = owner && isCompletePRCheckOwner(owner) + const noChecks = !complete || owner.checksSummary?.total === 0 + const detailLabel = noChecks + ? dialog + ? translate('auto.components.GitHubItemDialog.e52bed9264', 'No checks reported yet') + : translate('auto.components.PullRequestPage.a18d01cda3', 'No checks reported yet') + : translate('auto.components.prCheckCounts.noCheckDetails', 'No check details available') + if (variant === 'compact') { + return ( + <> + {compactHeader} +
+ +
{detailLabel}
+
+ + ) + } + return ( +
+
+ +
+ + {noChecks + ? dialog + ? translate('auto.components.GitHubItemDialog.ecffebc251', 'No checks found') + : translate('auto.components.PullRequestPage.45877f5089', 'No checks found') + : summaryLabel} + + + {noChecks + ? dialog + ? translate( + 'auto.components.GitHubItemDialog.90020cc1f3', + 'This pull request has no reported checks yet.' + ) + : translate( + 'auto.components.PullRequestPage.3912daf310', + 'This pull request has no reported checks yet.' + ) + : detailLabel} + +
+ {actions} +
+
+ ) +} diff --git a/src/renderer/src/components/pr-check-owner-presentation.test.tsx b/src/renderer/src/components/pr-check-owner-presentation.test.tsx new file mode 100644 index 00000000000..2a9d96f3c61 --- /dev/null +++ b/src/renderer/src/components/pr-check-owner-presentation.test.tsx @@ -0,0 +1,205 @@ +// @vitest-environment happy-dom +import { cleanup, fireEvent, render, screen } from '@testing-library/react' +import { afterEach, expect, it, vi } from 'vitest' +import { CircleDashed } from 'lucide-react' +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' +import { getCheckCounts, getOverallCheckCounts, getChecksSummaryLabel } from './pr-check-counts' +import { ChecksTabLayouts } from './pull-request-page/checks/layouts' +import { ChecksCompactHeader } from './pull-request-page/checks/toolbar' +import { ChecksTabCompactHeader } from './github-item-dialog/inspect-pull-request/checks-tab-header' +import { getChecksTabSummaryPresentation } from './github-item-dialog/inspect-pull-request/checks-tab-summary' +import { PRTriageStrip } from './right-sidebar/checks-panel/presentation/triage-strip' +import { i18n } from '@/i18n/i18n' +import type { PRCheckDetail } from '../../../shared/github/check-types' + +const owner = { + number: 42, + url: 'https://github.com/acme/widgets/pull/42', + headSha: 'a'.repeat(40), + mergeable: 'UNKNOWN' as const +} +const context = { scope: 'account:runtime', complete: true, current: true } +const blocked = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + pending: 0, + neutral: 0 +} +const rows: PRCheckDetail[] = [ + { + name: 'Approval', + status: 'completed', + conclusion: 'action_required', + url: null, + observedHeadSha: 'a'.repeat(40) + } +] +afterEach(async () => { + cleanup() + await i18n.changeLanguage('en') +}) + +it.each([ChecksCompactHeader, ChecksTabCompactHeader])( + 'keeps row approval chips while only current associated rows explain an owner failure', + (Header) => { + const accepted = acceptPRCheckObservation({ ...owner, checksSummary: blocked }, null, context)! + const counts = getCheckCounts(rows) + expect(counts).toMatchObject({ passing: 0, failing: 0, needsAction: 1 }) + const overall = getOverallCheckCounts(rows, accepted, accepted) + render( +
Refresh} + rerunAction={null} + secondaryActions={null} + /> + ) + expect(screen.getByText('1 check needs action')).toBeTruthy() + cleanup() + const newer = acceptPRCheckObservation( + { ...owner, checksSummary: { ...blocked } }, + accepted, + context + )! + const nextCounts = getOverallCheckCounts(rows, newer, accepted) + render( +
Refresh} + rerunAction={null} + secondaryActions={null} + /> + ) + expect(screen.getByText('1 check failing')).toBeTruthy() + expect( + getOverallCheckCounts( + rows, + acceptPRCheckObservation( + { ...owner, checksSummary: { ...blocked, failed: 2, total: 102 } }, + null, + context + )!, + accepted + ).failing + ).toBe(2) + } +) + +it.each(['page', 'compact'] as const)( + 'does not claim zero whole checks in the empty %s renderer', + async (variant) => { + i18n.addResourceBundle( + 'es', + 'translation', + { + auto: { + components: { + right: { sidebar: { ChecksPanel: { '976cefd02f': 'Comprobaciones no disponibles' } } }, + prCheckCounts: { noCheckDetails: 'No hay detalles de comprobaciones' } + } + } + }, + true, + true + ) + await i18n.changeLanguage('es') + const accepted = acceptPRCheckObservation(owner, null, context)! + const summaryLabel = getChecksSummaryLabel([], accepted) + render( + {summaryLabel}
} + actions={} + SummaryIcon={CircleDashed} + summaryColor="" + summaryLabel={summaryLabel} + counts={getCheckCounts([])} + summaryPending={false} + sorted={[]} + renderCheckRow={() =>
} + fixChecksAgentDialog={} + /> + ) + expect(screen.getByText('Comprobaciones no disponibles')).toBeTruthy() + expect(screen.getByText('No hay detalles de comprobaciones')).toBeTruthy() + expect(screen.queryByText('No checks found')).toBeNull() + } +) + +it('keeps the row Fix action available when the complete owner is unavailable', () => { + const accepted = acceptPRCheckObservation(owner, null, context)! + render( + {}} + isFixingChecksWithAI={false} + onFixChecksWithAI={() => {}} + /> + ) + expect(screen.getByText('Checks unavailable')).toBeTruthy() + expect(screen.getByRole('button', { name: 'Fix' }).hasAttribute('disabled')).toBe(false) +}) + +it('keeps a successful whole owner presentation when independent rows still contain an old failure', () => { + const accepted = acceptPRCheckObservation( + { ...owner, checksSummary: { ...blocked, state: 'success', total: 1, passed: 1, failed: 0 } }, + null, + context + )! + render( + {}} + isFixingChecksWithAI={false} + onFixChecksWithAI={() => {}} + /> + ) + expect(screen.getByText('No blocking PR action')).toBeTruthy() + expect(screen.queryByText('0 failing checks')).toBeNull() +}) + +it.each([false, true])('keeps a failed parent pipeline fixable with empty jobs: %s', (empty) => { + const fix = vi.fn() + const props = { + review: owner, + reviewKind: 'MR' as const, + checks: empty ? [] : rows.map((row) => ({ ...row, conclusion: 'success' as const })), + pipelineCheck: { + name: 'Pipeline', + status: 'completed' as const, + conclusion: 'failure' as const, + url: null + }, + isResolvingConflictsWithAI: false, + onResolveConflictsWithAI: () => {}, + isFixingChecksWithAI: false, + onFixChecksWithAI: fix + } + const view = render() + fireEvent.click(screen.getByRole('button', { name: 'Fix' })) + expect(fix).toHaveBeenCalledOnce() + view.rerender() + expect(screen.getByRole('button', { name: 'Fix' }).hasAttribute('disabled')).toBe(true) + view.rerender() + expect(screen.getByRole('button', { name: 'Fix' }).hasAttribute('disabled')).toBe(true) + const accepted = acceptPRCheckObservation({ ...owner, checksSummary: blocked }, null, context)! + view.rerender( + + ) + expect(screen.getByRole('button', { name: 'Fix' }).hasAttribute('disabled')).toBe(true) +}) diff --git a/src/renderer/src/components/pr-check-refresh.test.ts b/src/renderer/src/components/pr-check-refresh.test.ts new file mode 100644 index 00000000000..9c7d809d864 --- /dev/null +++ b/src/renderer/src/components/pr-check-refresh.test.ts @@ -0,0 +1,126 @@ +import { afterEach, beforeEach, expect, it, vi } from 'vitest' +import { refreshPullRequestChecks } from './pull-request-page/checks/refresh' +import { + refreshGitHubChecksTab, + type ChecksTabActionContext +} from './github-item-dialog/inspect-pull-request/checks-tab-actions' +import { createGitHubChecksTabState } from './github-checks-tab-state' +import { setLocalRuntimeCapabilitiesForTests } from '@/runtime/local-runtime-capabilities' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as capability } from '../../../shared/source-control/runtime/source-control-runtime-capabilities' +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' +import { getOverallCheckCounts } from './pr-check-counts' +const { lookup, rows } = vi.hoisted(() => ({ lookup: vi.fn(), rows: vi.fn() })) +vi.mock('@/store', () => ({ useAppStore: { getState: () => ({}) } })) +vi.mock('sonner', () => ({ toast: { error: vi.fn(), success: vi.fn() } })) +const item: GitHubWorkItem = { + id: 'pr-42', + repoId: 'repo-1', + number: 42, + type: 'pr', + title: 'PR', + state: 'open', + url: 'https://github.com/acme/widgets/pull/42', + labels: [], + author: null, + updatedAt: '2026-11-04', + headSha: 'head', + prRepo: { owner: 'acme', repo: 'widgets', host: 'github.com' } +} +const summary = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 +} +function context() { + return { + canUseChecksRepoContext: true, + runtimeHost: null, + repoId: item.repoId, + repoPath: '/repo', + item, + itemNumber: 42, + itemRepoId: item.repoId, + headSha: 'head', + prRepo: item.prRepo!, + mountedRef: { current: true }, + committedChecksContextOwnerRef: { + current: createGitHubChecksTabState([], 'repo').contextOwner + }, + nextChecksRefreshRequestIdRef: { current: 0 }, + activeChecksRefreshRequestIdRef: { current: null }, + nextCheckDetailsRequestIdRef: { current: 0 }, + setRefreshingOwner: vi.fn(), + setChecksState: vi.fn(), + setRerunningOwner: vi.fn(), + onChecksUpdated: vi.fn(), + onOwnerUpdated: vi.fn() + } satisfies ChecksTabActionContext +} +beforeEach(() => { + lookup.mockReset() + rows.mockReset() + Object.assign(globalThis, { + window: { api: { gh: { prChecks: rows, workItemByOwnerRepo: lookup } } } + }) + rows.mockResolvedValue([{ name: 'Build', status: 'completed', conclusion: 'success', url: null }]) + setLocalRuntimeCapabilitiesForTests([capability]) +}) +afterEach(() => setLocalRuntimeCapabilitiesForTests(null)) + +it.each(['page', 'dialog'])( + 'refreshes the %s owner and uses its counts while returned rows remain partial', + async (surface) => { + const ctx = context() + const refresh = () => + surface === 'page' ? refreshPullRequestChecks(ctx) : refreshGitHubChecksTab(ctx) + lookup.mockResolvedValue({ ...item, checksSummary: summary }) + const checks = await refresh() + const owner = ctx.onOwnerUpdated.mock.calls[0][0] + expect(getOverallCheckCounts(checks!, owner)).toMatchObject({ passing: 100, failing: 1 }) + lookup.mockResolvedValue({ + ...item, + checksSummary: { ...summary, state: 'success', total: 101, passed: 101, failed: 0 } + }) + await refresh() + expect(ctx.onOwnerUpdated.mock.calls[1][0].checksSummary).toMatchObject({ + state: 'success', + passed: 101 + }) + const deferred = Promise.withResolvers() + lookup.mockReturnValue(deferred.promise) + const pending = refresh() + ctx.committedChecksContextOwnerRef.current = {} + deferred.resolve({ ...item, checksSummary: summary }) + await pending + expect(ctx.onOwnerUpdated).toHaveBeenCalledTimes(2) + } +) + +it('keeps the supported old-host refresh parameters and row-only publication', async () => { + setLocalRuntimeCapabilitiesForTests([]) + const ctx = context() + await refreshPullRequestChecks(ctx) + expect(lookup).not.toHaveBeenCalled() + expect(ctx.onOwnerUpdated).not.toHaveBeenCalled() + expect(ctx.onChecksUpdated.mock.calls[0][0]).toHaveLength(1) + expect(rows.mock.calls[0][0]).toMatchObject({ prNumber: 42, headSha: 'head', noCache: true }) +}) + +it.each(['page', 'dialog'])('settles %s owner and row failures independently', async (surface) => { + const ctx = context() + const refresh = () => + surface === 'page' ? refreshPullRequestChecks(ctx) : refreshGitHubChecksTab(ctx) + lookup.mockResolvedValue({ ...item, checksSummary: summary }) + rows.mockRejectedValueOnce(new Error('rows failed')) + await refresh() + expect(ctx.onOwnerUpdated.mock.calls[0][0].checksSummary).toEqual(summary) + expect(ctx.onChecksUpdated).not.toHaveBeenCalled() + lookup.mockRejectedValueOnce(new Error('owner failed')) + await refresh() + expect(ctx.onChecksUpdated.mock.calls[0][0]).toHaveLength(1) + expect(ctx.onOwnerUpdated.mock.calls[1][0].checksSummary).toBeUndefined() +}) diff --git a/src/renderer/src/components/pr-check-tab-actions.test.tsx b/src/renderer/src/components/pr-check-tab-actions.test.tsx new file mode 100644 index 00000000000..8ab43594d6d --- /dev/null +++ b/src/renderer/src/components/pr-check-tab-actions.test.tsx @@ -0,0 +1,207 @@ +// @vitest-environment happy-dom +import { useSyncExternalStore } from 'react' +import { act, cleanup, fireEvent, render, screen } from '@testing-library/react' +import { afterEach, beforeEach, expect, it, vi } from 'vitest' +import { setLocalRuntimeCapabilitiesForTests } from '@/runtime/local-runtime-capabilities' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as capability } from '../../../shared/source-control/runtime/source-control-runtime-capabilities' +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' +import type { PRCheckDetail } from '../../../shared/github/check-types' +import { TooltipProvider } from '@/components/ui/tooltip' +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' +import { + patchCachedPRChecks, + subscribeWorkItemDetailsCache, + touchWorkItemDetailsCache, + workItemDetailsCache +} from './github-item-dialog/load-item-details/work-item-details-cache' +import { ChecksTab as PageChecks } from './pull-request-page/checks/tab' +import { ChecksTab as DialogChecks } from './github-item-dialog/inspect-pull-request/checks-tab' + +const { lookup, rows, rerun } = vi.hoisted(() => ({ + lookup: vi.fn(), + rows: vi.fn(), + rerun: vi.fn() +})) +vi.mock('@/store', async () => { + const { getDefaultSettings } = await import('../../../shared/constants') + const state = { + settings: getDefaultSettings('/tmp/pr-check-tab-actions'), + repos: [], + projects: [], + runtimeStatusByEnvironmentId: new Map() + } + return { + useAppStore: Object.assign((select: (state: unknown) => unknown) => select(state), { + getState: () => state + }) + } +}) +vi.mock('sonner', () => ({ toast: { error: vi.fn(), success: vi.fn() } })) +function actions({ + onRefresh, + onRerun +}: { + onRefresh: () => void + onRerun: (failedOnly: boolean) => void +}) { + const refreshAction = + const rerunAction = + return { + refreshAction, + rerunAction, + actions: ( + <> + {refreshAction} + {rerunAction} + + ), + secondaryActions: null, + fixBrokenChecksAction: null + } +} +vi.mock('./pull-request-page/checks/toolbar', async (original) => ({ + ...(await original>()), + buildChecksToolbar: actions +})) +vi.mock('./github-item-dialog/inspect-pull-request/checks-tab-header', async (original) => ({ + ...(await original>()), + ChecksTabActions: actions +})) +const initial: GitHubWorkItem = { + id: 'pr-42', + repoId: 'repo-1', + number: 42, + type: 'pr', + title: 'PR', + state: 'open', + url: 'https://github.com/acme/widgets/pull/42', + labels: [], + author: null, + updatedAt: '2026-11-04', + headSha: 'a'.repeat(40), + prRepo: { owner: 'acme', repo: 'widgets', host: 'github.com' } +} +const failed: PRCheckDetail[] = [ + { name: 'Build', status: 'completed', conclusion: 'failure', url: null } +] +const summary = { + state: 'failure' as const, + total: 1, + passed: 0, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 +} +const cacheKey = 'pr-checks-partial-actions-test' +function Harness({ Tab, parent = initial }: { Tab: typeof PageChecks; parent?: GitHubWorkItem }) { + const checks = useSyncExternalStore( + subscribeWorkItemDetailsCache, + () => workItemDetailsCache.get(cacheKey)?.details?.checks ?? failed + ) + return ( + + patchCachedPRChecks(cacheKey, next)} + /> + + ) +} + +beforeEach(() => { + vi.clearAllMocks() + touchWorkItemDetailsCache(cacheKey, { + details: { item: initial, body: '', comments: [], checks: failed }, + fetchedAt: 0 + }) + lookup.mockResolvedValue({ ...initial, headSha: 'b'.repeat(40), checksSummary: summary }) + rows.mockResolvedValue(failed) + rerun.mockResolvedValue({ ok: true, count: 1 }) + Object.assign(window, { + api: { gh: { prChecks: rows, workItemByOwnerRepo: lookup, rerunPRChecks: rerun } } + }) + setLocalRuntimeCapabilitiesForTests([capability]) +}) +afterEach(() => { + cleanup() + workItemDetailsCache.delete(cacheKey) + setLocalRuntimeCapabilitiesForTests(null) +}) + +it.each([PageChecks, DialogChecks])( + 'reruns the refreshed head while the parent still has the prior head', + async (Tab) => { + render() + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Refresh' })) + }) + expect(rows.mock.calls[0][0]).toMatchObject({ headSha: 'b'.repeat(40) }) + lookup.mockRejectedValueOnce(new Error('owner unavailable')) + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Rerun' })) + }) + expect(rerun.mock.calls[0][0]).toMatchObject({ + prNumber: 42, + headSha: 'b'.repeat(40), + failedOnly: true + }) + expect(rows.mock.calls[1][0]).toMatchObject({ headSha: 'b'.repeat(40) }) + expect(screen.getByText('1 check failing')).toBeTruthy() + } +) + +it.each([PageChecks, DialogChecks])( + 'keeps approval explanation across its cache echo and retires it for a newer owner', + async (Tab) => { + lookup.mockResolvedValue({ ...initial, checksSummary: summary }) + rows.mockResolvedValue([ + { + name: 'Approval', + status: 'completed', + conclusion: 'action_required', + url: null, + observedHeadSha: 'a'.repeat(40) + } + ]) + const view = render() + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Refresh' })) + }) + expect(screen.getByText('1 check needs action')).toBeTruthy() + const newer = acceptPRCheckObservation({ ...initial, checksSummary: { ...summary } }, null, { + scope: 'workspace:local:local', + complete: true, + current: true + })! + view.rerender() + expect(screen.getByText('1 check failing')).toBeTruthy() + } +) + +it.each([PageChecks, DialogChecks])( + 'keeps a mismatched approval head conservative after its cache echo', + async (Tab) => { + lookup.mockResolvedValue({ ...initial, checksSummary: summary }) + rows.mockResolvedValue([ + { + name: 'Approval', + status: 'completed', + conclusion: 'action_required', + url: null, + observedHeadSha: 'b'.repeat(40) + } + ]) + render() + await act(async () => { + fireEvent.click(screen.getByRole('button', { name: 'Refresh' })) + }) + expect(screen.getByText('1 check failing')).toBeTruthy() + expect(screen.getByText('Approval')).toBeTruthy() + } +) diff --git a/src/renderer/src/components/pull-request-page/checks/layouts.tsx b/src/renderer/src/components/pull-request-page/checks/layouts.tsx index 39bd9b35286..e7871e07ec9 100644 --- a/src/renderer/src/components/pull-request-page/checks/layouts.tsx +++ b/src/renderer/src/components/pull-request-page/checks/layouts.tsx @@ -1,13 +1,16 @@ +import type { ProviderCheckSummary } from '../../../../../shared/github/pull-request-types' +import { PRCheckEmptyDetails } from '@/components/pr-check-empty-details' import React from 'react' -import { CircleDashed, LoaderCircle } from 'lucide-react' +import { LoaderCircle } from 'lucide-react' import { cn } from '@/lib/utils' import { CHECK_COLOR } from '@/components/right-sidebar/checks-panel/presentation/check-presentation' import { getCheckCountChips, type getCheckCounts } from '@/components/pr-check-counts' import { getCheckDetailsKey } from '@/components/github/pr-check-presentation' -import { translate } from '@/i18n/i18n' import type { PRCheckDetail } from '../../../../../shared/github/check-types' export function ChecksTabLayouts({ + owner, + summaryPending, loading, listLength, variant, @@ -21,6 +24,8 @@ export function ChecksTabLayouts({ renderCheckRow, fixChecksAgentDialog }: { + owner?: { checksSummary?: ProviderCheckSummary } + summaryPending: boolean loading: boolean listLength: number variant: 'compact' | 'page' @@ -45,37 +50,16 @@ export function ChecksTabLayouts({ ) } if (listLength === 0) { - if (variant === 'page') { - return ( -
-
- -
- - {translate('auto.components.PullRequestPage.45877f5089', 'No checks found')} - - - {translate( - 'auto.components.PullRequestPage.3912daf310', - 'This pull request has no reported checks yet.' - )} - -
- {actions} -
-
- ) - } return ( - <> - {compactHeader} -
- -
- {translate('auto.components.PullRequestPage.a18d01cda3', 'No checks reported yet')} -
-
- + ) } if (variant === 'page') { @@ -85,11 +69,7 @@ export function ChecksTabLayouts({
0 && counts.failing === 0 && 'animate-spin' - )} + className={cn('size-4 shrink-0', summaryColor, summaryPending && 'animate-spin')} />
diff --git a/src/renderer/src/components/pull-request-page/checks/refresh.ts b/src/renderer/src/components/pull-request-page/checks/refresh.ts index 40ea63e9539..d039a2ad6f4 100644 --- a/src/renderer/src/components/pull-request-page/checks/refresh.ts +++ b/src/renderer/src/components/pull-request-page/checks/refresh.ts @@ -1,3 +1,4 @@ +import { readPRCheckRefreshOwner } from '@/lib/pr-check-refresh-owner' import { toast } from 'sonner' import { callRuntimeRpc } from '@/runtime/runtime-rpc-client' import { getGitHubRuntimeRepoId, type GitHubRuntimeHost } from '@/lib/github-source-runtime-context' @@ -35,6 +36,7 @@ export async function refreshPullRequestChecks(args: { headSha: string | undefined prRepo: GitHubOwnerRepo | null mountedRef: { current: boolean } + onOwnerUpdated?: (item: GitHubWorkItem) => void onChecksUpdated: (checks: PRCheckDetail[]) => void }): Promise { if (!args.canUseChecksRepoContext) { @@ -55,6 +57,23 @@ export async function refreshPullRequestChecks(args: { args.activeChecksRefreshRequestIdRef.current = refreshRequestId args.setRefreshingOwner({ contextOwner: refreshContextOwner, requestId: refreshRequestId }) try { + const observation = await readPRCheckRefreshOwner({ + repoPath: args.repoPath, + repoId: args.repoId ?? args.item.repoId, + sourceContext: args.sourceContext, + ownerRepo: args.prRepo, + item: args.item, + accepts: () => + args.mountedRef.current && + args.committedChecksContextOwnerRef.current === refreshContextOwner && + args.activeChecksRefreshRequestIdRef.current === refreshRequestId + }) + if (!observation.current()) { + return null + } + if (observation.owner) { + args.onOwnerUpdated?.(observation.owner) + } const nextChecks = await (args.runtimeHost ? callRuntimeRpc( { kind: 'environment', environmentId: args.runtimeHost.environmentId }, @@ -62,24 +81,25 @@ export async function refreshPullRequestChecks(args: { { repo: getGitHubRuntimeRepoId(args.sourceContext, args.repoId ?? args.item.repoId), prNumber: args.item.number, - headSha: args.headSha, + headSha: observation.owner?.headSha ?? args.headSha, prRepo: args.prRepo, noCache: true }, - { timeoutMs: 30_000 } + { timeoutMs: 30_000, ...observation.rpcOptions } ) : window.api.gh.prChecks({ repoPath: args.repoPath ?? '', repoId: args.repoId ?? undefined, sourceContext: args.sourceContext, prNumber: args.item.number, - headSha: args.headSha, + headSha: observation.owner?.headSha ?? args.headSha, prRepo: args.prRepo, noCache: true, // Refresh and rerun are user acts: they may start a stopped WSL distro. wakeWslDistro: true })) if ( + !observation.current() || !args.mountedRef.current || args.committedChecksContextOwnerRef.current !== refreshContextOwner || args.activeChecksRefreshRequestIdRef.current !== refreshRequestId @@ -88,7 +108,11 @@ export async function refreshPullRequestChecks(args: { } args.setChecksState((current) => current.contextOwner === refreshContextOwner - ? updateGitHubChecksTabLocalChecks(resetGitHubChecksTabForSource(current), nextChecks) + ? updateGitHubChecksTabLocalChecks( + resetGitHubChecksTabForSource(current), + nextChecks, + observation.owner + ) : current ) args.onChecksUpdated(nextChecks) diff --git a/src/renderer/src/components/pull-request-page/checks/tab.tsx b/src/renderer/src/components/pull-request-page/checks/tab.tsx index 31454c118fb..68be8e27224 100644 --- a/src/renderer/src/components/pull-request-page/checks/tab.tsx +++ b/src/renderer/src/components/pull-request-page/checks/tab.tsx @@ -1,3 +1,5 @@ +import { isCompletePRCheckOwner } from '../../../../../shared/github/complete-pr-check-owner' +import { usePRCheckRefreshOwner } from '@/hooks/use-pr-check-refresh-owner' import { getChecksTabSummaryPresentation } from '@/components/github-item-dialog/inspect-pull-request/checks-tab-summary' import React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react' import { useAppStore } from '@/store' @@ -9,7 +11,11 @@ import { type GitHubChecksContextOwner } from '@/components/github-checks-tab-state' import { getCheckDetailsKey } from '@/components/github/pr-check-presentation' -import { getCheckCounts, getChecksSummaryLabel } from '@/components/pr-check-counts' +import { + getCheckCounts, + getOverallCheckCounts, + getChecksSummaryLabel +} from '@/components/pr-check-counts' import { getBrokenChecks } from '../../../../../shared/source-control/checks/pr-checks-fix-prompt' import { sortChecksBySeverity } from '../../../../../shared/source-control/checks/pr-check-severity-order' import { githubRepoIdentityKey } from '../../../../../shared/github/repository-identity-key' @@ -68,6 +74,7 @@ export function ChecksTab({ ) const repos = useAppStore((s) => s.repos) const projects = useAppStore((s) => s.projects) + const { checkOwner, onOwnerUpdated } = usePRCheckRefreshOwner(item, sourceContext) const [fixingChecks, setFixingChecks] = useState(false) const [fixChecksComposerPrompt, setFixChecksComposerPrompt] = useState(null) const mountedRef = useMountedRef() @@ -160,8 +167,17 @@ export function ChecksTab({ const sorted = sortChecksBySeverity(list) const failedChecks = getBrokenChecks(list) const counts = getCheckCounts(list) - const summaryLabel = getChecksSummaryLabel(list) - const { SummaryIcon, summaryColor } = getChecksTabSummaryPresentation(counts) + const overallCounts = getOverallCheckCounts( + list, + checkOwner, + resolvedChecksState.checkObservationOwner + ) + const summaryLabel = getChecksSummaryLabel( + list, + checkOwner, + resolvedChecksState.checkObservationOwner + ) + const { SummaryIcon, summaryColor } = getChecksTabSummaryPresentation(overallCounts) const canFixBrokenChecks = Boolean((repoId ?? item.repoId) && failedChecks.length > 0) const handleRefresh = useCallback( @@ -178,18 +194,19 @@ export function ChecksTab({ sourceContext, repoId, repoPath, - item, - headSha, + item: checkOwner, + headSha: checkOwner.headSha, prRepo, mountedRef, + onOwnerUpdated, onChecksUpdated }), [ canUseChecksRepoContext, - headSha, - item, + checkOwner, mountedRef, onChecksUpdated, + onOwnerUpdated, runtimeHost, prRepo, repoId, @@ -209,8 +226,8 @@ export function ChecksTab({ sourceContext, repoId, repoPath, - item, - headSha, + item: checkOwner, + headSha: checkOwner.headSha, prRepo, failedOnly, mountedRef, @@ -219,8 +236,7 @@ export function ChecksTab({ [ canUseChecksRepoContext, handleRefresh, - headSha, - item, + checkOwner, mountedRef, prRepo, runtimeHost, @@ -305,7 +321,8 @@ export function ChecksTab({ SummaryIcon={SummaryIcon} summaryColor={summaryColor} summaryLabel={summaryLabel} - counts={counts} + counts={overallCounts} + showSummary={isCompletePRCheckOwner(checkOwner)} listLength={list.length} refreshAction={refreshAction} rerunAction={rerunAction} @@ -353,6 +370,8 @@ export function ChecksTab({ summaryColor={summaryColor} summaryLabel={summaryLabel} counts={counts} + summaryPending={overallCounts.pending > 0 && overallCounts.failing === 0} + owner={checkOwner} sorted={sorted} renderCheckRow={renderCheckRow} fixChecksAgentDialog={fixChecksAgentDialog} diff --git a/src/renderer/src/components/pull-request-page/checks/toolbar.tsx b/src/renderer/src/components/pull-request-page/checks/toolbar.tsx index 1a2be861133..2c32f60c3f9 100644 --- a/src/renderer/src/components/pull-request-page/checks/toolbar.tsx +++ b/src/renderer/src/components/pull-request-page/checks/toolbar.tsx @@ -151,6 +151,7 @@ export function ChecksCompactHeader({ summaryLabel, counts, listLength, + showSummary = false, refreshAction, rerunAction, secondaryActions @@ -159,6 +160,7 @@ export function ChecksCompactHeader({ summaryColor: string summaryLabel: string counts: { pending: number; failing: number } + showSummary?: boolean listLength: number refreshAction: React.JSX.Element rerunAction: React.JSX.Element | null @@ -179,7 +181,7 @@ export function ChecksCompactHeader({
{translate('auto.components.PullRequestPage.94d95cf1f7', 'Checks')}
- {listLength > 0 && ( + {(listLength > 0 || showSummary) && (
{summaryLabel}
diff --git a/src/renderer/src/components/right-sidebar/checks-panel/presentation/conflict-summary.tsx b/src/renderer/src/components/right-sidebar/checks-panel/presentation/conflict-summary.tsx index 5d79990c0f7..12d555212be 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/presentation/conflict-summary.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/presentation/conflict-summary.tsx @@ -3,11 +3,13 @@ import { Check, Copy, Files } from 'lucide-react' import { Button } from '@/components/ui/button' import type { PRConflictSummary, + ProviderCheckSummary, PRMergeableState } from '../../../../../../shared/github/pull-request-types' import { translate } from '@/i18n/i18n' export type ConflictReview = { + checksSummary?: ProviderCheckSummary mergeable: PRMergeableState conflictSummary?: PRConflictSummary } diff --git a/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.fixture.tsx b/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.fixture.tsx index cff18f3bff9..34508ccb0f0 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.fixture.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.fixture.tsx @@ -1,3 +1,4 @@ +import { acceptPRCheckObservation } from '../../../../../../shared/github/complete-pr-check-owner' import { defineFixture } from '../../../../component-fixtures/component-fixture' import { PRTriageStrip } from './triage-strip' import { ChecksList } from './checks-list' @@ -48,3 +49,28 @@ export const cancelledChecks = defineFixture({
) }) + +export const unavailableWithFailedRow = defineFixture({ + width: 305, + render: () => ( +
+ {}} + isFixingChecksWithAI={false} + onFixChecksWithAI={() => {}} + /> +
+ ) +}) diff --git a/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.tsx b/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.tsx index af763376166..583dcc22ff7 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/presentation/triage-strip.tsx @@ -1,3 +1,4 @@ +import { isCompletePRCheckOwner } from '../../../../../../shared/github/complete-pr-check-owner' import React from 'react' import { AlertTriangle, @@ -52,14 +53,28 @@ export function PRTriageStrip({ onFixChecksWithAI: () => void fixChecksDisabled?: boolean fixChecksDisabledReason?: string -}): React.JSX.Element { +}): React.JSX.Element | null { const resolvedReview = review ?? pr // Share the pill's classifier so completed checks without conclusions remain unresolved rather than spinning. - const summary = summarizeProviderChecks(checks) - const failingCount = summary.failed - (summary.cancelled ?? 0) - const outcome = getProviderChecksOutcome(summary) + const complete = reviewKind === 'PR' && resolvedReview && isCompletePRCheckOwner(resolvedReview) + const summary = complete ? resolvedReview.checksSummary : summarizeProviderChecks(checks) const brokenCheckCount = getBrokenChecks(checks).length - const pendingCount = summary.pending + if (!summary && brokenCheckCount === 0) { + return resolvedReview?.mergeable === 'CONFLICTING' ? ( + + ) : null + } + const rowSummary = summarizeProviderChecks(checks) + const displaySummary = summary ?? rowSummary + const failingCount = displaySummary.failed - (displaySummary.cancelled ?? 0) + const outcome = getProviderChecksOutcome(displaySummary) + const pendingCount = displaySummary.pending const pipelineFailed = pipelineCheck ? isBrokenCheck(pipelineCheck) : false const conflictStrip = @@ -73,7 +88,11 @@ export function PRTriageStrip({ /> ) : null - if (brokenCheckCount > 0 || pipelineFailed) { + if ( + ((!complete || !summary) && brokenCheckCount > 0) || + (complete && (summary?.failed ?? 0) > 0) || + pipelineFailed + ) { return ( <> {conflictStrip} @@ -91,28 +110,33 @@ export function PRTriageStrip({ />
- {pipelineCheck && pipelineFailed + {!summary ? translate( - 'auto.components.right.sidebar.checks.panel.content.pipelineFailed', - '{{name}} failed', - { name: pipelineCheck.name } + 'auto.components.right.sidebar.ChecksPanel.976cefd02f', + 'Checks unavailable' ) - : outcome === 'cancelled' + : pipelineCheck && pipelineFailed ? translate( - 'auto.components.editor.CheckRunDetailsPanel.91a4c7e2b0', - 'Cancelled' + 'auto.components.right.sidebar.checks.panel.content.pipelineFailed', + '{{name}} failed', + { name: pipelineCheck.name } ) - : outcome === 'pending' + : outcome === 'cancelled' ? translate( - 'auto.components.right.sidebar.checks.panel.content.pendingChecks', - '{{count}} checks pending', - { count: pendingCount, defaultValue_one: '{{count}} check pending' } + 'auto.components.editor.CheckRunDetailsPanel.91a4c7e2b0', + 'Cancelled' ) - : translate( - 'auto.components.right.sidebar.checks.panel.content.failingChecks', - '{{count}} failing checks', - { count: failingCount, defaultValue_one: '{{count}} failing check' } - )} + : outcome === 'pending' + ? translate( + 'auto.components.right.sidebar.checks.panel.content.pendingChecks', + '{{count}} checks pending', + { count: pendingCount, defaultValue_one: '{{count}} check pending' } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.failingChecks', + '{{count}} failing checks', + { count: failingCount, defaultValue_one: '{{count}} failing check' } + )}
{translate( @@ -125,7 +149,11 @@ export function PRTriageStrip({ type="button" variant="outline" size="xs" - disabled={isFixingChecksWithAI || fixChecksDisabled} + disabled={ + isFixingChecksWithAI || + fixChecksDisabled || + (brokenCheckCount === 0 && !pipelineFailed) + } title={fixChecksDisabled ? fixChecksDisabledReason : undefined} onClick={onFixChecksWithAI} > @@ -177,7 +205,7 @@ export function PRTriageStrip({ } // An all-unresolved list must match the grey pill, not show a green tick. - if (summary.state === 'neutral') { + if (displaySummary.state === 'neutral') { return (
@@ -187,7 +215,7 @@ export function PRTriageStrip({ {translate( 'auto.components.right.sidebar.checks.panel.content.unresolvedChecks', '{{count}} checks unresolved', - { count: summary.neutral, defaultValue_one: '{{count}} check unresolved' } + { count: displaySummary.neutral, defaultValue_one: '{{count}} check unresolved' } )}
diff --git a/src/renderer/src/components/task-page/github/pr-check-hydration.test.tsx b/src/renderer/src/components/task-page/github/pr-check-hydration.test.tsx new file mode 100644 index 00000000000..ec190aea4e8 --- /dev/null +++ b/src/renderer/src/components/task-page/github/pr-check-hydration.test.tsx @@ -0,0 +1,317 @@ +import { createCompatibleRuntimeStatusResponse } from '@/runtime/runtime-compatibility-test-fixture' +import { useAppStore } from '@/store' +import { StrictMode, Suspense, startTransition, useState } from 'react' +// @vitest-environment happy-dom +import { act, cleanup, render, renderHook, screen } from '@testing-library/react' +import { afterEach, beforeEach, expect, it, vi } from 'vitest' +import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' +import type { TaskPageJiraCreationMetadataModel } from '../jira/use-task-page-jira-creation-metadata' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as capability } from '../../../../../shared/source-control/runtime/source-control-runtime-capabilities' +import { setLocalRuntimeCapabilitiesForTests } from '@/runtime/local-runtime-capabilities' +import { useTaskPageGitHubListProjection } from './use-task-page-github-list-projection' + +const { lookup } = vi.hoisted(() => ({ lookup: vi.fn() })) +vi.mock('@/store', async () => { + const { create } = await import('zustand') + return { useAppStore: create(() => ({ runtimeStatusByEnvironmentId: new Map() })) } +}) +vi.mock('@/hooks/useGitHubTaskItems', () => ({ + useGitHubTaskItems: (items: GitHubWorkItem[]) => items +})) +vi.mock('./use-task-page-github-list-pending', () => ({ + useTaskPageGitHubListPending: () => false +})) +vi.mock('@/lib/github-work-item-source-lookup', () => ({ + lookupGitHubWorkItemByOwnerRepoForSource: lookup +})) +const repo = { + id: 'repo-1', + path: '/repo', + displayName: 'Repo', + badgeColor: '', + addedAt: 1, + kind: 'git' as const +} +const prRepo = { owner: 'acme', repo: 'widgets', host: 'github.com' } +function item(number: number): GitHubWorkItem { + return { + id: `pr-${number}`, + repoId: repo.id, + number, + type: 'pr', + title: 'PR', + state: 'open', + url: `https://github.com/acme/widgets/pull/${number}`, + labels: [], + author: null, + updatedAt: '2026-11-04', + headSha: 'head', + prRepo + } +} +function model(items: GitHubWorkItem[], patch = vi.fn()) { + const input = { + repos: [repo], + selectedRepos: [repo], + fetchPRChecks: vi.fn().mockResolvedValue([]), + taskSource: 'github', + githubMode: 'items', + tasksFiltering: false, + githubPageSize: 100, + pages: [items], + currentPage: 0, + countedTotalPages: 1, + provenPageLimit: 1, + patchTaskPageWorkItemRows: patch, + perRepoSourceState: [], + activeGithubTaskKind: 'prs', + githubWorkItemMutation: { softHiddenItemKeys: new Set() }, + selectedReposKey: 'repo', + taskRefreshNonce: 0, + workItemsInvalidationNonce: 0, + appliedTaskSearch: '', + paginationGenerationRef: { current: 1 } + } + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the fixture supplies all fields the projection hook reads. + return input as unknown as TaskPageJiraCreationMetadataModel +} +beforeEach(() => { + lookup.mockReset() + setLocalRuntimeCapabilitiesForTests([capability]) +}) +afterEach(() => { + cleanup() + setLocalRuntimeCapabilitiesForTests(null) +}) + +it.each([100, 1000])( + 'bounds automatic exact hydration at N=%i and coalesces demand while failures terminate', + async (n) => { + const items = Array.from({ length: n }, (_, i) => item(i + 1)) + const input = model(items) + lookup.mockResolvedValue(null) + const view = renderHook(() => useTaskPageGitHubListProjection(input)) + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(20) + act(() => { + view.result.current.ensurePRChecksLoaded(items[20]) + view.result.current.ensurePRChecksLoaded(items[20]) + }) + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(21) + view.rerender() + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(21) + expect(input.fetchPRChecks).not.toHaveBeenCalled() + } +) + +it('publishes exact-owner counts, rejects a newer owner replacement, and retires source changes', async () => { + const row = item(42) + let current = row + const patch = vi.fn((_key, values, accepts: (item: GitHubWorkItem) => boolean) => { + if (accepts(current)) { + current = { ...current, ...values } + } + }) + const input = model([row], patch) + const read = Promise.withResolvers() + lookup.mockReturnValue(read.promise) + const view = renderHook(() => useTaskPageGitHubListProjection(input)) + const summary = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 + } + await act(async () => { + read.resolve({ ...row, checksSummary: summary }) + await read.promise + }) + expect(current.checksSummary).toEqual(summary) + // A late hydration read cannot replace a newer full observation on the same head. + input.taskRefreshNonce++ + input.paginationGenerationRef.current++ + const second = Promise.withResolvers() + lookup.mockReturnValue(second.promise) + view.rerender() + current = { ...row, checksSummary: { ...summary, failed: 2, total: 102 } } + await act(async () => { + second.resolve({ ...row, checksSummary: summary }) + await second.promise + }) + expect(current.checksSummary?.failed).toBe(2) + const third = Promise.withResolvers() + lookup.mockReturnValue(third.promise) + input.taskRefreshNonce++ + view.rerender() + view.unmount() + const previousCalls = patch.mock.calls.length + await act(async () => { + third.resolve({ ...row, checksSummary: summary }) + await third.promise + }) + expect(patch.mock.calls.length).toBe(previousCalls) +}) + +it('does not rerender or rearm failed demand on unrelated host writes or capacity pressure; explicit refresh retries', async () => { + const input = model(Array.from({ length: 200 }, (_, i) => item(i + 1))) + lookup.mockResolvedValue(null) + let renders = 0 + const view = renderHook(() => { + renders++ + return useTaskPageGitHubListProjection(input) + }) + await act(async () => {}) + act(() => { + for (const row of input.pages[0] ?? []) { + view.result.current.ensurePRChecksLoaded(row) + } + }) + await act(async () => {}) + const calls = lookup.mock.calls.length + const before = renders + act(() => useAppStore.setState({ runtimeStatusByEnvironmentId: new Map() })) + await act(async () => {}) + expect(renders).toBe(before) + view.rerender() + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(calls) + input.taskRefreshNonce++ + view.rerender() + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(calls + 20) +}) + +it('ignores an unselected remote source change and hydrates again when the selected source changes', async () => { + const selectedRepo = { ...repo, executionHostId: 'runtime:host-a' as const } + const unselectedRepo = { ...repo, id: 'repo-b', executionHostId: 'runtime:host-b' as const } + const setStatus = (host: string, runtimeId: string) => { + const response = createCompatibleRuntimeStatusResponse(runtimeId) + if (!response.ok) { + throw new Error('Expected a runtime status') + } + const statuses = new Map(useAppStore.getState().runtimeStatusByEnvironmentId) + statuses.set(host, { status: { ...response.result, capabilities: [capability] }, checkedAt: 1 }) + useAppStore.setState({ runtimeStatusByEnvironmentId: statuses }) + } + setStatus('host-a', 'a1') + setStatus('host-b', 'b1') + const input = model([item(42)]) + input.repos = [selectedRepo, unselectedRepo] + input.selectedRepos = [selectedRepo] + lookup.mockResolvedValue(null) + let renders = 0 + renderHook(() => { + renders++ + return useTaskPageGitHubListProjection(input) + }) + await act(async () => {}) + expect(lookup).toHaveBeenCalledTimes(1) + const before = renders + act(() => setStatus('host-b', 'b2')) + await act(async () => {}) + expect(renders).toBe(before) + expect(lookup).toHaveBeenCalledTimes(1) + act(() => setLocalRuntimeCapabilitiesForTests([])) + await act(async () => {}) + expect(renders).toBe(before) + act(() => setStatus('host-a', 'a2')) + await act(async () => {}) + expect(renders).toBeGreaterThan(before) + expect(lookup).toHaveBeenCalledTimes(2) +}) + +it('publishes one committed demand read through StrictMode effect replay', async () => { + const row = item(42) + let current = row + const patch = vi.fn((_key, values, accepts: (item: GitHubWorkItem) => boolean) => { + if (accepts(current)) { + current = { ...current, ...values } + } + }) + const pending = Promise.withResolvers() + const summary = { + state: 'failure' as const, + total: 1, + passed: 0, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 + } + lookup.mockReturnValue(pending.promise) + const input = model([row], patch) + renderHook(() => useTaskPageGitHubListProjection(input), { wrapper: StrictMode }) + await act(async () => {}) + expect(lookup).toHaveBeenCalledOnce() + await act(async () => { + pending.resolve({ ...row, checksSummary: summary }) + await pending.promise + }) + expect(current.checksSummary).toEqual(summary) +}) + +it.each([true, false])( + 'only a committed query replacement retires a pending read (suspend=%s)', + async (suspend) => { + const row = item(42) + let current = row + const patch = vi.fn((_key, values, accepts: (item: GitHubWorkItem) => boolean) => { + if (accepts(current)) { + current = { ...current, ...values } + } + }) + const original = Promise.withResolvers() + const replacement = Promise.withResolvers() + const blocked = Promise.withResolvers() + const summary = { + state: 'failure' as const, + total: 1, + passed: 0, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 + } + lookup.mockReturnValueOnce(original.promise).mockReturnValueOnce(replacement.promise) + const first = model([row], patch) + const second = { ...first, appliedTaskSearch: 'replacement' } + let navigate!: (next: boolean) => void + function Consumer({ next }: { next: boolean }) { + useTaskPageGitHubListProjection(next ? second : first) + if (next && suspend) { + throw blocked.promise + } + return {next ? 'Replacement query' : 'Original query'} + } + function Harness() { + const [next, setNext] = useState(false) + navigate = setNext + return ( + Waiting}> + + + ) + } + const view = render() + await act(async () => { + startTransition(() => navigate(true)) + }) + expect(screen.getByText(suspend ? 'Original query' : 'Replacement query')).toBeTruthy() + await act(async () => { + original.resolve({ ...row, checksSummary: summary }) + await original.promise + }) + expect(current.checksSummary).toEqual(suspend ? summary : undefined) + view.unmount() + await act(async () => { + replacement.resolve({ ...row, checksSummary: summary }) + blocked.resolve() + await replacement.promise + }) + } +) diff --git a/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-composition.ts b/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-composition.ts index 5af20ebac0a..b7959c43147 100644 --- a/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-composition.ts +++ b/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-composition.ts @@ -1,3 +1,4 @@ +import { projectPRCheckOwner } from '../../../../../shared/github/complete-pr-check-owner' import type { ParsedTaskQuery } from '../../../../../shared/task-query' import type { GitHubAssignableUser } from '../../../../../shared/github/pull-request-types' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' @@ -143,7 +144,7 @@ export function getRegistryMergedTaskPageGitHubWorkItem( : { ...merged, reviewRequests: composed } } - return merged + return projectPRCheckOwner(item, merged) } export function recomputeSoftHideForItem(args: { diff --git a/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-pages.ts b/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-pages.ts index 79318d6a2c1..5097c3dd769 100644 --- a/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-pages.ts +++ b/src/renderer/src/components/task-page/github/task-page-github-work-item-mutation-pages.ts @@ -1,3 +1,4 @@ +import { projectPRCheckOwner } from '../../../../../shared/github/complete-pr-check-owner' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' import type { TaskSourceContext } from '../../../../../shared/task-source-context' import { parseGitHubIssueOrPRLink } from '../../../../../shared/github/links' @@ -32,7 +33,10 @@ export function patchTaskPageGitHubWorkItemPages( return } nextPage ??= page.slice() - nextPage[itemIndex] = { ...item, ...patch } + nextPage[itemIndex] = projectPRCheckOwner( + patch, + projectPRCheckOwner(item, { ...item, ...patch }) + ) }) if (nextPage) { nextPages ??= pages.slice() diff --git a/src/renderer/src/components/task-page/github/use-task-page-github-list-projection.ts b/src/renderer/src/components/task-page/github/use-task-page-github-list-projection.ts index e5d1aacc5e4..7ac4498f932 100644 --- a/src/renderer/src/components/task-page/github/use-task-page-github-list-projection.ts +++ b/src/renderer/src/components/task-page/github/use-task-page-github-list-projection.ts @@ -1,32 +1,20 @@ +import { useCallback, useMemo } from 'react' import { useGitHubTaskItems } from '@/hooks/useGitHubTaskItems' import type { TaskPageJiraCreationMetadataModel } from '../jira/use-task-page-jira-creation-metadata' -import { getWorkItemRepo } from '@/lib/work-item-repo-row' -import { useCallback, useMemo, useEffect } from 'react' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' import { taskPageGitHubItemKey } from '@/components/task-page/github/task-page-github-work-item-mutation-keys' -import { deriveTaskPagePRCheckSummary } from '../task-page-pr-check-summary' import { deriveAdvertisedTotalPages } from '../../../../../shared/work-item-empty-page' -import { - GITHUB_PR_TASK_GRID_CLASS, - GITHUB_TASK_GRID_CLASS, - PR_CHECKS_EAGER_PREFETCH_LIMIT -} from '../task-page-source-context' -import { getTaskPageRepoSourceContext } from '../../../lib/task-repo-source-context' -import { sameOptionalGitHubOwnerRepo } from './task-page-github-review-model' +import { GITHUB_PR_TASK_GRID_CLASS, GITHUB_TASK_GRID_CLASS } from '../task-page-source-context' import { useTaskPageGitHubListPending } from './use-task-page-github-list-pending' +import { useTaskPagePRCheckHydration } from './use-task-page-pr-check-hydration' export function useTaskPageGitHubListProjection(model: TaskPageJiraCreationMetadataModel) { const { - repos, - fetchPRChecks, - taskSource, - githubMode, tasksFiltering, githubPageSize, pages, currentPage, countedTotalPages, provenPageLimit, - patchTaskPageWorkItemRows, perRepoSourceState, activeGithubTaskKind, githubWorkItemMutation @@ -101,56 +89,11 @@ export function useTaskPageGitHubListProjection(model: TaskPageJiraCreationMetad const githubTaskGridClass = showPRManagementColumns ? GITHUB_PR_TASK_GRID_CLASS : GITHUB_TASK_GRID_CLASS - const ensurePRChecksLoaded = useCallback( - (item: GitHubWorkItem): void => { - if (item.type !== 'pr' || item.checksSummary) { - return - } - const repo = getWorkItemRepo(repos, item) - if (!repo) { - return - } - const requestedHeadSha = item.headSha - const requestedPRRepo = item.prRepo ?? null - void fetchPRChecks( - repo.path, - item.number, - item.branchName, - item.headSha, - item.prRepo ?? null, - { - repoId: repo.id, - sourceContext: getTaskPageRepoSourceContext(repo, 'github') - } - ).then((checks) => { - const checksSummary = deriveTaskPagePRCheckSummary(checks) - patchTaskPageWorkItemRows( - { - id: item.id, - repoId: item.repoId - }, - { - checksSummary - }, - (currentItem) => - currentItem.type === 'pr' && - currentItem.headSha === requestedHeadSha && - sameOptionalGitHubOwnerRepo(currentItem.prRepo, requestedPRRepo) && - (currentItem.checksSummary?.cancelled === undefined || - currentItem.checksSummary.state !== checksSummary.state) - ) - }) - }, - [fetchPRChecks, patchTaskPageWorkItemRows, repos] + const ensurePRChecksLoaded = useTaskPagePRCheckHydration( + model, + filteredWorkItems, + showPRManagementColumns ) - useEffect(() => { - if (taskSource !== 'github' || githubMode !== 'items' || !showPRManagementColumns) { - return - } - for (const item of filteredWorkItems.slice(0, PR_CHECKS_EAGER_PREFETCH_LIMIT)) { - ensurePRChecksLoaded(item) - } - }, [ensurePRChecksLoaded, filteredWorkItems, githubMode, showPRManagementColumns, taskSource]) let lastLoadedPageIndex = 0 for (let index = 0; index < pages.length; index += 1) { if (pages[index] !== null) { diff --git a/src/renderer/src/components/task-page/github/use-task-page-pr-check-hydration.ts b/src/renderer/src/components/task-page/github/use-task-page-pr-check-hydration.ts new file mode 100644 index 00000000000..ecec0f478e4 --- /dev/null +++ b/src/renderer/src/components/task-page/github/use-task-page-pr-check-hydration.ts @@ -0,0 +1,220 @@ +import { + useCallback, + useEffect, + useLayoutEffect, + useMemo, + useRef, + useSyncExternalStore +} from 'react' +import { + readLocalRuntimeCapabilityObservation, + subscribeLocalRuntimeCapabilityObservation +} from '@/runtime/local-runtime-capabilities' +import { useAppStore } from '@/store' +import { capturePRCheckContract, type PRCheckContract } from '@/lib/pr-check-observation-contract' +import { getGitHubSourceRuntimeTarget } from '@/lib/github-source-runtime-context' +import { lookupGitHubWorkItemByOwnerRepoForSource } from '@/lib/github-work-item-source-lookup' +import { resolvePullRequestRepo } from '@/components/github/github-work-item-identity' +import { + acceptPRCheckObservation, + projectPRCheckOwner, + completePRCheckOwnerScope +} from '../../../../../shared/github/complete-pr-check-owner' +import { getWorkItemRepo } from '@/lib/work-item-repo-row' +import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' +import type { TaskPageJiraCreationMetadataModel } from '../jira/use-task-page-jira-creation-metadata' +import { deriveTaskPagePRCheckSummary } from '../task-page-pr-check-summary' +import { PR_CHECKS_EAGER_PREFETCH_LIMIT } from '../task-page-source-context' +import { getTaskPageRepoSourceContext } from '../../../lib/task-repo-source-context' +import { sameOptionalGitHubOwnerRepo } from './task-page-github-review-model' +export function useTaskPagePRCheckHydration( + model: TaskPageJiraCreationMetadataModel, + filteredWorkItems: GitHubWorkItem[], + showPRManagementColumns: boolean +) { + const { repos, fetchPRChecks, taskSource, githubMode, patchTaskPageWorkItemRows } = model + const sourceContracts = useMemo( + () => + model.selectedRepos.map((repo) => { + const source = getTaskPageRepoSourceContext(repo, 'github') + return { source, target: getGitHubSourceRuntimeTarget(source) } + }), + [model.selectedRepos] + ) + const localSelected = sourceContracts.some(({ target }) => target.kind === 'local') + const localCapabilities = useSyncExternalStore( + subscribeLocalRuntimeCapabilityObservation, + useCallback( + () => (localSelected ? readLocalRuntimeCapabilityObservation() : null), + [localSelected] + ) + ) + const runtimeStatuses = useAppStore((state) => + sourceContracts + .map(({ source, target }) => { + const contract = capturePRCheckContract(() => state, target, source) + return `${contract.scope}:${contract.complete}` + }) + .join('|') + ) + const checkReads = useMemo(() => { + // A new list query owns its own bounded demand reads. + void model.selectedReposKey + void model.taskRefreshNonce + void model.workItemsInvalidationNonce + void model.appliedTaskSearch + return new Map() + }, [ + model.selectedReposKey, + model.taskRefreshNonce, + model.workItemsInvalidationNonce, + model.appliedTaskSearch + ]) + const activeCheckReads = useRef(null) + useLayoutEffect(() => { + activeCheckReads.current = checkReads + return () => { + if (activeCheckReads.current === checkReads) { + activeCheckReads.current = null + } + } + }, [checkReads]) + const ensurePRChecksLoaded = useCallback( + (item: GitHubWorkItem): void => { + if (item.type !== 'pr') { + return + } + // Capability observations wake the existing demand trigger without adding per-row subscriptions. + void localCapabilities + void runtimeStatuses + const repo = getWorkItemRepo(repos, item) + if (!repo) { + return + } + const sourceContext = getTaskPageRepoSourceContext(repo, 'github') + const runtimeContract = capturePRCheckContract( + useAppStore.getState, + getGitHubSourceRuntimeTarget(sourceContext), + sourceContext + ) + const generation = model.paginationGenerationRef.current + const contract = { + ...runtimeContract, + current: () => + runtimeContract.current() && + activeCheckReads.current === checkReads && + model.paginationGenerationRef.current === generation + } + if ( + item.checksSummary && + (!contract.complete || completePRCheckOwnerScope(item) === contract.scope) + ) { + return + } + const readKey = JSON.stringify([ + item.repoId, + item.id, + item.headSha, + sourceContext, + contract.complete + ]) + if (checkReads.get(readKey)?.current()) { + return + } + checkReads.set(readKey, contract) + // The query's loaded/demanded rows bound attempts; eviction must not re-arm failed eager reads. + const requestedHeadSha = item.headSha + const requestedPRRepo = item.prRepo ?? null + const owner = resolvePullRequestRepo(item) + const read = + contract.complete && owner + ? lookupGitHubWorkItemByOwnerRepoForSource({ + repoPath: repo.path, + repoId: repo.id, + sourceContext, + ...owner, + number: item.number, + type: 'pr', + accepts: contract.current, + checkContract: runtimeContract + }) + : fetchPRChecks( + repo.path, + item.number, + item.branchName, + item.headSha, + item.prRepo ?? null, + { + repoId: repo.id, + sourceContext + } + ) + void read + .then((result) => { + if (!contract.current()) { + return + } + const observed = Array.isArray(result) ? null : result + if ( + contract.complete && + (!observed || + observed.headSha !== requestedHeadSha || + !sameOptionalGitHubOwnerRepo(observed.prRepo ?? null, requestedPRRepo)) + ) { + return + } + const checksSummary = Array.isArray(result) + ? deriveTaskPagePRCheckSummary(result) + : observed?.checksSummary + if (!checksSummary && !contract.complete) { + return + } + const accepted = + observed && + acceptPRCheckObservation(observed, item, { ...contract, current: contract.current() }) + patchTaskPageWorkItemRows( + { + id: item.id, + repoId: item.repoId + }, + contract.complete && accepted + ? projectPRCheckOwner(accepted, { + checksSummary: accepted.checksSummary, + number: item.number, + url: item.url, + prRepo: item.prRepo, + headSha: item.headSha + }) + : { checksSummary }, + (currentItem) => + currentItem.type === 'pr' && + (!contract.complete || currentItem.checksSummary === item.checksSummary) && + currentItem.headSha === requestedHeadSha && + sameOptionalGitHubOwnerRepo(currentItem.prRepo, requestedPRRepo) && + (currentItem.checksSummary?.cancelled === undefined || + currentItem.checksSummary.state !== checksSummary?.state || + contract.complete) + ) + }) + .catch(() => {}) + }, + [ + localCapabilities, + runtimeStatuses, + checkReads, + fetchPRChecks, + model.paginationGenerationRef, + patchTaskPageWorkItemRows, + repos + ] + ) + useEffect(() => { + if (taskSource !== 'github' || githubMode !== 'items' || !showPRManagementColumns) { + return + } + for (const item of filteredWorkItems.slice(0, PR_CHECKS_EAGER_PREFETCH_LIMIT)) { + ensurePRChecksLoaded(item) + } + }, [ensurePRChecksLoaded, filteredWorkItems, githubMode, showPRManagementColumns, taskSource]) + return ensurePRChecksLoaded +} diff --git a/src/renderer/src/hooks/use-pr-check-refresh-owner.test.ts b/src/renderer/src/hooks/use-pr-check-refresh-owner.test.ts new file mode 100644 index 00000000000..793bcab7dc5 --- /dev/null +++ b/src/renderer/src/hooks/use-pr-check-refresh-owner.test.ts @@ -0,0 +1,76 @@ +// @vitest-environment happy-dom +import { act, cleanup, renderHook } from '@testing-library/react' +import { afterEach, expect, it } from 'vitest' +import { usePRCheckRefreshOwner } from './use-pr-check-refresh-owner' +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' +afterEach(cleanup) +const item: GitHubWorkItem = { + id: 'pr42', + repoId: 'repo', + number: 42, + type: 'pr', + url: 'https://github.com/acme/widgets/pull/42', + title: 'PR', + state: 'open', + headSha: 'h1', + updatedAt: '', + labels: [], + author: null +} +const summary = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + pending: 0, + neutral: 0 +} +const context = { scope: 'source:r1', complete: true, current: true } +it('retains a refreshed head across parent allocation and sequential refresh, then honors a newer parent observation', () => { + const view = renderHook(({ parent }) => usePRCheckRefreshOwner(parent), { + initialProps: { parent: item } + }) + act(() => + view.result.current.onOwnerUpdated( + acceptPRCheckObservation({ ...item, headSha: 'h2', checksSummary: summary }, null, context)! + ) + ) + view.rerender({ parent: { ...item } }) + expect(view.result.current.checkOwner.headSha).toBe('h2') + act(() => + view.result.current.onOwnerUpdated( + acceptPRCheckObservation( + { ...view.result.current.checkOwner, checksSummary: undefined }, + null, + context + )! + ) + ) + expect(view.result.current.checkOwner.checksSummary).toEqual(summary) + const newer = acceptPRCheckObservation( + { + ...item, + headSha: 'h2', + checksSummary: { ...summary, state: 'success', failed: 0, passed: 101 } + }, + null, + context + )! + view.rerender({ parent: newer }) + expect(view.result.current.checkOwner.checksSummary?.state).toBe('success') +}) +it('does not reuse last-good after the producing runtime changes', () => { + const view = renderHook(() => usePRCheckRefreshOwner(item)) + act(() => + view.result.current.onOwnerUpdated( + acceptPRCheckObservation({ ...item, checksSummary: summary }, null, context)! + ) + ) + act(() => + view.result.current.onOwnerUpdated( + acceptPRCheckObservation(item, null, { ...context, scope: 'source:r2' })! + ) + ) + expect(view.result.current.checkOwner.checksSummary).toBeUndefined() +}) diff --git a/src/renderer/src/hooks/use-pr-check-refresh-owner.ts b/src/renderer/src/hooks/use-pr-check-refresh-owner.ts new file mode 100644 index 00000000000..9a73e8dd191 --- /dev/null +++ b/src/renderer/src/hooks/use-pr-check-refresh-owner.ts @@ -0,0 +1,62 @@ +import { useCallback, useState } from 'react' +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' +import type { TaskSourceContext } from '../../../shared/task-source-context' +import { getTaskSourceCacheScope } from '../../../shared/task-source-context' +import { + acceptPRCheckObservation, + completePRCheckOwnerScope, + projectPRCheckOwner, + samePRCheckObservation +} from '../../../shared/github/complete-pr-check-owner' + +export function usePRCheckRefreshOwner(item: GitHubWorkItem, source?: TaskSourceContext | null) { + const sourceKey = source ? getTaskSourceCacheScope(source) : 'local' + const [refreshed, setRefreshed] = useState<{ + base: GitHubWorkItem + owner: GitHubWorkItem + sourceKey: string + } | null>(null) + const onOwnerUpdated = useCallback( + (owner: GitHubWorkItem) => { + const scope = completePRCheckOwnerScope(owner) + if (!scope) { + return + } + setRefreshed((previous) => ({ + base: item, + sourceKey, + owner: acceptPRCheckObservation( + owner, + previous?.sourceKey === sourceKey ? previous.owner : item, + { scope, complete: true, current: true } + )! + })) + }, + [item, sourceKey] + ) + const sameTarget = + refreshed && item.number === refreshed.base.number && item.url === refreshed.base.url + const parentHeadChanged = refreshed && item.headSha !== refreshed.base.headSha + const projected = + refreshed && + projectPRCheckOwner(refreshed.owner, { + ...item, + headSha: refreshed.owner.headSha, + checksSummary: refreshed.owner.checksSummary + }) + const parentSuperseded = + completePRCheckOwnerScope(item) !== undefined && + refreshed && + !samePRCheckObservation(item, refreshed.base) && + !samePRCheckObservation(item, refreshed.owner) + const checkOwner = + refreshed?.sourceKey === sourceKey && + sameTarget && + !parentHeadChanged && + projected && + completePRCheckOwnerScope(projected) && + !parentSuperseded + ? projected + : item + return { checkOwner, onOwnerUpdated } +} diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index f6bf1a1bb27..1f2466784bf 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -19255,6 +19255,7 @@ "promptCopyFailed": "Failed to copy prompt" }, "prCheckCounts": { + "noCheckDetails": "No check details available", "noChecksFound": "No checks found", "checksFailing_one": "{{count}} check failing", "checksFailing_other": "{{count}} checks failing", diff --git a/src/renderer/src/lib/github-work-item-source-lookup.test.ts b/src/renderer/src/lib/github-work-item-source-lookup.test.ts index 260b2bf1437..ddd4ce5df89 100644 --- a/src/renderer/src/lib/github-work-item-source-lookup.test.ts +++ b/src/renderer/src/lib/github-work-item-source-lookup.test.ts @@ -4,12 +4,16 @@ import { GITHUB_CANONICAL_DETAILS_RUNTIME_CAPABILITY, GITHUB_EXACT_DETAILS_READ_INTENT_RUNTIME_CAPABILITY } from '../../../shared/task-source-runtime-capabilities' -import { GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY } from '../../../shared/source-control/runtime/source-control-runtime-capabilities' +import { + GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY, + GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as complete +} from '../../../shared/source-control/runtime/source-control-runtime-capabilities' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { callRuntimeRpc } from '@/runtime/runtime-rpc-client' import type * as RuntimeRpcClient from '@/runtime/runtime-rpc-client' import { lookupGitHubWorkItemDetailsForSource, + lookupGitHubWorkItemForSource, lookupGitHubWorkItemByOwnerRepoForSource } from './github-work-item-source-lookup' import { replaceRuntimeEnvironmentRevisions } from '@/runtime/runtime-environment-revision' @@ -19,6 +23,17 @@ import { } from '@/store/slices/runtime-status-connection-generation' import type { GitHubWorkItemDetails } from '../../../shared/github/work-item-types' import type { TaskSourceContext } from '../../../shared/task-source-context' +import { useAppStore } from '@/store' +import { createCompatibleRuntimeStatusResponse } from '@/runtime/runtime-compatibility-test-fixture' +import { setLocalRuntimeCapabilitiesForTests } from '@/runtime/local-runtime-capabilities' +import { capturePRCheckContract } from './pr-check-observation-contract' +import { isCompletePRCheckOwner } from '../../../shared/github/complete-pr-check-owner' +import { lookupCmdJGitHubUrlWorkItem } from './cmd-j-github-url-lookup' + +vi.mock('@/store', async () => { + const { create } = await import('zustand') + return { useAppStore: create(() => ({ repos: [], runtimeStatusByEnvironmentId: new Map() })) } +}) vi.mock('@/runtime/runtime-rpc-client', async () => { const actual = await vi.importActual('@/runtime/runtime-rpc-client') @@ -42,10 +57,13 @@ describe('GitHub source lookup routing', () => { replaceRuntimeEnvironmentRevisions([{ id: 'env-1', createdAt: 100, pairingRevision: 701 }]) setRuntimeEnvironmentConnectionGenerationForTests('env-1', 4) vi.mocked(callRuntimeRpc).mockReset() + useAppStore.setState({ runtimeStatusByEnvironmentId: new Map() }) + setLocalRuntimeCapabilitiesForTests(null) vi.stubGlobal('window', { api: { gh: { workItemDetails: vi.fn(), + workItem: vi.fn(), workItemByOwnerRepo: vi.fn().mockResolvedValue(null) } } @@ -56,6 +74,7 @@ describe('GitHub source lookup routing', () => { replaceRuntimeEnvironmentRevisions([]) clearRuntimeEnvironmentConnectionGenerations() vi.unstubAllGlobals() + setLocalRuntimeCapabilitiesForTests(null) }) it.each(['local', 'ssh:build-box'] as const)( @@ -399,3 +418,175 @@ describe('GitHub source lookup routing', () => { ]) }) }) + +const foundPR = { + id: 'pr:42', + number: 42, + type: 'pr' as const, + title: 'Found PR', + url: 'https://github.com/acme/orca/pull/42', + labels: [], + author: null, + state: 'open' as const, + updatedAt: '', + headSha: 'a'.repeat(40), + prRepo: { owner: 'acme', repo: 'orca', host: 'github.com' }, + checksSummary: { + state: 'failure' as const, + total: 1, + passed: 0, + failed: 1, + pending: 0, + neutral: 0 + } +} +function setLookupHost(runtimeId: string, capabilities: string[]) { + const response = createCompatibleRuntimeStatusResponse(runtimeId) + useAppStore.setState({ + runtimeStatusByEnvironmentId: new Map([ + ['env-1', { status: { ...response.result, capabilities }, checkedAt: 1 }] + ]) + }) +} + +describe('PR metadata and complete checks admission', () => { + beforeEach(() => { + replaceRuntimeEnvironmentRevisions([{ id: 'env-1', createdAt: 100, pairingRevision: 701 }]) + setRuntimeEnvironmentConnectionGenerationForTests('env-1', 4) + useAppStore.setState({ runtimeStatusByEnvironmentId: new Map() }) + vi.mocked(callRuntimeRpc).mockReset() + vi.stubGlobal('window', { api: { gh: { workItemByOwnerRepo: vi.fn() } } }) + }) + afterEach(() => { + replaceRuntimeEnvironmentRevisions([]) + clearRuntimeEnvironmentConnectionGenerations() + setLocalRuntimeCapabilitiesForTests(null) + vi.unstubAllGlobals() + }) + + it.each(['ordinary', 'exact-preview', 'details'] as const)( + 'returns useful unproved %s metadata across discovery at beforeSend', + async (kind) => { + const dispatched: string[] = [] + vi.mocked(callRuntimeRpc).mockImplementation(async (_target, method, _params, options) => { + // The target probe and queued transport both invoke the composed caller admission. + setLookupHost('newly-discovered', [ + complete, + GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY + ]) + options?.beforeSend?.() + dispatched.push(method) + return method === 'status.get' + ? createCompatibleRuntimeStatusResponse('newly-discovered').result + : kind === 'details' + ? { item: foundPR, body: 'Provider body', comments: [] } + : foundPR + }) + const args = { + repoPath: '/repo', + repoId: 'renderer-repo', + sourceContext: runtimeSourceContext, + number: 42, + type: 'pr' as const + } + const result = + kind === 'ordinary' + ? await lookupGitHubWorkItemForSource(args) + : kind === 'exact-preview' + ? await lookupGitHubWorkItemByOwnerRepoForSource({ + ...args, + owner: 'acme', + repo: 'orca', + preview: true + }) + : await lookupGitHubWorkItemDetailsForSource({ ...args, ownerRepo: foundPR.prRepo }) + const item = result && 'item' in result ? result.item : result + expect(item).toMatchObject({ number: 42, title: 'Found PR' }) + expect(item && isCompletePRCheckOwner(item)).toBe(false) + if (kind === 'details') { + expect(result).toMatchObject({ body: 'Provider body' }) + expect(dispatched).toEqual(['status.get', 'github.workItemDetails']) + } + } + ) + + it('keeps a pasted Cmd-J PR link when local capability arrives while the lookup is pending', async () => { + const reply = Promise.withResolvers() + const started = Promise.withResolvers() + vi.mocked(window.api.gh.workItemByOwnerRepo).mockImplementation(async () => { + started.resolve() + return reply.promise + }) + const pending = lookupCmdJGitHubUrlWorkItem({ + link: { slug: foundPR.prRepo, number: 42, type: 'pr' }, + repo: { id: 'local', path: '/repo' }, + sourceContext: null + }) + await started.promise + setLocalRuntimeCapabilitiesForTests([complete]) + reply.resolve(foundPR) + const result = await pending + expect(result).toMatchObject({ title: 'Found PR', number: 42 }) + expect(result && isCompletePRCheckOwner(result)).toBe(false) + }) + + it.each([ + 'stable', + 'preview', + 'explicit-retired', + 'generation', + 'runtime', + 'caller', + 'mismatch' + ] as const)('preserves source and owner boundaries: %s', async (mode) => { + setLookupHost('r1', [complete]) + const contract = + mode === 'explicit-retired' + ? capturePRCheckContract( + useAppStore.getState, + { kind: 'environment', environmentId: 'env-1' }, + runtimeSourceContext + ) + : undefined + let accepts = true + vi.mocked(callRuntimeRpc).mockImplementation(async (_target, _method, _params, options) => { + options?.beforeSend?.() + if (mode === 'explicit-retired') { + setLookupHost('r1', []) + } + if (mode === 'generation') { + setRuntimeEnvironmentConnectionGenerationForTests('env-1', 5) + } + if (mode === 'runtime') { + setLookupHost('r2', [complete]) + } + if (mode === 'caller') { + accepts = false + } + return mode === 'mismatch' ? { ...foundPR, number: 99 } : foundPR + }) + const pending = lookupGitHubWorkItemByOwnerRepoForSource({ + repoPath: '/repo', + repoId: 'renderer', + sourceContext: runtimeSourceContext, + number: 42, + type: 'pr', + owner: 'acme', + repo: 'orca', + checkContract: contract, + preview: mode === 'preview', + accepts: () => accepts + }) + if (mode === 'mismatch') { + await expect(pending).rejects.toThrow('acme/orca#42') + } else { + const result = await pending + if (mode === 'stable' || mode === 'preview') { + expect(result).toMatchObject({ number: 42 }) + expect(result && isCompletePRCheckOwner(result)).toBe(mode === 'stable') + } else { + expect(result).toBeNull() + } + } + }) +}) diff --git a/src/renderer/src/lib/github-work-item-source-lookup.ts b/src/renderer/src/lib/github-work-item-source-lookup.ts index ab4deb267a6..43aef538f3a 100644 --- a/src/renderer/src/lib/github-work-item-source-lookup.ts +++ b/src/renderer/src/lib/github-work-item-source-lookup.ts @@ -1,3 +1,5 @@ +import { capturePRCheckContract, type PRCheckContract } from './pr-check-observation-contract' +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' import type { GhAccountBinding } from '../../../shared/github/account-binding' import { getWorkItemRepo } from './work-item-repo-row' import type { GitHubWorkItem, GitHubWorkItemDetails } from '../../../shared/github/work-item-types' @@ -8,6 +10,8 @@ import { callRuntimeRpc } from '@/runtime/runtime-rpc-client' import { callGitHubTargetOperation } from './github-work-item-target-request' import { GITHUB_EXACT_OPERATION_UNSUPPORTED, + matchesGitHubWorkItemTarget, + GitHubWorkItemTargetError, requireGitHubWorkItemTargetDetails } from '../../../shared/github/work-item-target' import { @@ -22,6 +26,7 @@ type GitHubWorkItemLookupArgs = { sourceContext?: TaskSourceContext | null number: number type?: 'issue' | 'pr' + checkContract?: PRCheckContract } type GitHubWorkItemByOwnerRepoLookupArgs = GitHubWorkItemLookupArgs & { @@ -73,6 +78,15 @@ export async function lookupGitHubWorkItemForSource( ): Promise { const records = await captureTaskRecords(args) const target = getGitHubSourceRuntimeTarget(args.sourceContext) + const contract = + args.type === 'pr' + ? (args.checkContract ?? + capturePRCheckContract( + (await import('@/store')).useAppStore.getState, + target, + args.sourceContext + )) + : null const item = target.kind === 'environment' ? await callRuntimeRpc | null>( @@ -83,7 +97,10 @@ export async function lookupGitHubWorkItemForSource( number: args.number, type: args.type }, - { timeoutMs: 30_000 } + { + timeoutMs: 30_000, + ...(args.checkContract ? contract?.rpcOptions : contract?.sourceRpcOptions) + } ) : await window.api.gh.workItem({ repoPath: args.repoPath, @@ -91,7 +108,13 @@ export async function lookupGitHubWorkItemForSource( number: args.number, type: args.type }) - const row: GitHubWorkItem | null = item ? { ...item, repoId: args.repoId } : null + if (contract && !(args.checkContract ? contract.current() : contract.sourceCurrent())) { + return null + } + let row: GitHubWorkItem | null = item ? { ...item, repoId: args.repoId } : null + if (row && contract?.complete && contract.current() && !('preview' in args && args.preview)) { + row = acceptPRCheckObservation(row, null, { ...contract, current: contract.current() }) + } return row && records ? records.cache.acceptSearch([row], records.binding)[0] : row } @@ -103,6 +126,15 @@ export async function lookupGitHubWorkItemByOwnerRepoForSource( } const records = await captureTaskRecords(args) const target = getGitHubSourceRuntimeTarget(args.sourceContext) + const contract = + args.type === 'pr' + ? (args.checkContract ?? + capturePRCheckContract( + (await import('@/store')).useAppStore.getState, + target, + args.sourceContext + )) + : null const item = target.kind === 'environment' ? await callRuntimeRpc | null>( @@ -119,8 +151,14 @@ export async function lookupGitHubWorkItemByOwnerRepoForSource( }, { timeoutMs: 30_000, + ...(args.checkContract ? contract?.rpcOptions : contract?.sourceRpcOptions), ...args.rpcOptions, beforeSend: () => { + const contractOptions = args.checkContract + ? contract?.rpcOptions + : contract?.sourceRpcOptions + contractOptions?.beforeSend?.() + args.rpcOptions?.beforeSend?.() if (args.accepts?.() === false) { throw new Error('Task source changed.') } @@ -141,7 +179,21 @@ export async function lookupGitHubWorkItemByOwnerRepoForSource( if (args.accepts?.() === false) { return null } - const row: GitHubWorkItem | null = item ? { ...item, repoId: args.repoId } : null + if (contract && !(args.checkContract ? contract.current() : contract.sourceCurrent())) { + return null + } + let row: GitHubWorkItem | null = item ? { ...item, repoId: args.repoId } : null + const requestedTarget = { + repository: { owner: args.owner, repo: args.repo, ...(args.host ? { host: args.host } : {}) }, + number: args.number, + type: args.type + } + if (row && !matchesGitHubWorkItemTarget(row, requestedTarget)) { + throw new GitHubWorkItemTargetError(requestedTarget) + } + if (row && contract?.complete && contract.current() && !('preview' in args && args.preview)) { + row = acceptPRCheckObservation(row, null, { ...contract, current: contract.current() }) + } // A canonical verification read publishes through its record, not as a search reading. return row && records && !args.accepts ? records.cache.acceptSearch([row], records.binding)[0] @@ -156,6 +208,14 @@ export async function lookupGitHubWorkItemDetailsForSource( } const sourceContext = args.sourceContext const runtimeHost = getGitHubSourceRuntimeHost(sourceContext) + const contract = + args.type === 'pr' + ? capturePRCheckContract( + (await import('@/store')).useAppStore.getState, + args.target ?? getGitHubSourceRuntimeTarget(sourceContext), + sourceContext + ) + : null let result: GitHubWorkItemDetails | null try { result = await callGitHubTargetOperation({ @@ -175,8 +235,10 @@ export async function lookupGitHubWorkItemDetailsForSource( type: args.type }, rpcOptions: { + ...contract?.sourceRpcOptions, ...args.rpcOptions, beforeSend: () => { + contract?.sourceRpcOptions.beforeSend?.() args.rpcOptions?.beforeSend?.() if (args.accepts?.() === false) { throw new Error('Task context changed.') @@ -206,6 +268,15 @@ export async function lookupGitHubWorkItemDetailsForSource( if (args.accepts?.() === false) { return null } + if (contract && !contract.sourceCurrent()) { + return null + } + if (result && contract?.complete && contract.current()) { + result.item = acceptPRCheckObservation(result.item, null, { + ...contract, + current: contract.current() + })! + } if (args.ownerRepo) { requireGitHubWorkItemTargetDetails(result, { repository: args.ownerRepo, diff --git a/src/renderer/src/lib/pr-check-observation-contract.ts b/src/renderer/src/lib/pr-check-observation-contract.ts new file mode 100644 index 00000000000..fbefa01d6ed --- /dev/null +++ b/src/renderer/src/lib/pr-check-observation-contract.ts @@ -0,0 +1,94 @@ +import { + getTaskSourceCacheScope, + type TaskSourceContext +} from '../../../shared/task-source-context' +import { RUNTIME_CONNECTION_CHANGED_MESSAGE } from '../web/web-runtime-request-registry' +import type { RuntimeClientTarget } from '../../../shared/runtime-client-target' +import type { AppState } from '../store/types' +import type { callRuntimeRpc } from '../runtime/runtime-rpc-client' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY } from '../../../shared/source-control/runtime/source-control-runtime-capabilities' +import { lastVerifiedRuntimeStatus } from '../../../shared/remote-runtime/host-status/runtime-host-status' +import { readLocalRuntimeCapabilitiesOrUnknown } from '../runtime/local-runtime-capabilities' +import { getRuntimeEnvironmentRevision } from '../runtime/runtime-environment-revision' +import { getRuntimeEnvironmentConnectionGeneration } from '../store/slices/runtime-status-connection-generation' + +export function capturePRCheckContract( + get: () => AppState, + target: RuntimeClientTarget, + source?: TaskSourceContext | null +) { + const read = () => { + if (target.kind === 'local') { + return { + runtimeId: undefined, + revision: undefined, + generation: undefined, + epoch: 'local', + complete: + readLocalRuntimeCapabilitiesOrUnknown()?.includes( + GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY + ) === true + } + } + const entry = get().runtimeStatusByEnvironmentId?.get(target.environmentId) + const status = lastVerifiedRuntimeStatus(entry) + const revision = getRuntimeEnvironmentRevision(target.environmentId) + const generation = getRuntimeEnvironmentConnectionGeneration(target.environmentId) + return { + runtimeId: status?.runtimeId, + revision, + generation, + epoch: `${revision}:${generation}:${status?.runtimeId ?? ''}`, + complete: + status?.capabilities?.includes(GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY) === true + } + } + const captured = read() + const current = () => { + const now = read() + return now.epoch === captured.epoch && now.complete === captured.complete + } + const sourceCurrent = () => { + const now = read() + return ( + now.revision === captured.revision && + now.generation === captured.generation && + (!captured.runtimeId || now.runtimeId === captured.runtimeId) + ) + } + const runtimeOptions = + target.kind === 'environment' + ? { + expectedEnvironmentPairingRevision: captured.revision, + expectedEnvironmentRuntimeId: captured.runtimeId + } + : {} + const assertCurrent = (valid: () => boolean) => () => { + if (!valid()) { + throw new Error(RUNTIME_CONNECTION_CHANGED_MESSAGE) + } + } + const scope = (observation: ReturnType) => + `${source ? getTaskSourceCacheScope(source) : 'workspace'}:${target.kind === 'local' ? 'local' : target.environmentId}:${observation.epoch}` + const optionsFor = (valid: () => boolean): NonNullable[3]> => + target.kind === 'environment' ? { ...runtimeOptions, beforeSend: assertCurrent(valid) } : {} + return { + scope: scope(captured), + complete: captured.complete, + current, + sourceCurrent, + publicationContext: () => { + const now = read() + return { + scope: scope(now), + complete: captured.complete || now.complete, + current: sourceCurrent(), + trusted: captured.complete && current() + } + }, + rpcOptions: optionsFor(current), + sourceRpcOptions: optionsFor(sourceCurrent) + } +} + +export type PRCheckContract = ReturnType diff --git a/src/renderer/src/lib/pr-check-refresh-owner.ts b/src/renderer/src/lib/pr-check-refresh-owner.ts new file mode 100644 index 00000000000..3f862be5cae --- /dev/null +++ b/src/renderer/src/lib/pr-check-refresh-owner.ts @@ -0,0 +1,52 @@ +import { acceptPRCheckObservation } from '../../../shared/github/complete-pr-check-owner' +import type { GitHubWorkItem } from '../../../shared/github/work-item-types' +import type { GitHubOwnerRepo } from '../../../shared/github/pull-request-types' +import type { TaskSourceContext } from '../../../shared/task-source-context' +import { capturePRCheckContract } from './pr-check-observation-contract' +import { getGitHubSourceRuntimeTarget } from './github-source-runtime-context' +import { lookupGitHubWorkItemByOwnerRepoForSource } from './github-work-item-source-lookup' +import { useAppStore } from '@/store' + +export async function readPRCheckRefreshOwner(args: { + repoPath: string | null + repoId: string + sourceContext?: TaskSourceContext | null + ownerRepo: GitHubOwnerRepo | null + item: GitHubWorkItem + accepts: () => boolean +}) { + const contract = capturePRCheckContract( + useAppStore.getState, + getGitHubSourceRuntimeTarget(args.sourceContext), + args.sourceContext + ) + const current = () => args.accepts() && contract.current() + if (!contract.complete || !args.ownerRepo) { + return { current, rpcOptions: contract.rpcOptions } + } + try { + const owner = await lookupGitHubWorkItemByOwnerRepoForSource({ + repoPath: args.repoPath ?? '', + repoId: args.repoId, + sourceContext: args.sourceContext, + ...args.ownerRepo, + number: args.item.number, + type: 'pr', + accepts: current, + checkContract: contract + }) + return { current, owner: owner ?? undefined, rpcOptions: contract.rpcOptions } + } catch (error) { + return { + current, + error, + owner: + acceptPRCheckObservation({ ...args.item, checksSummary: undefined }, null, { + ...contract, + current: current(), + trusted: false + }) ?? undefined, + rpcOptions: contract.rpcOptions + } + } +} diff --git a/src/renderer/src/runtime/local-runtime-capabilities.test.ts b/src/renderer/src/runtime/local-runtime-capabilities.test.ts new file mode 100644 index 00000000000..6e1c263c4c8 --- /dev/null +++ b/src/renderer/src/runtime/local-runtime-capabilities.test.ts @@ -0,0 +1,23 @@ +import { afterEach, expect, it, vi } from 'vitest' +import { + refreshLocalRuntimeCapabilities, + readLocalRuntimeCapabilitiesOrUnknown, + setLocalRuntimeCapabilitiesForTests +} from './local-runtime-capabilities' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as complete } from '../../../shared/source-control/runtime/source-control-runtime-capabilities' +afterEach(() => { + setLocalRuntimeCapabilitiesForTests(null) + vi.unstubAllGlobals() +}) +it('keeps a declared local capability across transient probe failure and retries an initially unknown probe', async () => { + const getStatus = vi.fn().mockRejectedValue(new Error('temporary')) + vi.stubGlobal('window', { api: { runtime: { getStatus } } }) + setLocalRuntimeCapabilitiesForTests([complete]) + expect(await refreshLocalRuntimeCapabilities()).toEqual([complete]) + expect(readLocalRuntimeCapabilitiesOrUnknown()).toEqual([complete]) + setLocalRuntimeCapabilitiesForTests(null) + expect(await refreshLocalRuntimeCapabilities()).toEqual([]) + expect(readLocalRuntimeCapabilitiesOrUnknown()).toBeNull() + getStatus.mockResolvedValueOnce({ capabilities: [complete] }) + expect(await refreshLocalRuntimeCapabilities()).toEqual([complete]) +}) diff --git a/src/renderer/src/runtime/local-runtime-capabilities.ts b/src/renderer/src/runtime/local-runtime-capabilities.ts index 1a7fa8f3393..87728aae478 100644 --- a/src/renderer/src/runtime/local-runtime-capabilities.ts +++ b/src/renderer/src/runtime/local-runtime-capabilities.ts @@ -98,9 +98,11 @@ export function refreshLocalRuntimeCapabilities(): Promise { - // Probe failure proves no host capability; retain unknown, not an unsupported empty list. - publish({ state: 'unavailable' }) - return [] + // A failed probe cannot revoke capabilities already declared by this local runtime. + if (observation.state !== 'known') { + publish({ state: 'unavailable' }) + } + return readLocalRuntimeCapabilitiesOrUnknown() ?? [] }) .finally(() => { refreshPromise = null diff --git a/src/renderer/src/store/github/check-actions.ts b/src/renderer/src/store/github/check-actions.ts index bc716078b4b..4b5ac88bfd0 100644 --- a/src/renderer/src/store/github/check-actions.ts +++ b/src/renderer/src/store/github/check-actions.ts @@ -1,3 +1,4 @@ +import { capturePRCheckContract } from '@/lib/pr-check-observation-contract' import type { StateCreator } from 'zustand' import type { AppState } from '../types' import type { GitHubSlice } from './slice-types' @@ -51,6 +52,10 @@ export const createCheckActions = ( options?.repoOwnerExecutionHostId ) const repoId = options?.repoId ?? repo?.id + const checkContract = capturePRCheckContract( + get, + getGitHubSourceTarget(get(), repo, options?.sourceContext) + ) const requestSettings = getGitHubRepoSourceSettings(get(), repo, options?.sourceContext) const cacheKey = sourceScopedRepoCacheKey( repoPath, @@ -79,6 +84,22 @@ export const createCheckActions = ( const userRefresh = options?.userRefresh === true const force = Boolean(options?.force) || userRefresh const noCache = force || Boolean(options?.noCache) + const syncLegacyChecks = (checks: PRCheckDetail[], observedHead: string | undefined) => + !checkContract.complete && checkContract.current() + ? syncPRChecksStatus( + get(), + repoPath, + repoId, + branch, + checks, + observedHead, + prRepo, + requestSettings, + repo?.connectionId, + repo?.executionHostId, + repo !== undefined + ) + : null if ( !force && !noCache && @@ -86,19 +107,7 @@ export const createCheckActions = ( (!headSha || cached.headSha === headSha) ) { const cachedChecks = cached.data ?? [] - const prStatusUpdate = syncPRChecksStatus( - get(), - repoPath, - repoId, - branch, - cachedChecks, - cached.headSha, - prRepo, - requestSettings, - repo?.connectionId, - repo?.executionHostId, - repo !== undefined - ) + const prStatusUpdate = syncLegacyChecks(cachedChecks, cached.headSha) if (prStatusUpdate) { set(prStatusUpdate) } @@ -204,19 +213,7 @@ export const createCheckActions = ( }) } - const prStatusUpdate = syncPRChecksStatus( - s, - repoPath, - repoId, - branch, - checks, - headSha, - prRepo, - requestSettings, - repo?.connectionId, - repo?.executionHostId, - repo !== undefined - ) + const prStatusUpdate = syncLegacyChecks(checks, headSha) return { ...nextState, ...prStatusUpdate } }) return checks diff --git a/src/renderer/src/store/github/check-details-loader-test-fixture.ts b/src/renderer/src/store/github/check-details-loader-test-fixture.ts index aac2b88bb33..4eda1a91e76 100644 --- a/src/renderer/src/store/github/check-details-loader-test-fixture.ts +++ b/src/renderer/src/store/github/check-details-loader-test-fixture.ts @@ -77,6 +77,20 @@ export function createLoader(surface: Surface, transport: Transport) { sourceContext, repoId: 'caller-repo', repoPath: '/folder', + item: { + id: 'pr-42', + repoId: 'item-repo', + type: 'pr', + number: 42, + title: 'PR', + state: 'open', + url: 'https://github.com/acme/widgets/pull/42', + labels: [], + author: null, + updatedAt: '2026-11-04', + headSha: 'head', + prRepo + }, itemNumber: 42, itemRepoId: 'item-repo', headSha: 'head', diff --git a/src/renderer/src/store/github/pr-check-owner-publication.test.ts b/src/renderer/src/store/github/pr-check-owner-publication.test.ts new file mode 100644 index 00000000000..eb146705d04 --- /dev/null +++ b/src/renderer/src/store/github/pr-check-owner-publication.test.ts @@ -0,0 +1,487 @@ +import { afterEach, beforeEach, expect, it, vi } from 'vitest' +import { + createTestStore, + makePR, + mockApi, + resetRemoteRuntimeMocks, + runtimeEnvironmentCall, + runtimeEnvironmentTransportCall +} from '../slices/github-slice-test-harness' +import { setLocalRuntimeCapabilitiesForTests } from '../../runtime/local-runtime-capabilities' +import { GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY as capability } from '../../../../shared/source-control/runtime/source-control-runtime-capabilities' +import type { PRCheckDetail } from '../../../../shared/github/check-types' +import type { PRInfo } from '../../../../shared/github/pull-request-types' +import { isCompletePRCheckOwner } from '../../../../shared/github/complete-pr-check-owner' +import { createCompatibleRuntimeStatusResponse } from '../../runtime/runtime-compatibility-test-fixture' +import { getOverallCheckCounts } from '../../components/pr-check-counts' + +const repo = { + id: 'repo-1', + path: '/repo', + displayName: 'repo', + badgeColor: '', + addedAt: 1, + kind: 'git' as const +} +const prRepo = { owner: 'acme', repo: 'widgets', host: 'github.com' } +const now = 1_800_000_000_000 +const branch = 'feature/checks' +const cacheKey = `${repo.id}::${branch}` +const successfulRows: PRCheckDetail[] = [ + { name: 'Build', status: 'completed', conclusion: 'success', url: null } +] +const summary = { + state: 'failure' as const, + total: 101, + passed: 100, + failed: 1, + cancelled: 0, + pending: 0, + neutral: 0 +} +const failedPR = () => + makePR({ + url: 'https://github.com/acme/widgets/pull/12', + prRepo, + checksStatus: 'failure', + checksSummary: { ...summary } + }) +const makeStore = () => { + const store = createTestStore() + store.setState({ repos: [repo], worktreesByRepo: {} }) + return store +} +async function publish(store: ReturnType, pr: PRInfo) { + mockApi.gh.refreshPRNow.mockResolvedValueOnce({ kind: 'found', pr, fetchedAt: now }) + await store.getState().fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true }) +} +beforeEach(() => { + vi.useFakeTimers() + vi.setSystemTime(now) + vi.clearAllMocks() + resetRemoteRuntimeMocks() + setLocalRuntimeCapabilitiesForTests([capability]) + mockApi.gh.prChecks.mockResolvedValue(successfulRows) +}) +afterEach(() => { + vi.useRealTimers() + setLocalRuntimeCapabilitiesForTests(null) +}) + +it('keeps complete failure through fresh and cached details, and direct full publication with those cached details', async () => { + const store = makeStore() + await publish(store, failedPR()) + await store + .getState() + .fetchPRChecks(repo.path, 12, branch, 'head-oid', prRepo, { repoId: repo.id, force: true }) + await store + .getState() + .fetchPRChecks(repo.path, 12, branch, 'head-oid', prRepo, { repoId: repo.id }) + await publish(store, failedPR()) + const owner = store.getState().prCache[cacheKey].data! + expect(owner).toMatchObject({ checksStatus: 'failure', checksSummary: summary }) + expect(Object.values(store.getState().hostedReviewCache)[0].data).toMatchObject({ + status: 'failure', + checksSummary: summary + }) + expect(getOverallCheckCounts(successfulRows, owner)).toMatchObject({ passing: 100, failing: 1 }) + expect(Object.values(store.getState().checksCache)[0].data).toEqual(successfulRows) +}) + +it('keeps the event owner complete when the detail cache contains a successful prefix', async () => { + const store = makeStore() + await store + .getState() + .fetchPRChecks(repo.path, 12, branch, 'head-oid', prRepo, { repoId: repo.id }) + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch } + store.getState().applyGitHubPRRefreshEvent({ + sequence: 1, + aliases: [alias], + reason: 'manual', + requestStartedAt: now, + status: 'in-flight' + }) + store.getState().applyGitHubPRRefreshEvent({ + sequence: 1, + aliases: [alias], + reason: 'manual', + outcome: { kind: 'found', pr: failedPR(), fetchedAt: now } + }) + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + checksStatus: 'failure', + checksSummary: summary + }) +}) + +it('retires a legacy detail callback when complete-owner mode is adopted on the same head', async () => { + const store = makeStore() + setLocalRuntimeCapabilitiesForTests([]) + const delayed = Promise.withResolvers() + mockApi.gh.prChecks.mockReturnValueOnce(delayed.promise) + const pending = store + .getState() + .fetchPRChecks(repo.path, 12, branch, 'head-oid', prRepo, { repoId: repo.id, force: true }) + setLocalRuntimeCapabilitiesForTests([capability]) + await publish(store, failedPR()) + delayed.resolve(successfulRows) + await pending + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + checksStatus: 'failure', + checksSummary: summary + }) +}) + +it('keeps same-head last-good checks on unavailable collection, but does not carry them onto another head', async () => { + const store = makeStore() + await publish(store, failedPR()) + await publish( + store, + makePR({ url: 'https://github.com/acme/widgets/pull/12', prRepo, checksStatus: 'neutral' }) + ) + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + checksStatus: 'failure', + checksSummary: summary + }) + await publish( + store, + makePR({ + url: 'https://github.com/acme/widgets/pull/12', + prRepo, + headSha: 'new-head', + checksStatus: 'neutral' + }) + ) + expect(store.getState().prCache[cacheKey].data?.checksSummary).toBeUndefined() + expect(store.getState().prCache[cacheKey].data?.checksStatus).toBe('neutral') +}) + +it.each([null, []])( + 'retains legacy detail promotion with absent/unknown support %j', + async (capabilities) => { + const store = makeStore() + setLocalRuntimeCapabilitiesForTests(capabilities) + await publish(store, failedPR()) + await store + .getState() + .fetchPRChecks(repo.path, 12, branch, 'head-oid', prRepo, { repoId: repo.id, force: true }) + expect(store.getState().prCache[cacheKey].data?.checksStatus).toBe('success') + } +) + +it('settles missed-start outcomes and errors without granting their check prefix authority', async () => { + const store = makeStore() + await publish(store, failedPR()) + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch } + store.getState().applyGitHubPRRefreshEvent({ + sequence: 9, + aliases: [alias], + reason: 'manual', + outcome: { + kind: 'found', + pr: { + ...failedPR(), + title: 'New title', + checksStatus: 'success', + checksSummary: { ...summary, state: 'success', passed: 101, failed: 0 } + }, + fetchedAt: now + 1000 + } + }) + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + title: 'New title', + checksStatus: 'failure', + checksSummary: summary + }) + expect(store.getState().prRefreshStates[cacheKey]).toBeUndefined() + store.getState().applyGitHubPRRefreshEvent({ + sequence: 10, + aliases: [alias], + reason: 'manual', + outcome: { + kind: 'upstream-error', + errorType: 'unknown', + message: 'Unavailable', + fetchedAt: now + 2000 + } + }) + expect(store.getState().prRefreshStates[cacheKey].status).toBe('error') + store.getState().applyGitHubPRRefreshEvent({ + sequence: 11, + aliases: [alias], + reason: 'manual', + outcome: { kind: 'no-pr', fetchedAt: now + 3000 } + }) + expect(store.getState().prCache[cacheKey].data).toBeNull() + expect(store.getState().prRefreshStates[cacheKey]).toBeUndefined() +}) + +it('does not lose refresh settlement when its request evidence is evicted', async () => { + const store = makeStore() + await publish(store, failedPR()) + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch } + for (let n = 1; n <= 130; n++) { + store.getState().applyGitHubPRRefreshEvent({ + sequence: n, + aliases: [{ ...alias, cacheKey: n === 1 ? cacheKey : `other-${n}` }], + reason: 'manual', + requestStartedAt: now, + status: 'in-flight' + }) + } + store.getState().applyGitHubPRRefreshEvent({ + sequence: 1, + aliases: [alias], + reason: 'manual', + outcome: { + kind: 'found', + pr: { ...failedPR(), title: 'Settled' }, + fetchedAt: now + 1000 + } + }) + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + title: 'Settled', + checksStatus: 'failure' + }) + expect(store.getState().prRefreshStates[cacheKey]).toBeUndefined() +}) + +it.each(['direct', 'event'] as const)( + 'keeps first-load metadata on capability adoption through %s', + async (delivery) => { + const store = makeStore() + setLocalRuntimeCapabilitiesForTests(null) + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch } + const incoming = { + ...failedPR(), + title: 'Found during discovery', + mergeable: 'MERGEABLE' as const + } + const deferred = Promise.withResolvers() + let pending: Promise | undefined + if (delivery === 'direct') { + mockApi.gh.refreshPRNow.mockReturnValueOnce(deferred.promise) + pending = store + .getState() + .fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true }) + } else { + store.getState().applyGitHubPRRefreshEvent({ + sequence: 151, + aliases: [alias], + reason: 'manual', + requestStartedAt: now, + status: 'in-flight' + }) + } + setLocalRuntimeCapabilitiesForTests([capability]) + const outcome = { kind: 'found' as const, pr: incoming, fetchedAt: now + 1 } + if (pending) { + deferred.resolve(outcome) + expect(await pending).toMatchObject({ + title: 'Found during discovery', + mergeable: 'MERGEABLE', + checksStatus: 'neutral' + }) + } else { + store + .getState() + .applyGitHubPRRefreshEvent({ sequence: 151, aliases: [alias], reason: 'manual', outcome }) + } + const accepted = store.getState().prCache[cacheKey].data! + expect(accepted).toMatchObject({ + title: 'Found during discovery', + mergeable: 'MERGEABLE', + checksStatus: 'neutral' + }) + expect(accepted.checksSummary).toBeUndefined() + expect(isCompletePRCheckOwner(accepted)).toBe(true) + expect(Object.values(store.getState().hostedReviewCache)[0].data).toMatchObject({ + title: 'Found during discovery', + mergeable: 'MERGEABLE', + status: 'neutral' + }) + expect(store.getState().prRefreshStates[cacheKey]).toBeUndefined() + } +) + +it.each(['linked', 'fallback'] as const)( + 'keeps a newer complete owner in both caches against a late unproved %s reply', + async (mode) => { + const store = makeStore() + await publish(store, failedPR()) + setLocalRuntimeCapabilitiesForTests([]) + const deferred = Promise.withResolvers() + mockApi.gh.refreshPRNow.mockReturnValueOnce(deferred.promise) + const options = mode === 'linked' ? { linkedPRNumber: 12 } : { fallbackPRNumber: 12 } + const pending = store + .getState() + .fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true, ...options }) + setLocalRuntimeCapabilitiesForTests([capability]) + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch, ...options } + const fresh = { ...failedPR(), headSha: 'head-2', title: 'New complete owner' } + store.getState().applyGitHubPRRefreshEvent({ + sequence: 152, + aliases: [alias], + reason: 'manual', + requestStartedAt: now, + status: 'in-flight' + }) + store.getState().applyGitHubPRRefreshEvent({ + sequence: 152, + aliases: [alias], + reason: 'manual', + outcome: { kind: 'found', pr: fresh, fetchedAt: now + 1 } + }) + deferred.resolve({ + kind: 'found', + pr: { + ...failedPR(), + title: 'Late old head', + checksStatus: 'success', + checksSummary: { ...summary, state: 'success', passed: 101, failed: 0 } + }, + fetchedAt: now + 2 + }) + expect(await pending).toMatchObject({ + title: 'New complete owner', + headSha: 'head-2', + checksStatus: 'failure' + }) + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + title: 'New complete owner', + headSha: 'head-2', + checksSummary: summary + }) + expect(Object.values(store.getState().hostedReviewCache)[0].data).toMatchObject({ + title: 'New complete owner', + headSha: 'head-2', + checksSummary: summary + }) + } +) + +it('keeps valid metadata but not old-head checks after a capable capture expires', async () => { + const store = makeStore() + await publish(store, failedPR()) + const deferred = Promise.withResolvers() + mockApi.gh.refreshPRNow.mockReturnValueOnce(deferred.promise) + const pending = store + .getState() + .fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true }) + setLocalRuntimeCapabilitiesForTests([]) + deferred.resolve({ + kind: 'found', + pr: { ...failedPR(), headSha: 'head-2', title: 'New head metadata' }, + fetchedAt: now + 1 + }) + const result = await pending + expect(result).toMatchObject({ + title: 'New head metadata', + headSha: 'head-2', + checksStatus: 'neutral' + }) + expect(result?.checksSummary).toBeUndefined() + expect(store.getState().prCache[cacheKey].data?.checksSummary).toBeUndefined() + expect(Object.values(store.getState().hostedReviewCache)[0].data?.checksSummary).toBeUndefined() +}) + +it.each([false, true])( + 'allows first runtime discovery at the real before-send boundary (complete=%s)', + async (complete) => { + const store = makeStore() + store.setState({ + repos: [{ ...repo, executionHostId: 'runtime:owner' }], + runtimeStatusByEnvironmentId: new Map() + }) + runtimeEnvironmentTransportCall.mockImplementation((args) => { + if (args.method === 'status.get') { + const response = createCompatibleRuntimeStatusResponse('owner-1') + response.result.capabilities = complete ? [capability] : [] + store.setState({ + runtimeStatusByEnvironmentId: new Map([ + ['owner', { status: response.result, checkedAt: now }] + ]) + }) + return response + } + return runtimeEnvironmentCall(args) + }) + runtimeEnvironmentCall.mockResolvedValue({ + id: 'lookup', + ok: true, + result: { + kind: 'found', + pr: { ...failedPR(), title: 'Discovered remote' }, + fetchedAt: now + 1 + } + }) + const result = await store + .getState() + .fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true }) + expect(runtimeEnvironmentCall).toHaveBeenCalledWith( + expect.objectContaining({ method: 'github.prForBranch' }) + ) + expect(result?.title).toBe('Discovered remote') + expect(result?.checksStatus).toBe(complete ? 'neutral' : 'failure') + expect(result?.checksSummary).toEqual(complete ? undefined : summary) + expect(isCompletePRCheckOwner(result ?? {})).toBe(complete) + expect(Object.values(store.getState().prCache)[0].data?.title).toBe('Discovered remote') + expect(Object.values(store.getState().hostedReviewCache)[0].data?.title).toBe( + 'Discovered remote' + ) + } +) + +it.each(['direct', 'event'] as const)( + 'keeps accepted same-head checks when support is absent before the next %s capture', + async (delivery) => { + const store = makeStore() + await publish(store, failedPR()) + setLocalRuntimeCapabilitiesForTests([]) + vi.setSystemTime(now + 1) + const incoming = { + ...failedPR(), + title: 'Updated metadata without proof', + checksStatus: 'success' as const, + checksSummary: { ...summary, state: 'success' as const, passed: 101, failed: 0 } + } + if (delivery === 'direct') { + mockApi.gh.refreshPRNow.mockResolvedValueOnce({ + kind: 'found', + pr: incoming, + fetchedAt: now + 2 + }) + expect( + await store.getState().fetchPRForBranch(repo.path, branch, { repoId: repo.id, force: true }) + ).toMatchObject({ + title: 'Updated metadata without proof', + checksStatus: 'failure', + checksSummary: summary + }) + } else { + const alias = { cacheKey, repoId: repo.id, repoPath: repo.path, branch } + store.getState().applyGitHubPRRefreshEvent({ + sequence: 160, + aliases: [alias], + reason: 'manual', + requestStartedAt: now + 1, + status: 'in-flight' + }) + store.getState().applyGitHubPRRefreshEvent({ + sequence: 160, + aliases: [alias], + reason: 'manual', + outcome: { kind: 'found', pr: incoming, fetchedAt: now + 2 } + }) + } + expect(store.getState().prCache[cacheKey].data).toMatchObject({ + title: 'Updated metadata without proof', + checksStatus: 'failure', + checksSummary: summary + }) + expect(Object.values(store.getState().hostedReviewCache)[0].data).toMatchObject({ + title: 'Updated metadata without proof', + status: 'failure', + checksSummary: summary + }) + } +) diff --git a/src/renderer/src/store/github/pr-check-status-cache.ts b/src/renderer/src/store/github/pr-check-status-cache.ts index 7119e589d47..f4b158c8c0c 100644 --- a/src/renderer/src/store/github/pr-check-status-cache.ts +++ b/src/renderer/src/store/github/pr-check-status-cache.ts @@ -1,3 +1,5 @@ +import { capturePRCheckContract } from '@/lib/pr-check-observation-contract' +import { isCompletePRCheckOwner } from '../../../../shared/github/complete-pr-check-owner' import type { AppState } from '../types' import type { GitHubPRRefreshAlias } from '../../../../shared/github/pull-request-refresh-types' import type { PRInfo } from '../../../../shared/github/pull-request-types' @@ -15,6 +17,17 @@ export function applyCachedChecksStatus( fetchedAt: number, aliasExecutionHostId: string ): PRInfo { + if ( + isCompletePRCheckOwner(pr) || + capturePRCheckContract( + () => state, + aliasExecutionHostId.startsWith('runtime:') + ? { kind: 'environment', environmentId: aliasExecutionHostId.slice(8) } + : { kind: 'local' } + ).complete + ) { + return pr + } const checksCacheKeys = [ ...(alias.repoId ? [ diff --git a/src/renderer/src/store/github/pr-result-cache.ts b/src/renderer/src/store/github/pr-result-cache.ts index 427247635ac..1a17ac24ce3 100644 --- a/src/renderer/src/store/github/pr-result-cache.ts +++ b/src/renderer/src/store/github/pr-result-cache.ts @@ -1,3 +1,9 @@ +import type { PRCheckContract } from '@/lib/pr-check-observation-contract' +import { + acceptPRCheckObservation, + completePRCheckOwnerScope +} from '../../../../shared/github/complete-pr-check-owner' +import { applyCachedChecksStatus } from './pr-check-status-cache' import type { LinkedReviewClearScope } from './linked-review-clear' import type { AppState } from '../types' import type { RuntimeFocusSettings } from '../../../../shared/github/github-cache-key' @@ -29,6 +35,9 @@ type GitHubPRResultCacheArgs = { executionHostId?: string | null hasRepoOwner?: boolean pr: PRInfo | null + checkContract?: PRCheckContract + checksProof?: boolean + overlayChecks?: boolean fetchedAt: number rejectedPRUrls?: readonly string[] worktreeId?: string @@ -81,6 +90,12 @@ export function deletePRRefreshStartedEntry(sequence: number | undefined, cacheK } export function pruneExpiredPRRefreshStartedEntries(now = performance.now()): void { + for (const [key, request] of prRefreshStartedHostedReviewEntries) { + if (now <= request.expiresAt) { + break + } + prRefreshStartedHostedReviewEntries.delete(key) + } for (const [cacheKey, request] of prRefreshStartedLinkedReviewScopes) { // Monotonic expiry order avoids scanning live aliases on every refresh event. if (now <= request.expiresAt) { @@ -94,7 +109,8 @@ export function setPRRefreshStartedEntry( sequence: number, cacheKey: string, entry: AppState['hostedReviewCache'][string] | undefined, - clearScope?: LinkedReviewClearScope + clearScope?: LinkedReviewClearScope, + checkContract?: PRCheckContract ): void { // Ownership evidence must survive advisory cache eviction for every accepted alias. prRefreshStartedLinkedReviewScopes.delete(cacheKey) @@ -106,12 +122,16 @@ export function setPRRefreshStartedEntry( }) } const key = prRefreshStartedEntryKey(sequence, cacheKey) - if (entry === undefined) { + if (entry === undefined && !checkContract) { prRefreshStartedHostedReviewEntries.delete(key) return } prRefreshStartedHostedReviewEntries.delete(key) - prRefreshStartedHostedReviewEntries.set(key, entry) + prRefreshStartedHostedReviewEntries.set(key, { + entry, + checkContract, + expiresAt: performance.now() + PR_REFRESH_ACTIVE_STALE_MS + }) while (prRefreshStartedHostedReviewEntries.size > PR_REFRESH_STARTED_HOSTED_REVIEW_ENTRY_MAX) { const oldest = prRefreshStartedHostedReviewEntries.keys().next() if (oldest.done) { @@ -160,9 +180,44 @@ export function applyGitHubPRResultToCaches( ) const hostedReviewEntry = args.hostedReviewCache[hostedReviewCacheKey] const current = args.prCache[args.prCacheKey] + let suppliedChecksTrusted = true + if (args.checkContract) { + if (!args.checkContract.sourceCurrent()) { + return { prCache: args.prCache, hostedReviewCache: args.hostedReviewCache } + } + if (args.pr) { + const publication = args.checkContract.publicationContext() + const scope = `${publication.scope}:${args.prCacheKey}` + const complete = + publication.complete || completePRCheckOwnerScope(current?.data ?? {}) === scope + const trusted = publication.trusted && args.checksProof !== false + suppliedChecksTrusted = + !complete || (trusted && Boolean(args.pr.headSha) && Boolean(args.pr.checksSummary)) + const accepted = acceptPRCheckObservation(args.pr, current?.data, { + ...publication, + scope, + complete, + trusted + })! + args = { + ...args, + pr: + complete || !args.overlayChecks + ? accepted + : applyCachedChecksStatus( + args.state, + { cacheKey: args.prCacheKey, ...args }, + accepted, + args.fetchedAt, + getRepoExecutionHostId(args) + ) + } + } + } const prNumber = args.pr?.number ?? null // The coordinator delivers each outcome twice; skip duplicates only while both caches name the same PR. if ( + completePRCheckOwnerScope(current?.data ?? {}) === completePRCheckOwnerScope(args.pr ?? {}) && current?.fetchedAt === args.fetchedAt && (current.data?.number ?? null) === prNumber && current.data?.url === args.pr?.url && @@ -204,21 +259,24 @@ export function applyGitHubPRResultToCaches( requestStartedEntry: args.requestStartedEntry }) return { - prCache: applyPRCacheResult( - args.prCache, - args.prCacheKey, - args.pr, - args.fetchedAt, - shouldWritePRCacheForHostedReviewSync({ - hostedReviewSyncAccepted: hostedReviewSync.accepted, - hostedReviewEntry, - pr: args.pr, - linkedPRNumber: args.linkedPRNumber, - fallbackPRNumber: args.fallbackPRNumber - }), - preserveExistingPRForFallbackMiss, - args.fetchedHeadOid - ), + prCache: + !suppliedChecksTrusted && !hostedReviewSync.accepted + ? args.prCache + : applyPRCacheResult( + args.prCache, + args.prCacheKey, + args.pr, + args.fetchedAt, + shouldWritePRCacheForHostedReviewSync({ + hostedReviewSyncAccepted: hostedReviewSync.accepted, + hostedReviewEntry, + pr: args.pr, + linkedPRNumber: args.linkedPRNumber, + fallbackPRNumber: args.fallbackPRNumber + }), + preserveExistingPRForFallbackMiss, + args.fetchedHeadOid + ), hostedReviewCache: hostedReviewSync.cache } } diff --git a/src/renderer/src/store/github/pull-request-execution.ts b/src/renderer/src/store/github/pull-request-execution.ts index cdea31e8743..8d72f0537a2 100644 --- a/src/renderer/src/store/github/pull-request-execution.ts +++ b/src/renderer/src/store/github/pull-request-execution.ts @@ -1,3 +1,4 @@ +import { capturePRCheckContract } from '@/lib/pr-check-observation-contract' import type { StateCreator } from 'zustand' import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target' import type { AppState } from '../types' @@ -16,11 +17,10 @@ import { normalizeGitHubPRForBranchOutcome, githubPRTransportFailureOutcome } from '../../../../shared/github/pull-request-for-branch-outcome' -import { getRepoExecutionHostId, LOCAL_EXECUTION_HOST_ID } from '../../../../shared/execution-host' +import { getRepoExecutionHostId } from '../../../../shared/execution-host' import { callRuntimeRpc } from '../../runtime/runtime-rpc-client' import { inflightPRRequests, prRequestGenerations } from './request-coordination' import { getRuntimeRepoTarget } from './repository-routing' -import { applyCachedChecksStatus } from './pr-check-status-cache' import { isWslHostOffForForge, withForgeHostOffSkip } from './wsl-host-off-forge' import { cachedPRCandidateFields } from './pr-refresh-cached-candidate-fields' import { lookupPRForBranchOverIpc } from './pr-for-branch-ipc-fallback' @@ -72,7 +72,6 @@ export function startPullRequestLookup(args: { requestStartedPRRefreshToken } = args const executionHostId = repo ? getRepoExecutionHostId(repo) : undefined - const ownerHostId = executionHostId ?? LOCAL_EXECUTION_HOST_ID const request = (async () => { try { const runtimeRepo = getRuntimeRepoTarget(get(), { repoId, repoPath }, requestTarget) @@ -82,6 +81,7 @@ export function startPullRequestLookup(args: { } return cached?.data ?? null } + const checkContract = capturePRCheckContract(get, runtimeRepo?.target ?? { kind: 'local' }) const candidateWorktree = options?.worktreeId ? findWorktreeById(get(), options.worktreeId, executionHostId) : null @@ -106,7 +106,7 @@ export function startPullRequestLookup(args: { ? { fallbackPRNumber, acceptMergedFallbackPR: fallbackPRSource !== null } : {}) }, - { timeoutMs: 30_000 } + { timeoutMs: 30_000, ...checkContract.sourceRpcOptions } ).then((result) => normalizeGitHubPRForBranchOutcome(result)) : (async () => { const candidate: GitHubPRRefreshCandidate = { @@ -139,7 +139,11 @@ export function startPullRequestLookup(args: { transportFailed = true return githubPRTransportFailureOutcome() }) + if (!checkContract.sourceCurrent()) { + return cached?.data ?? null + } const pr = outcome.kind === 'found' ? outcome.pr : null + let acceptedPR: PRInfo | null = null // RPC and lost IPC replies get no coordinator settlement; a lost reply is reported only to the click that asked, so polls stay silent. if ( prRequestGenerations.get(cacheKey) === generation && @@ -168,16 +172,9 @@ export function startPullRequestLookup(args: { connectionId: repo?.connectionId, executionHostId: repo?.executionHostId, hasRepoOwner: repo !== undefined, - pr: - pr && !runtimeRepo - ? applyCachedChecksStatus( - s, - { cacheKey, repoPath, branch, repoId, connectionId: repo?.connectionId }, - pr, - outcome.fetchedAt, - ownerHostId - ) - : pr, + pr, + checkContract, + overlayChecks: !runtimeRepo, fetchedAt: outcome.fetchedAt, rejectedPRUrls: outcome.kind === 'no-pr' ? outcome.rejectedPRUrls : undefined, fetchedHeadOid: requestHeadOid, @@ -188,6 +185,7 @@ export function startPullRequestLookup(args: { requestStartedAt, requestStartedEntry: requestStartedHostedReviewEntry }) + acceptedPR = (updates.prCache ?? s.prCache)[cacheKey]?.data ?? null return updates.prCache || updates.hostedReviewCache ? updates : s }) if (skippedStaleLinkedPRLookup) { @@ -249,7 +247,7 @@ export function startPullRequestLookup(args: { ) { return get().prCache[cacheKey]?.data ?? null } - return pr ?? null + return acceptedPR ?? null } catch (err) { console.error('Failed to fetch PR:', err) return null diff --git a/src/renderer/src/store/github/refresh-event-actions.ts b/src/renderer/src/store/github/refresh-event-actions.ts index a8a17cfd7d8..d0a0212400e 100644 --- a/src/renderer/src/store/github/refresh-event-actions.ts +++ b/src/renderer/src/store/github/refresh-event-actions.ts @@ -1,8 +1,8 @@ +import { capturePRCheckContract } from '@/lib/pr-check-observation-contract' import type { StateCreator } from 'zustand' import type { AppState } from '../types' import type { GitHubSlice } from './slice-types' import { getHostedReviewCacheKey } from '../slices/hosted-review-cache-identity' -import { applyCachedChecksStatus } from './pr-check-status-cache' import { capPrRefreshSequences, capPrRefreshStates, @@ -84,7 +84,9 @@ export const createRefreshEventActions = ( if (event.outcome) { const startedEntryKey = prRefreshStartedEntryKey(event.sequence, alias.cacheKey) - const requestStartedEntry = prRefreshStartedHostedReviewEntries.get(startedEntryKey) + const started = prRefreshStartedHostedReviewEntries.get(startedEntryKey) + const contract = started?.checkContract ?? capturePRCheckContract(get, { kind: 'local' }) + const requestStartedEntry = started?.entry const requestScope = prRefreshStartedLinkedReviewScopes.get(alias.cacheKey) deletePRRefreshStartedEntry(event.sequence, alias.cacheKey) if (previousSequence !== event.sequence) { @@ -103,16 +105,10 @@ export const createRefreshEventActions = ( } continue } - const data = - event.outcome.kind === 'found' - ? applyCachedChecksStatus( - s, - alias, - event.outcome.pr, - event.outcome.fetchedAt, - aliasExecutionHostId - ) - : null + if (!contract.sourceCurrent()) { + continue + } + const data = event.outcome.kind === 'found' ? event.outcome.pr : null const linkedPRNumber = alias.linkedPRNumber ?? null // Why: one outcome fans out to many aliases; build one lazy index instead of rescanning worktrees per alias. const worktreeLookupIndex = @@ -190,6 +186,9 @@ export const createRefreshEventActions = ( executionHostId: aliasExecutionHostId, hasRepoOwner: true, pr: data, + checkContract: contract, + checksProof: started?.checkContract !== undefined, + overlayChecks: true, fetchedAt: event.outcome.fetchedAt, rejectedPRUrls: event.outcome.kind === 'no-pr' ? event.outcome.rejectedPRUrls : undefined, @@ -235,7 +234,8 @@ export const createRefreshEventActions = ( alias.repoPath ) ) - : undefined + : undefined, + capturePRCheckContract(get, { kind: 'local' }) ) } else { // Why: pause/skip can follow an in-flight broadcast with no outcome; drop the stale request-start snapshot. diff --git a/src/renderer/src/store/github/request-coordination.ts b/src/renderer/src/store/github/request-coordination.ts index b19ed51de41..4f0b1f15f53 100644 --- a/src/renderer/src/store/github/request-coordination.ts +++ b/src/renderer/src/store/github/request-coordination.ts @@ -1,3 +1,4 @@ +import type { PRCheckContract } from '@/lib/pr-check-observation-contract' import type { PRCheckDetail } from '../../../../shared/github/check-types' import type { PRComment } from '../../../../shared/github/comment-types' import type { IssueInfo, PRInfo } from '../../../../shared/github/pull-request-types' @@ -52,7 +53,11 @@ export const inflightProjectViewRequests = new Map( export const prRequestGenerations = new Map() export const prRefreshStartedHostedReviewEntries = new Map< string, - AppState['hostedReviewCache'][string] + { + entry: AppState['hostedReviewCache'][string] | undefined + checkContract?: PRCheckContract + expiresAt: number + } >() export const prRefreshStartedLinkedReviewScopes = new Map< string, diff --git a/src/renderer/src/store/slices/github-pr-branch-direct-refresh-scope.test.ts b/src/renderer/src/store/slices/github-pr-branch-direct-refresh-scope.test.ts index c7262caffd3..dc179480f3d 100644 --- a/src/renderer/src/store/slices/github-pr-branch-direct-refresh-scope.test.ts +++ b/src/renderer/src/store/slices/github-pr-branch-direct-refresh-scope.test.ts @@ -203,7 +203,7 @@ describe('createGitHubSlice.fetchPRForBranch', () => { fetchedAt: Date.now() }) - await expect(request).resolves.toMatchObject({ title: 'Same-ms direct PR refresh' }) + await expect(request).resolves.toBeNull() expect(store.getState().prCache[`${repoId}::${branch}`]).toBeUndefined() expect(store.getState().hostedReviewCache[hostedReviewCacheKey]).toEqual({ data: externalReview, diff --git a/src/renderer/src/store/slices/worktrees-terminal-pr-url-linking.test.ts b/src/renderer/src/store/slices/worktrees-terminal-pr-url-linking.test.ts index 7696f9d3248..fab136074b7 100644 --- a/src/renderer/src/store/slices/worktrees-terminal-pr-url-linking.test.ts +++ b/src/renderer/src/store/slices/worktrees-terminal-pr-url-linking.test.ts @@ -1,3 +1,4 @@ +vi.mock('@/store', () => ({ useAppStore: { getState: () => ({}) } })) import { beforeEach, describe, expect, it, vi } from 'vitest' import type { HostedReviewInfo, @@ -54,6 +55,10 @@ describe('worktree remote runtime mutations', () => { beforeEach(() => { vi.clearAllMocks() resetRemoteRuntimeMocks() + Object.defineProperty(window.api, 'gh', { + configurable: true, + value: { workItemByOwnerRepo: vi.fn().mockResolvedValue(null) } + }) }) it('rechecks GitHub PR suppression after branch confirmation resolves', async () => { @@ -88,9 +93,7 @@ describe('worktree remote runtime mutations', () => { slug: { owner: 'acme', repo: 'orca' }, number: 42 }) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() store.setState({ worktreesByRepo: { repo1: [{ ...wt, linkedPR: null, suppressedGitHubPR: 42 }] @@ -98,9 +101,7 @@ describe('worktree remote runtime mutations', () => { }) resolveLookup(confirmedReview(42)) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(mockApi.worktrees.updateMeta).not.toHaveBeenCalled() }) @@ -137,18 +138,14 @@ describe('worktree remote runtime mutations', () => { number: 42 }) expect(mockApi.worktrees.updateMeta).not.toHaveBeenCalled() - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() store.setState({ worktreesByRepo: { repo1: [{ ...wt, linkedPR: 7 }] } }) resolveLookup(confirmedReview(42)) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(store.getState().worktreesByRepo.repo1[0]?.linkedPR).toBe(7) expect( @@ -192,9 +189,7 @@ describe('worktree remote runtime mutations', () => { number: 42 }) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(mockApi.worktrees.resolvePrBase).toHaveBeenCalledWith({ repoId: 'repo1', @@ -209,9 +204,7 @@ describe('worktree remote runtime mutations', () => { baseBranch: 'main', pushTarget: { remoteName: 'origin', branchName: 'feature/pr-link' } }) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(store.getState().worktreesByRepo.repo1[0]?.linkedPR).toBe(7) expect( @@ -260,9 +253,7 @@ describe('worktree remote runtime mutations', () => { linkedGiteaPR: null }) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(mockApi.worktrees.updateMeta).not.toHaveBeenCalled() }) diff --git a/src/renderer/src/store/slices/worktrees-terminal-reference-origins.test.ts b/src/renderer/src/store/slices/worktrees-terminal-reference-origins.test.ts index 3d2ba18fcd7..3902bcdf40a 100644 --- a/src/renderer/src/store/slices/worktrees-terminal-reference-origins.test.ts +++ b/src/renderer/src/store/slices/worktrees-terminal-reference-origins.test.ts @@ -1,3 +1,4 @@ +vi.mock('@/store', () => ({ useAppStore: { getState: () => ({}) } })) import type { HostedReviewInfo, HostedReviewForBranchArgs @@ -27,9 +28,7 @@ const url = 'https://github.com/acme/orca/pull/42' const link = { url, slug: { owner: 'acme', repo: 'orca' }, number: 42 } const leaf = '11111111-1111-4111-8111-111111111111' const flush = async () => { - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() } function setup() { const store = createTestStore() @@ -82,6 +81,10 @@ const context = (tabId: string) => ({ beforeEach(() => { vi.clearAllMocks() resetRemoteRuntimeMocks() + Object.defineProperty(window.api, 'gh', { + configurable: true, + value: { workItemByOwnerRepo: vi.fn().mockResolvedValue(null) } + }) resetWorktreeSliceModuleMemory() }) describe('terminal reference evidence', () => { diff --git a/src/renderer/src/store/slices/worktrees-terminal-reference-source-race.test.ts b/src/renderer/src/store/slices/worktrees-terminal-reference-source-race.test.ts index fd6633ddb9e..dee16161834 100644 --- a/src/renderer/src/store/slices/worktrees-terminal-reference-source-race.test.ts +++ b/src/renderer/src/store/slices/worktrees-terminal-reference-source-race.test.ts @@ -1,3 +1,4 @@ +vi.mock('@/store', () => ({ useAppStore: { getState: () => ({}) } })) import { beforeEach, expect, it, vi } from 'vitest' import type { HostedReviewInfo } from '../../../../shared/source-control/hosted-review/hosted-review-contracts' import type { Repo } from '../../../../shared/repo-types' @@ -13,6 +14,10 @@ import { beforeEach(() => { vi.clearAllMocks() resetRemoteRuntimeMocks() + Object.defineProperty(window.api, 'gh', { + configurable: true, + value: { workItemByOwnerRepo: vi.fn().mockResolvedValue(null) } + }) resetWorktreeSliceModuleMemory() }) @@ -62,9 +67,7 @@ it.each([ url: review.url, slug: { owner: 'acme', repo: 'orca' } }) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() expect(branchLookup).toHaveBeenCalledTimes(1) store.setState({ repos: @@ -112,9 +115,7 @@ it.each([ bumpProviderRuntimeSessionGeneration() } pending.resolve(review) - for (let i = 0; i < 20; i++) { - await Promise.resolve() - } + await vi.dynamicImportSettled() if (change === 'label') { expect(mockApi.worktrees.updateMeta).toHaveBeenCalled() } else { diff --git a/src/shared/github/check-types.ts b/src/shared/github/check-types.ts index 16253d10f90..d3e2da9a767 100644 --- a/src/shared/github/check-types.ts +++ b/src/shared/github/check-types.ts @@ -13,6 +13,7 @@ export type PRCheckDetail = { | 'action_required' | null url: string | null + observedHeadSha?: string checkRunId?: number workflowRunId?: number // GitLab trace retrieval requires numeric job id, so carry it through the Checks row. diff --git a/src/shared/github/complete-pr-check-owner.test.ts b/src/shared/github/complete-pr-check-owner.test.ts new file mode 100644 index 00000000000..5c4f36c817f --- /dev/null +++ b/src/shared/github/complete-pr-check-owner.test.ts @@ -0,0 +1,65 @@ +import { expect, it } from 'vitest' +import { + acceptPRCheckObservation, + isCompletePRCheckOwner, + projectPRCheckOwner +} from './complete-pr-check-owner' + +const summary = { + state: 'success' as const, + total: 101, + passed: 101, + failed: 0, + pending: 0, + neutral: 0 +} +const pr = { + number: 42, + url: 'https://github.com/acme/widgets/pull/42', + headSha: 'h1', + checksStatus: 'success' as const, + checksSummary: summary +} +const context = { scope: 'account:runtime1', complete: true, current: true } + +it('retains last-good only for the same proved source, target and nonempty head', () => { + const accepted = acceptPRCheckObservation(pr, null, context)! + expect( + acceptPRCheckObservation({ ...pr, checksSummary: undefined }, accepted, context)?.checksSummary + ).toEqual(summary) + for (const next of [ + { ...pr, headSha: 'h2' }, + { ...pr, headSha: '' }, + { ...pr, number: 43, url: 'https://github.com/acme/widgets/pull/43' }, + { ...pr, url: 'https://github.com/other/widgets/pull/42' } + ]) { + expect( + acceptPRCheckObservation({ ...next, checksSummary: undefined }, accepted, context) + ?.checksSummary + ).toBeUndefined() + } + expect( + acceptPRCheckObservation({ ...pr, checksSummary: undefined }, accepted, { + ...context, + scope: 'account:runtime2' + })?.checksSummary + ).toBeUndefined() + expect(acceptPRCheckObservation(pr, accepted, { ...context, current: false })).toBeNull() + expect( + acceptPRCheckObservation({ ...pr, checksSummary: undefined }, pr, context)?.checksSummary + ).toBeUndefined() +}) + +it('carries unavailable authority explicitly through display and review projections without lending it to another head', () => { + const unavailable = acceptPRCheckObservation({ ...pr, checksSummary: undefined }, null, context)! + const display = projectPRCheckOwner(unavailable, { ...unavailable }) + expect(isCompletePRCheckOwner(display)).toBe(true) + const review = projectPRCheckOwner(display, { ...display, status: display.checksStatus }) + expect(isCompletePRCheckOwner(review)).toBe(true) + expect(isCompletePRCheckOwner({ ...review })).toBe(false) + expect(isCompletePRCheckOwner(projectPRCheckOwner(review, { ...review, headSha: 'h2' }))).toBe( + false + ) + const full = acceptPRCheckObservation(pr, null, context)! + expect(isCompletePRCheckOwner({ ...pr, checksSummary: full.checksSummary })).toBe(false) +}) diff --git a/src/shared/github/complete-pr-check-owner.ts b/src/shared/github/complete-pr-check-owner.ts new file mode 100644 index 00000000000..d46f7daf459 --- /dev/null +++ b/src/shared/github/complete-pr-check-owner.ts @@ -0,0 +1,133 @@ +import type { CheckStatus, GitHubOwnerRepo, ProviderCheckSummary } from './pull-request-types' +import { githubRepoIdentityKey } from './repository-identity-key' +import { matchesGitHubWorkItemTarget, parseGitHubItemRepository } from './work-item-target' + +type CheckOwner = { + number?: number + url?: string + headSha?: string + prRepo?: GitHubOwnerRepo + githubRepository?: GitHubOwnerRepo + checksSummary?: ProviderCheckSummary + checksStatus?: CheckStatus + status?: CheckStatus +} +type Receipt = { + observation: object + scope: string + target: string + head: string | undefined + summary: ProviderCheckSummary | undefined + status: CheckStatus | undefined +} +export type PRCheckObservationContext = { + scope: string + complete: boolean + current: boolean + trusted?: boolean +} +const receipts = new WeakMap() + +function targetKey(owner: CheckOwner): string | undefined { + if (!owner.url || !owner.number) { + return undefined + } + const repository = owner.prRepo ?? owner.githubRepository ?? parseGitHubItemRepository(owner.url) + if ( + !repository || + !matchesGitHubWorkItemTarget( + { url: owner.url, number: owner.number, type: 'pr', prRepo: repository }, + { repository, number: owner.number, type: 'pr' } + ) + ) { + return undefined + } + return `${githubRepoIdentityKey(repository)}:${owner.number}` +} +function status(owner: CheckOwner): CheckStatus | undefined { + return owner.checksStatus ?? owner.status +} +function receipt(owner: CheckOwner): Receipt | undefined { + const proof = receipts.get(owner) + return proof && + proof.target === targetKey(owner) && + proof.head === owner.headSha && + proof.summary === owner.checksSummary && + proof.status === status(owner) + ? proof + : undefined +} + +// Receipts stay on accepted objects; neither deserialization nor borrowing a summary transfers authority. +export function markCompletePRCheckOwner(owner: T, scope: string): T { + const target = targetKey(owner) + if (target) { + receipts.set(owner, { + observation: owner, + scope, + target, + head: owner.headSha, + summary: owner.checksSummary, + status: status(owner) + }) + } + return owner +} +export function completePRCheckOwnerScope(owner: CheckOwner): string | undefined { + return receipt(owner)?.scope +} +export function isCompletePRCheckOwner(owner: CheckOwner): boolean { + return receipt(owner) !== undefined +} + +export function samePRCheckObservation(a: CheckOwner, b: CheckOwner): boolean { + const first = receipt(a) + return Boolean(first && first.observation === receipt(b)?.observation) +} +export function projectPRCheckOwner(owner: CheckOwner, projected: T): T { + const proof = receipt(owner) + if ( + proof && + proof.target === targetKey(projected) && + proof.head === projected.headSha && + proof.summary === projected.checksSummary + ) { + receipts.set(projected, { ...proof, status: status(projected) }) + } + return projected +} + +/** The existing request/selection owner decides current; this rule owns checks identity and last-good. */ +export function acceptPRCheckObservation( + next: T, + previous: CheckOwner | null | undefined, + context: PRCheckObservationContext +): (T & { checksSummary?: ProviderCheckSummary }) | null { + if (!context.current) { + return null + } + if (!context.complete) { + return next + } + const prior = previous && receipt(previous) + const supplied = context.trusted !== false && Boolean(next.headSha) && Boolean(next.checksSummary) + const keep = + !supplied && + prior && + prior.scope === context.scope && + next.headSha && + next.headSha === prior.head && + targetKey(next) === prior.target + const checksSummary = supplied ? next.checksSummary : keep ? previous?.checksSummary : undefined + const checksStatus = + checksSummary && checksSummary.state !== 'none' ? checksSummary.state : 'neutral' + const accepted = { + ...next, + checksSummary, + ...('checksStatus' in next ? { checksStatus } : {}), + ...('status' in next ? { status: checksStatus } : {}) + } + return supplied && receipt(next)?.scope === context.scope + ? projectPRCheckOwner(next, accepted) + : markCompletePRCheckOwner(accepted, context.scope) +} diff --git a/src/shared/github/complete-pr-check-test-fixture.ts b/src/shared/github/complete-pr-check-test-fixture.ts new file mode 100644 index 00000000000..7c873ca47dc --- /dev/null +++ b/src/shared/github/complete-pr-check-test-fixture.ts @@ -0,0 +1,34 @@ +export function completePRCheckGraphQLResponse( + number: number, + head: string, + contexts: Record[] = [] +): { stdout: string } { + return { + stdout: JSON.stringify({ + data: { + repository: { + pullRequest: { + number, + headRefOid: head, + commits: { + nodes: [ + { + commit: { + oid: head, + statusCheckRollup: { + contexts: { + nodes: contexts, + pageInfo: { hasNextPage: false, endCursor: null } + } + }, + checkSuites: { nodes: [], pageInfo: { hasNextPage: false, endCursor: null } } + } + } + ] + } + } + } + } + }) + } +} diff --git a/src/shared/github/pr-check-head.ts b/src/shared/github/pr-check-head.ts new file mode 100644 index 00000000000..1349683b444 --- /dev/null +++ b/src/shared/github/pr-check-head.ts @@ -0,0 +1,6 @@ +/** Only an immutable full commit ID can identify the provider read behind a check row. */ +export function normalizePRCheckHeadSha(value: unknown): string | undefined { + return typeof value === 'string' && /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(value) + ? value.toLowerCase() + : undefined +} diff --git a/src/shared/source-control/checks/pr-check-status.ts b/src/shared/source-control/checks/pr-check-status.ts index 349d8d1f2c1..0034c6a813d 100644 --- a/src/shared/source-control/checks/pr-check-status.ts +++ b/src/shared/source-control/checks/pr-check-status.ts @@ -1,4 +1,4 @@ -import { summarizeProviderChecks } from './provider-check-summary' +import { summarizeProviderChecks, type CheckOutcomeInput } from './provider-check-summary' import type { PRCheckDetail } from '../../github/check-types' import type { CheckStatus, ProviderCheckSummary } from '../../github/pull-request-types' @@ -8,12 +8,11 @@ export function derivePRCheckStatus(checks: readonly PRCheckDetail[]): CheckStat return state === 'none' ? 'neutral' : state } -type RawCheckRollup = { status?: unknown; conclusion?: unknown; state?: unknown } - -function normalizeRollupCheck(raw: RawCheckRollup, index: number): PRCheckDetail { - const status = String(raw.status ?? '').toLowerCase() - const state = String(raw.state ?? '').toLowerCase() - const conclusion = String(raw.conclusion ?? '').toLowerCase() +function normalizeRollupCheck(value: unknown): CheckOutcomeInput { + const raw = value && typeof value === 'object' ? value : {} + const status = String('status' in raw ? (raw.status ?? '') : '').toLowerCase() + const state = String('state' in raw ? (raw.state ?? '') : '').toLowerCase() + const conclusion = String('conclusion' in raw ? (raw.conclusion ?? '') : '').toLowerCase() const normalizedConclusion = conclusion === 'error' || conclusion === 'startup_failure' ? 'failure' @@ -23,20 +22,11 @@ function normalizeRollupCheck(raw: RawCheckRollup, index: number): PRCheckDetail : state === 'success' ? 'success' : '') - const isPending = - status === 'queued' || - status === 'in_progress' || - status === 'pending' || - state === 'pending' || - conclusion === 'pending' - + const observedStatus = + status || (['success', 'failure', 'error'].includes(state) ? 'completed' : 'queued') return { - name: `check-${index}`, - status: isPending ? (status === 'in_progress' ? 'in_progress' : 'queued') : 'completed', - conclusion: (isPending - ? 'pending' - : normalizedConclusion || null) as PRCheckDetail['conclusion'], - url: null + status: observedStatus, + conclusion: normalizedConclusion || null } } @@ -44,11 +34,7 @@ export function summarizePRCheckRollup(rollup: unknown): ProviderCheckSummary { if (!Array.isArray(rollup) || rollup.length === 0) { return summarizeProviderChecks([]) } - return summarizeProviderChecks( - rollup.map((raw, index) => - normalizeRollupCheck(raw && typeof raw === 'object' ? (raw as RawCheckRollup) : {}, index) - ) - ) + return summarizeProviderChecks(rollup.map(normalizeRollupCheck)) } export function derivePRCheckStatusFromRollup(rollup: unknown): CheckStatus { diff --git a/src/shared/source-control/hosted-review/hosted-review-github.ts b/src/shared/source-control/hosted-review/hosted-review-github.ts index 0624f0e539b..a50d857fb9d 100644 --- a/src/shared/source-control/hosted-review/hosted-review-github.ts +++ b/src/shared/source-control/hosted-review/hosted-review-github.ts @@ -1,8 +1,9 @@ +import { projectPRCheckOwner } from '../../github/complete-pr-check-owner' import type { HostedReviewInfo } from './hosted-review-contracts' import type { PRInfo } from '../../github/pull-request-types' export function hostedReviewInfoFromGitHubPRInfo(pr: PRInfo): HostedReviewInfo { - return { + const review: HostedReviewInfo = { provider: 'github', number: pr.number, title: pr.title, @@ -24,4 +25,5 @@ export function hostedReviewInfoFromGitHubPRInfo(pr: PRInfo): HostedReviewInfo { : {}), ...(pr.conflictSummary ? { conflictSummary: pr.conflictSummary } : {}) } + return projectPRCheckOwner(pr, review) } diff --git a/src/shared/source-control/runtime/source-control-runtime-capabilities.ts b/src/shared/source-control/runtime/source-control-runtime-capabilities.ts index a272fc08979..aa903c3d264 100644 --- a/src/shared/source-control/runtime/source-control-runtime-capabilities.ts +++ b/src/shared/source-control/runtime/source-control-runtime-capabilities.ts @@ -1,3 +1,5 @@ +export const GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY = + 'github.complete-pr-check-observation.v1' as const export const GITHUB_MARK_PR_READY_RUNTIME_CAPABILITY = 'github.markPRReadyForReview' as const export const GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY = 'github.exact-work-item-target.v1' as const @@ -18,6 +20,7 @@ export const ANTIGRAVITY_CONFIGURED_MODEL_RUNTIME_CAPABILITY = 'git.antigravity-configured-model.v1' as const export const SOURCE_CONTROL_RUNTIME_CAPABILITIES = [ + GITHUB_COMPLETE_PR_CHECK_OBSERVATION_CAPABILITY, GITHUB_EXACT_WORK_ITEM_TARGET_RUNTIME_CAPABILITY, ANTIGRAVITY_CONFIGURED_MODEL_RUNTIME_CAPABILITY, GITHUB_MARK_PR_READY_RUNTIME_CAPABILITY,