fix(deps): raise molecule-ai-workspace-runtime floor to >=0.1.129 (closes internal#424) #5

Merged
devops-engineer merged 1 commits from fix/runtime-pin-floor-a2a-queued-parser into main 2026-05-15 22:54:39 +00:00

Summary

Raises the molecule-ai-workspace-runtime floor in codex-channel-molecule from >=0.1.110 to >=0.1.129 so a fresh pip install always resolves to a wheel that ships the SSOT A2A response parser. Pre-0.1.129 the runtime's inline parser misclassified the poll-mode success envelope {"status":"queued","delivery_mode":"poll","method":"message/send"} as malformed and surfaced [A2A_ERROR] unexpected response shape (no result, no error) on every reply, which then propagated to canvas as the workspace's task label and triggered a ~3s retry storm.

Diagnosis

  • The dispatcher-side bug already shipped fixed upstream in molecule-core/workspace/a2a_response.py (commit 8b9f8099, runtime 0.1.129+).
  • The canvas-visible symptom on hongming's mac-laptop-codex (workspace 11726c77-…) reproduces because the laptop has runtime 0.1.18 installed — well below this repo's >=0.1.110 pin, but pip happily accepts that pre-existing install.
  • Latest PyPI is 0.1.1000; the SSOT parser landed in 0.1.129 (verified by downloading each wheel and grepping for a2a_response.py + _A2A_QUEUED_PREFIX).
  • tool_delegate_task in a2a_tools_delegation.py then short-circuits the poll-mode case to the durable /delegate + /delegations polling path, which is the correct synchronous facade for peers without a public URL.

Why pin instead of code patch

codex-channel-molecule itself doesn't parse A2A responses — it just calls into molecule_runtime.a2a_tools.tool_delegate_task. The parser lives one repo over, was already fixed, and ships via the existing publish-runtime cascade. The only thing left on the dispatcher (this wrapper) is to ensure a clean install pulls in a runtime version that has the fix.

Bumps

  • version: 0.1.20.1.3 (so a re-publish carries the new floor downstream)
  • molecule-ai-workspace-runtime: >=0.1.110>=0.1.129
  • Adds tests/test_runtime_dependency_floor.py (2 regression tests) so a future dependency-housekeeping pass can't silently lower the floor again.

Test plan

  • pytest -q — 33 passed including 2 new regression tests
  • python3 -c "from molecule_runtime import a2a_response; print(a2a_response.parse({'status':'queued','delivery_mode':'poll','method':'message/send'}))" against PyPI 0.1.1000 wheel returns Queued(method='message/send', delivery_mode='poll') — not Malformed.
  • Tightened-test FAILS under the old >=0.1.110 pin (verified by temporary revert)
  • After merge + republish, hongming runs pip install --upgrade codex-channel-molecule on the laptop and restarts the daemon — canvas should stop flapping the [A2A_ERROR] label.

Followup

  • Hongming's laptop is still running runtime 0.1.18. Once this lands and republishes, an explicit pip install -U codex-channel-molecule (or molecule-ai-workspace-runtime) on his end is required to pick up the fix. No remote action taken — read-only diagnosis only.
  • The underlying codex exec exit=1 empty-stdout issue on the laptop is a Hongming-end env issue and out of scope here.

Closes molecule-ai/internal#424.

## Summary Raises the `molecule-ai-workspace-runtime` floor in `codex-channel-molecule` from `>=0.1.110` to `>=0.1.129` so a fresh `pip install` always resolves to a wheel that ships the SSOT A2A response parser. Pre-0.1.129 the runtime's inline parser misclassified the poll-mode success envelope `{"status":"queued","delivery_mode":"poll","method":"message/send"}` as malformed and surfaced `[A2A_ERROR] unexpected response shape (no result, no error)` on every reply, which then propagated to canvas as the workspace's task label and triggered a ~3s retry storm. ## Diagnosis - The dispatcher-side bug **already shipped fixed upstream** in `molecule-core/workspace/a2a_response.py` (commit `8b9f8099`, runtime 0.1.129+). - The canvas-visible symptom on hongming's `mac-laptop-codex` (workspace `11726c77-…`) reproduces because the laptop has runtime **0.1.18** installed — well below this repo's `>=0.1.110` pin, but `pip` happily accepts that pre-existing install. - Latest PyPI is `0.1.1000`; the SSOT parser landed in `0.1.129` (verified by downloading each wheel and grepping for `a2a_response.py` + `_A2A_QUEUED_PREFIX`). - `tool_delegate_task` in `a2a_tools_delegation.py` then short-circuits the poll-mode case to the durable `/delegate` + `/delegations` polling path, which is the correct synchronous facade for peers without a public URL. ## Why pin instead of code patch `codex-channel-molecule` itself doesn't parse A2A responses — it just calls into `molecule_runtime.a2a_tools.tool_delegate_task`. The parser lives one repo over, was already fixed, and ships via the existing publish-runtime cascade. The only thing left on the dispatcher (this wrapper) is to ensure a clean install pulls in a runtime version that *has* the fix. ## Bumps - `version`: `0.1.2` → `0.1.3` (so a re-publish carries the new floor downstream) - `molecule-ai-workspace-runtime`: `>=0.1.110` → `>=0.1.129` - Adds `tests/test_runtime_dependency_floor.py` (2 regression tests) so a future dependency-housekeeping pass can't silently lower the floor again. ## Test plan - [x] `pytest -q` — 33 passed including 2 new regression tests - [x] `python3 -c "from molecule_runtime import a2a_response; print(a2a_response.parse({'status':'queued','delivery_mode':'poll','method':'message/send'}))"` against PyPI 0.1.1000 wheel returns `Queued(method='message/send', delivery_mode='poll')` — not Malformed. - [x] Tightened-test FAILS under the old `>=0.1.110` pin (verified by temporary revert) - [ ] After merge + republish, hongming runs `pip install --upgrade codex-channel-molecule` on the laptop and restarts the daemon — canvas should stop flapping the `[A2A_ERROR]` label. ## Followup - Hongming's laptop is still running runtime 0.1.18. Once this lands and republishes, an explicit `pip install -U codex-channel-molecule` (or `molecule-ai-workspace-runtime`) on his end is required to pick up the fix. **No remote action taken — read-only diagnosis only.** - The underlying `codex exec exit=1 empty-stdout` issue on the laptop is a Hongming-end env issue and out of scope here. Closes molecule-ai/internal#424.
infra-runtime-be added 1 commit 2026-05-15 22:45:56 +00:00
fix(deps): raise molecule-ai-workspace-runtime floor to >=0.1.129
All checks were successful
CI / test (3.11) (pull_request) Successful in 2m10s
CI / test (3.12) (pull_request) Successful in 2m10s
06739ba9e0
Pre-0.1.129 the runtime's inline A2A response sniffer in
``send_a2a_message`` checked only for ``result`` / ``error`` keys and
routed the poll-mode success envelope —
``{"status": "queued", "delivery_mode": "poll", "method": "..."}`` —
to the malformed branch:

    [A2A_ERROR] unexpected response shape (no result, no error): {...}

That string then propagated through ``tool_delegate_task`` into the
caller workspace's activity row, surfacing on canvas as the workspace's
task label and triggering a ~3s retry storm.

0.1.129 introduced ``a2a_response.py`` (SSOT typed parser with explicit
``Queued`` variant) + matching ``_A2A_QUEUED_PREFIX`` handling in
``a2a_tools_delegation.tool_delegate_task`` that falls back to the
durable ``/delegate`` + ``/delegations`` polling path — the correct
synchronous facade for poll-mode peers.

The existing ``>=0.1.110`` pin allowed a fresh ``pip install
codex-channel-molecule`` to resolve to a buggy wheel and reproduce the
incident. Raising the floor to 0.1.129 closes that window.

Adds a ``test_runtime_dependency_floor.py`` regression test that
parses ``pyproject.toml`` and asserts the lower bound stays at or
above 0.1.129 — bumps the version to 0.1.3 so a republish carries the
floor downstream.

Closes molecule-ai/internal#424.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
core-devops approved these changes 2026-05-15 22:53:26 +00:00
core-devops left a comment
Member

LGTM — dependency-floor bump matches the runtime version that introduced the SSOT A2A response parser (a2a_response.py + _A2A_QUEUED_PREFIX). Test suite passes (33), and the new regression test correctly fails when the floor is lowered. Pin-only change; no runtime code edits.

LGTM — dependency-floor bump matches the runtime version that introduced the SSOT A2A response parser (a2a_response.py + _A2A_QUEUED_PREFIX). Test suite passes (33), and the new regression test correctly fails when the floor is lowered. Pin-only change; no runtime code edits.
devops-engineer merged commit d57392df4d into main 2026-05-15 22:54:37 +00:00
devops-engineer deleted branch fix/runtime-pin-floor-a2a-queued-parser 2026-05-15 22:55:16 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: molecule-ai/codex-channel-molecule#5
No description provided.