Repository navigation
fix(ci): let triage and repository writers own readiness - #5212
Conversation
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
|
Live confirmation of the conflict this PR removes: on SDK issue #5225, issue triage posted two unresolved design questions and explicitly withheld |
all-hands-bot
left a comment
There was a problem hiding this comment.
This review was posted by an AI agent (OpenHands).
Review summary
Scope is an in-repository GitHub Actions label policy change: .github/workflows/issue-readiness-check.yml now acts only as a permission guard, and the superseded readiness evaluator, feedback commenter, and their tests are removed. Repository-owned CI/workflow policy belongs in this repository, so no repository move is warranted.
Linked issue #5211 (enhancement, priority:high, ready-for-dev, open) is the source of the acceptance criteria. All of its criteria are met on this head:
- Authorized actors (
write/maintain/admin) retainready-for-dev; the permission API mapsmaintain->writeandtriage->read, soread/triage/nonefall through to removal. - No bot-specific exception:
all-hands-botis an ordinary user withwriteon this repository, so it is retained by the same generic rule. - The workflow never adds the label and no longer evaluates issue content independently.
- Linked-PR gate refreshes are preserved for authorized additions (labeled -> refresh) and external removals (unlabeled -> refresh). The one path that skips a refresh is the auto-removal of an unauthorized addition; that path can only run when the label was absent immediately beforehand, so the resulting label state equals the pre-event state and a re-run of the gate would be equivalent. Behavior is consistent.
- The removed evaluator/commenter have no remaining callers.
- Least privilege is preserved/improved: per-job
issues: writefor the policy job andcontents/pull-requestsread plusactions: writefor the refresh job.
Verification performed on head 901f072
- Head SHA matches; PR is open with no prior reviews or review threads; linked issue state/labels re-read immediately before posting and unchanged.
- Current-head CI: 28 checks successful, 2 skipped (artifact cleanup jobs), none failing or pending.
- Focused tests pass:
uv run pytest -q tests/cross/test_check_pr_description.py tests/cross/test_refresh_linked_pr_checks.py-> 26 passed. - No dangling references to
.github/scripts/check_issue_readiness.pyor.github/scripts/post-readiness-comment.mjs;.github/scripts/markdown_sections.pyis retained and still consumed bycheck_pr_description.py. - Workflow YAML parses; job outputs gate the refresh job correctly.
- Actor/repository/issue values are passed to the shell through
env, not interpolated${{ }}insiderun:, so there is no script-injection surface. - Collaborator-permission lookup against the API confirms the
write|maintain|admincase behaves as intended for this repository's actors.
Non-blocking residual risk: the retention decision depends on the running Actions environment and the collaborator-permission API, which cannot be exercised before merge. Confirm the live behavior after merge as the PR notes.
✅ APPROVED
HUMAN:
This hasn't been tested but will be upon merge.
AGENT:
Why
The issue-triage automation already vets scope and acceptance criteria and applies
ready-for-devusing an account with repository write access. Repository writers must also be able to record an explicit readiness decision. The current workflow independently reevaluates either decision and can reverse it.Summary
ready-for-devwhen GitHub reports the applying actor haswrite,maintain, oradminpermissionIssue Number
Closes #5211
How to Test
uv run pytest -q tests/cross/test_check_pr_description.py tests/cross/test_refresh_linked_pr_checks.py(26 passed).github/workflows/issue-readiness-check.ymlwith PyYAML and verified the label-policing job has onlyissues: writeall-hands-bothaswritepermission on all four repositoriesVideo/Screenshots
Not applicable; this changes GitHub issue-label policy.
Design Doc
Not needed for this workflow simplification.
Type
Notes
The live issue-triage automation covers
OpenHands/software-agent-sdkand receivesunlabeledevents. TheHUMAN:section remains untouched.🐳 Agent Server images for this PR — GHCR package, pull/run commands, and all pushed tags (click to expand)
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdkpython-node-runtimepython-node-runtimepython-node-runtimegolang:1.21-bookwormPull (multi-arch manifest)
# Each variant is a multi-arch manifest supporting both amd64 and arm64 docker pull ghcr.io/openhands/agent-server:901f072-pythonRun
All tags pushed for this build
About Multi-Architecture Support
901f072-python) is a multi-arch manifest supporting both amd64 and arm64901f072-python-amd64) are also available if needed