{ "version": 2, "id": "D16", "kind": "synthetic-chat", "origin": "synthetic", "actors": [ "Dev", "Fay", "Uma" ], "initialDocument": "", "steps": [ { "id": "m1", "kind": "say", "actor": "Dev", "text": "the webhook worker retries bad signatures even though they'll never work.", "to": "room" }, { "id": "m2", "kind": "say", "actor": "Fay", "text": "right now we retry every failure three times. the other extreme is no automatic retry, just manual replay.", "to": "room" }, { "id": "m3", "kind": "say", "actor": "Dev", "text": "neither quite works: for a bad signature, no retry. for timeouts we should retry.", "to": "room" }, { "id": "c3", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 }, { "id": "m4", "kind": "say", "actor": "Fay", "text": "classify failures, then? backoff for transient ones, DLQ after five, invalid signatures fail immediately.", "to": "room" }, { "id": "c4", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 }, { "id": "m5", "kind": "say", "actor": "Uma", "text": "yes. exponential backoff plus DLQ after five transient failures; invalid signatures fail immediately.", "to": "room" }, { "id": "c5", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 }, { "id": "m6", "kind": "say", "actor": "Dev", "text": "that's the policy I'd pick.", "to": "room" }, { "id": "c6", "kind": "checkpoint", "waitFor": "settled", "deadlineMs": 30000 } ] }