mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-26 21:47:20 +00:00
d897fc52ce
The first beta's release workflow failed in create_release at "Locate existing release". That step reads up to 100 releases with every asset, about 25 MB, in one call, and GitHub answered it with an HTTP 504. The step has no pipefail, so the failed read reached jq as empty input and the job ended with exit code 5. Timing the call from a workstation, one of three tries returned an error body, so this is not rare. Retry the read up to five times with the same backoff the asset upload uses, and accept only a complete listing of valid pages. A failed or truncated read must never look like "no existing release": that answer would stage a duplicate draft for a tag that already has one. Exhausting the attempts fails the job with an explicit error. The listing call and the downstream handling of an existing draft are unchanged. Run the real step script in the release policy test against doubles for gh and sleep: two 504s then a complete listing finds the draft after backoff of 15s and 30s; a read that exits 0 but is truncated every time fails after five attempts, with the capped backoff and no outputs; and a complete listing without the tag still means no existing release. Against the previous step the test fails with the production symptom, exit 5 and the 504 message. The create-release pin list and the contract record the retry. Contract-Neutral: Release workflow reliability only; no published artifact, tag, signing, install or customer contract changes.