Skip to content

Push notifications: config accepted but webhook never delivered on task completion #61

@mabry1985

Description

@mabry1985

Symptom

Workstacean registers a push-notification callback via `tasks/pushNotificationConfig/set` — Quinn accepts (no error). But when the task reaches terminal state, Quinn never POSTs to the callback URL. Workstacean falls back to polling (30s cadence) to detect completion.

Compare with the researcher agent which now delivers via webhook:
```

Researcher ✅

[task-tracker] Callback for e414b4c8… → terminal state "completed" (via webhook)

Quinn ❌

[task-tracker] Task 513e2950… reached terminal state "completed" after 36s
```

What needs to happen

On terminal state transition (`completed`, `failed`, `canceled`), Quinn should:

  1. Check if a `pushNotificationConfig` exists for the task
  2. POST the full Task JSON to `config.url` with `Authorization: Bearer <config.token>`
  3. Fire-and-forget (retain the `asyncio.Task` handle per the hardening guide — weak ref GC trap)
  4. Retry once on transient failure (network blip); drop on 4xx

Reference: Build an A2A Agent — Push notifications and Task store hardening #2.

Impact

Without webhook delivery, every Quinn task uses 30s-cadence polling. Functional but adds 15s average latency to result delivery and burns polling round-trips that push eliminates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions