{ "name": "event.task.state \u2014 a task fails on a dead link", "description": "Carries the summary so the row repaints in full, and the error whenever the new state is failed or retry_wait.", "notification": { "jsonrpc": "2.0", "method": "event.task.state", "params": { "taskId": "3f7a2b1c-5d6e-4f80-9a1b-2c3d4e5f6071", "state": "failed", "previousState": "downloading", "summary": { "taskId": "3f7a2b1c-5d6e-4f80-9a1b-2c3d4e5f6071", "filename": "ubuntu-26.04-desktop-amd64.iso", "saveDir": "/home/sami/Downloads/Programs", "url": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "effectiveUrl": "https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso", "sizeBytes": 6228541440, "downloadedBytes": 0, "state": "failed", "speedBps": 0, "etaSeconds": null, "resumable": true, "segments": 8, "categoryId": "programs", "queueId": null, "queuePosition": null, "description": null, "createdAt": "$isoDate", "lastTryAt": "$isoDate", "completedAt": null, "error": { "code": -32013, "message": "HTTP 404 on resume", "httpStatus": 404, "retryable": false, "attempt": 3, "nextRetryAt": null } }, "error": { "code": -32013, "message": "HTTP 404 on resume", "httpStatus": 404, "retryable": false, "attempt": 3, "nextRetryAt": null } } }, "assertions": [ "error is present exactly when state is failed or retry_wait", "retryable false means the scheduler will not pick this up again on its own" ] }