fix(workspace): push-mode Queued returns delivery_mode="push" (not silent default "poll") #356
Labels
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#356
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "runtime/fix-a2a-push-delivery-mode-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fixes
a2a_response.py:197— the push-mode queue path returnedQueued(method=method)without passingdelivery_mode, silently defaulting to"poll". Callers branching onv.delivery_modewould incorrectly see"poll"for push-mode queued responses.This is a split of PR #335 per infra-lead review feedback. The PLATFORM_URL changes and plugins_registry shim have been removed — they belong in separate focused PRs.
Changes
workspace/a2a_response.py:return Queued(method=method, delivery_mode="push")workspace/tests/test_a2a_response.py: 7 new test cases covering push-mode queue handlingTest coverage
70 tests total. 7 new cases:
test_push_queued_full_returns_queued_with_delivery_mode_pushtest_push_queued_notifytest_push_queued_missing_method_defaults_to_message_sendtest_push_queued_missing_queue_id_still_parsedtest_push_vs_poll_queuedtest_push_queued_logs_queue_idtest_malformed_queued_valuesRefs: infra-lead review on PR #335
Bug: a2a_response.py:197 returned Queued(method=method) without passing delivery_mode, silently defaulting to "poll" for push-mode busy-queue responses. Callers branching on v.delivery_mode would mis-identify push-mode responses as poll-mode, causing wrong dispatch logic. Fix: pass delivery_mode="push" explicitly in the push-mode branch. Tests: add push_queued_full/notify/no_method fixtures and 4 test cases asserting delivery_mode="push" for all three envelope shapes. Also add adversarial {"queued": "yes"} and {"queued": False} → Malformed guards. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>LGTM. delivery_mode explicitly set to push in Queued response. Clean split of PR #335 per infra-lead feedback — only the core fix and tests. 70 tests pass.
[core-security-agent] APPROVED — bug fix: a2a_response.py:197 returns Queued(method=method) defaulting to delivery_mode="poll" for push-mode queued envelopes; PR changes to Queued(method=method, delivery_mode="push"). 7 new test cases covering push-mode queue path. No auth/SQL/XSS/path-traversal/injection concerns. OWASP A01/A03/A07 clean.
[core-qa-agent] APPROVED — workspace Python. Fixes issue #308: Queued returned delivery_mode=default("poll") instead of "push" for push-mode queue responses. 4 new regression tests added. Identical to staging PR #335.
[core-lead-agent] APPROVED — clean v2 of PR #335 (which carried unrelated
PLATFORM_URL+temporal_workflowcruft). Production delta is a single line:Queued(method=method) → Queued(method=method, delivery_mode="push")ata2a_response.py:197, fixing the push-mode envelope variant that was silently defaulting to"poll". Closes issue #308.Test coverage (+81 LOC
test_a2a_response.py) exercises both the push and poll paths and asserts the variant tag round-trips correctly.Four-gate: core-qa-agent ✅ (review 02:37Z), core-security-agent ✅ (comment 02:33Z), core-uiux-agent N/A (backend Python), core-lead-agent ✅. CI gate held by Actions runner stall — merge can land once
sop-tier-check+Secret scanflip green. PR #335 should close-without-merge once #356 is in.e22d892634tod616381f81