From cea1d76bcf0eb267a5269c76e62b53b1e6f5a4a1 Mon Sep 17 00:00:00 2001 From: John Coffey Date: Wed, 7 Oct 2026 10:24:23 -0700 Subject: [PATCH] discourse-release: treat "External has already been taken" as already announced Discourse words the duplicate external_id refusal "External has already been taken", which the "External ID" check missed, so the second of two racing announce jobs failed on a topic that was already posted (inbuxa-server v2026.10.6.3). The title check can also trip first. Claude-Session: https://claude.ai/code/session_01Sc5H1nCCVgNuqmLspJpsYn --- discourse-release/announce.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/discourse-release/announce.sh b/discourse-release/announce.sh index 41ffc89..701022f 100755 --- a/discourse-release/announce.sh +++ b/discourse-release/announce.sh @@ -57,7 +57,9 @@ case "$status" in url="$FORUM/t/$(jq -r '.topic_slug' <<<"$body")/$(jq -r '.topic_id' <<<"$body")" echo "announced: $url" ;; 422) - if jq -e '.errors | tostring | test("External ID"; "i")' <<<"$body" >/dev/null; then + # Discourse words this "External has already been taken" (older versions: + # "External ID ..."); a racing run can also hit the title check first. + if jq -e '.errors | tostring | test("External( ID| has already been taken)|title has already been used"; "i")' <<<"$body" >/dev/null; then echo "already announced (external_id $external_id); nothing to do" exit 0 fi -- 2.54.0