Skip to content

babysit-prs (worker tier): no deterministic signal that a bot re-review round has settled (codex signals 'clean' via a 👍 reaction on the PR issue, not a review record) #550

Description

@kyle-sexton

Observed while babysitting PR #528 (worker tier, 3 cascading codex re-review rounds).

Friction

After a worker pushes a fix and the fix commit goes green in CI, it must decide: merge now, or wait because another re-review may surface a new finding. There is no deterministic "re-review settled" signal, and the two review backends behave differently:

  • When codex HAS a finding it posts a PR review record (pulls/<pr>/reviews, state COMMENTED) plus an inline comment — detectable by polling reviews for one whose commit_id == head.
  • When codex is CLEAN it posts no review record; per its own About text it "will react with 👍" — i.e. a reaction on the PR issue (issues/<pr>/reactions, content=+1, user=chatgpt-codex-connector[bot]). A worker polling pulls/<pr>/reviews for a head-SHA review therefore waits indefinitely for a signal that never arrives, and cannot distinguish "still reviewing" from "reviewed, no findings".

There is also no per-commit correlation on the clean path: the 👍 is on the issue, not tied to a commit SHA — the worker must infer "clean for head" from the reaction created_at being after the head push time.

Impact

Worker-tier autopilot (auto-fix + gate-merge) needs to know when a re-review round is DONE to avoid either (a) merging into a pending finding, or (b) hanging on a review that will never post. Currently this is left to ad-hoc timing heuristics per worker.

Suggested direction

A shared helper (or an addition to the merge-gate / readiness surface) that reports a bot re-review as "settled" for the current head when EITHER a head-SHA review record exists OR a bot 👍 reaction on the PR issue post-dates the head-commit push time — normalizing the finding vs. clean signals across review backends (codex, claude[bot], cursor). Encode the backend-specific quirk (review record vs. issue reaction) once, so workers stop reimplementing timing heuristics.

Repro context

Category: improvement / operational.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions