Skip to content

[plan] Implement dedicated outcome evaluators for create_pull_request and push_to_pull_request_branch #35037

@github-actions

Description

@github-actions

Objective

Implement type-specific outcome evaluators for create_pull_request and push_to_pull_request_branch — the highest-priority safe output types per issue #35033.

Context

Depends on the shared outcome model and metadata persistence (steps 1 and 2 of #35033). PRs and branch pushes provide the clearest human-check signals and highest research value.

Approach

create_pull_request evaluator

Check post-creation PR state to classify outcomes:

  • accepted (strong): PR merged into target branch
  • accepted (medium): PR has approved review and no requested changes
  • rejected (strong): PR closed without merge + closing comment or label
  • rejected (medium): PR closed without merge
  • pending: PR is open with no reviews
  • ignored: PR is open but stale (no activity for configurable threshold)
  • unknown: fallback

push_to_pull_request_branch evaluator

Use persisted before-state HEAD SHA to classify:

  • accepted (strong): PR merged, pushed commits included
  • accepted (medium): pushed commits are still HEAD on branch
  • rejected (strong): commits were force-pushed away or branch was reset
  • rejected (medium): PR closed without merge
  • pending: PR open, no review on pushed commits yet
  • unknown: fallback

Files to Modify

  • Outcome evaluator module (likely actions/setup/js/)
  • Add dedicated evaluator functions for each type
  • Add tests covering all outcome classifications for each type

Acceptance Criteria

  • create_pull_request evaluator classifies merged PRs as accepted (strong)
  • create_pull_request evaluator classifies closed-without-merge PRs as rejected
  • push_to_pull_request_branch evaluator detects retained vs reverted commits
  • No existence-only check counts as accepted
  • Tests cover all outcome branches for both evaluators
  • make agent-finish passes

Generated by 📋 Plan Command · sonnet46 949.9K ·

  • expires on May 28, 2026, 8:13 PM UTC

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions