MCPcopy Create free account
hub / github.com/github/gh-aw / evalSubmitPullRequestReview

Function evalSubmitPullRequestReview

pkg/cli/outcome_eval_review.go:157–270  ·  view source on GitHub ↗
(item CreatedItemReport, repoOverride string)

Source from the content-addressed store, hash-verified

155}
156
157func evalSubmitPullRequestReview(item CreatedItemReport, repoOverride string) OutcomeReport {
158 repo := resolveItemRepo(item, repoOverride)
159 num := resolveItemNumber(item)
160 report := OutcomeReport{
161 Type: item.Type,
162 ObjectURL: item.URL,
163 ObjectNumber: num,
164 Repo: repo,
165 }
166 outcomeReviewLog.Printf("Evaluating submit-review outcome: repo=%s, pr=%d", repo, num)
167 if num == 0 || repo == "" {
168 report.Result = OutcomeError
169 report.EvalError = "missing PR number or repo"
170 return report
171 }
172
173 pr, err := outcomeReviewGHAPIGet(fmt.Sprintf("pulls/%d", num), repo)
174 if err != nil {
175 report.Result = OutcomeError
176 report.EvalError = err.Error()
177 return report
178 }
179 reviews, err := outcomeReviewGHAPIGetArray(fmt.Sprintf("pulls/%d/reviews", num), repo)
180 if err != nil {
181 report.Result = OutcomeError
182 report.EvalError = err.Error()
183 return report
184 }
185
186 reviewID := metadataInt(item.Metadata, "review_id")
187 review := findReviewByID(reviews, reviewID)
188 if review == nil {
189 review = latestReviewAfterTimestamp(reviews, item.Timestamp)
190 }
191 if review == nil {
192 outcomeReviewLog.Printf("Submitted review not found for PR #%d (reviewID=%d, reviews=%d)", num, reviewID, len(reviews))
193 report.Result = OutcomeUnknown
194 report.Detail = "submitted review not found"
195 report.OutcomeEvaluation = OutcomeEvaluation{
196 OutcomeStatus: OutcomeStatusUnknown,
197 EvidenceStrength: EvidenceWeak,
198 Signal: "review_missing",
199 }
200 return report
201 }
202
203 reviewState := strings.ToUpper(outcomeString(review["state"]))
204 reviewSubmittedAt := outcomeString(review["submitted_at"])
205 prMerged, _ := pr["merged"].(bool)
206 prState, _ := pr["state"].(string)
207
208 switch {
209 case reviewState == "DISMISSED": //nolint:tolowerequalfold
210 report.Result = OutcomeRejected
211 report.Detail = "review dismissed by repo admin"
212 report.OutcomeEvaluation = OutcomeEvaluation{
213 OutcomeStatus: OutcomeStatusRejected,
214 EvidenceStrength: EvidenceStrong,

Calls 11

resolveItemRepoFunction · 0.85
resolveItemNumberFunction · 0.85
metadataIntFunction · 0.85
findReviewByIDFunction · 0.85
outcomeStringFunction · 0.85
timeBetweenFunction · 0.85
hasCommitAfterTimestampFunction · 0.85
isLatestReviewFunction · 0.85
PrintfMethod · 0.45
ErrorMethod · 0.45