Sync v1.28.1 release bookkeeping#3677
Conversation
Co-authored-by: openhands <openhands@all-hands.dev>
Python API breakage checks — ✅ PASSEDResult: ✅ PASSED |
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
all-hands-bot
left a comment
There was a problem hiding this comment.
⚠️ QA Report: PASS WITH ISSUES
Release bookkeeping behavior was verified end-to-end: local installs, workflow-dispatch default parsing, and the live agent-server /server_info endpoint all move from 1.28.0/v1.28.0 on main to 1.28.1/v1.28.1 on this PR.
Does this PR achieve its stated goal?
Partially. Yes, the functional bookkeeping goal is met: after applying the PR, all four editable distributions install as 1.28.1, run-eval.yml exposes sdk_ref default v1.28.1, /server_info reports every package version as 1.28.1, and PyPI confirms 1.28.1 exists for all four packages. However, the PR is not merge-ready as a way to “land” that bookkeeping because CI currently rejects package version changes from this non-release branch/title, and the PR-description validator also fails on human-only template fields.
| Phase | Result |
|---|---|
| Environment Setup | ✅ uv sync --frozen succeeded; no tests/linters/pre-commit were run locally. |
| CI Status | Check package versions and Validate PR description are failing; several build/tool checks were still pending when refreshed. |
| Functional Verification | ✅ Package metadata, workflow default, live server info, and PyPI release availability match 1.28.1. |
Functional Verification
Test 1: Installed package metadata and run-eval workflow default
Step 1 — Establish baseline on origin/main:
Ran git switch --detach origin/main && uv sync --frozen && uv run --frozen python ... to query installed distributions via importlib.metadata and parse the workflow YAML with yaml.BaseLoader:
Installed distribution versions:
openhands-sdk=1.28.0
openhands-tools=1.28.0
openhands-workspace=1.28.0
openhands-agent-server=1.28.0
run-eval workflow_dispatch sdk_ref default=v1.28.0
This confirms the base branch still exposes the old release bookkeeping values.
Step 2 — Apply the PR changes:
Checked out chore/sync-v1-28-1-bookkeeping at dc35ee38336466719c743acc72155a6ed859c378 and re-ran uv sync --frozen.
Step 3 — Re-run with the PR in place:
Ran the same metadata/workflow query:
Installed distribution versions:
openhands-sdk=1.28.1
openhands-tools=1.28.1
openhands-workspace=1.28.1
openhands-agent-server=1.28.1
run-eval workflow_dispatch sdk_ref default=v1.28.1
This shows the user-visible installed package metadata and manual workflow default now match the intended patch release.
Test 2: Live agent-server /server_info reports synchronized versions
Step 1 — Establish baseline on origin/main:
Started the server with uv run --frozen python -m openhands.agent_server --host 127.0.0.1 --port 8765 and requested GET /server_info:
{"version":"1.28.0","sdk_version":"1.28.0","tools_version":"1.28.0","workspace_version":"1.28.0"}This confirms the running server exposes the old package versions to clients on the base branch.
Step 2 — Apply the PR changes:
Checked out the PR branch, synced the environment, restarted the same server command, and hit the same endpoint.
Step 3 — Re-run with the PR in place:
The live endpoint returned:
{"version":"1.28.1","sdk_version":"1.28.1","tools_version":"1.28.1","workspace_version":"1.28.1"}This confirms the actual server users/clients would call now reports synchronized 1.28.1 versions across server, SDK, tools, and workspace packages.
Test 3: Referenced patch release exists on PyPI
After applying the PR, queried the PyPI JSON API for each package at 1.28.1:
openhands-sdk 1.28.1 PyPI status=200
openhands-tools 1.28.1 PyPI status=200
openhands-workspace 1.28.1 PyPI status=200
openhands-agent-server 1.28.1 PyPI status=200
This supports the PR description’s claim that the bookkeeping matches an already-published patch release.
CI failure evidence
Check package versions currently fails with:
Package version changes are only allowed in release PRs. Detected changes: openhands-sdk (1.28.0 -> 1.28.1), openhands-tools (1.28.0 -> 1.28.1), openhands-workspace (1.28.0 -> 1.28.1), openhands-agent-server (1.28.0 -> 1.28.1). Use the Prepare Release workflow so the PR title is 'Release vX.Y.Z' or the branch is 'rel-X.Y.Z'.
Validate PR description currently fails with:
The first visible line of the PR description must be `HUMAN:`.
Add a short human-written note between `HUMAN:` and the human-tested checkbox.
Keep the `- [ ] A human has tested these changes.` checkbox in the PR description.
Keep the `AGENT:` marker from the PR template.
Keep the `## Why` section from the PR template.
Keep the `## How to Test` section from the PR template.
Issues Found
- 🟠 Issue:
Check package versionsblocks these version bumps because the PR is intentionally not using the release PR title/branch convention. A maintainer needs to either route this through the expected release naming/branch path or adjust/override the guard for this bookkeeping-only case. - 🟠 Issue:
Validate PR descriptionis failing on human-only template fields. Per repo guidance, an AI agent should not fill theHUMAN:note or human-tested checkbox; a human maintainer needs to update the PR description in their own words.
This QA review was created by an AI agent (OpenHands) on behalf of the user.
| [project] | ||
| name = "openhands-sdk" | ||
| version = "1.28.0" | ||
| version = "1.28.1" |
There was a problem hiding this comment.
🟠 Important: Functional QA confirms this installs and reports as 1.28.1, but CI currently rejects package version changes on this non-release branch/title (Package version changes are only allowed in release PRs). Please either satisfy the existing release PR convention or intentionally adjust/override the guard for this bookkeeping-only path so the PR can actually land.
Summary
sdk_refinrun-eval.ymlfromv1.28.0tov1.28.1uv.lockto1.28.1, matching the already-published patch releaseContext
The v1.28.1 patch release was published from
rel-1.28.1, but that release PR was closed unmerged. This PR lands the bookkeeping that would normally come through the release PR without using arel-*branch.Validation
uv run pre-commit run --files .github/workflows/run-eval.yml openhands-agent-server/pyproject.toml openhands-sdk/pyproject.toml openhands-tools/pyproject.toml openhands-workspace/pyproject.toml uv.lockThis PR was created by an AI agent (OpenHands) on behalf of the user.
@enyst can click here to continue refining the PR
Agent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdknikolaik/python-nodejs:python3.13-nodejs22-slimgolang: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:dc35ee3-pythonRun
All tags pushed for this build
About Multi-Architecture Support
dc35ee3-python) is a multi-arch manifest supporting both amd64 and arm64dc35ee3-python-amd64) are also available if needed