Prevent queued tagged releases from cancelling each other
Reported: starting ruststreamer and local-streamer releases cancelled local-streamer. Verified Gitea 1.27.3-cloud runs: cloud-router 4090 active; local-streamer 4091 created 10:15:28 UTC and cancelled before runner assignment at 10:15:44; ruststreamer 4092 created at 10:15:44 and waited. All use global streaming-releases concurrency group with cancel-in-progress:false, which retains only one pending entry. Repository runner API shows exactly one streaming-release runner; read-only CI host inspection confirms capacity:1. Preserve serialized builds and shared BuildKit state while allowing all tagged jobs to remain queued. Remove workflow concurrency, rely explicitly on the sole capacity-one release runner, update maintenance guidance, and add a regression guard without adding dependencies. New fix branch from origin/main after merged PR #135. Do not retry/publish/deploy releases or change the live runner without explicit authorization. Validation: regression fails against current main, passes after fix; release/deployment tests and YAML/config checks pass. Live multi-tag acceptance remains unverified until future releases; old tags retain old workflow and cancelled 4091 must be retried only once old concurrency group is idle. Implemented locally on fix/preserve-queued-releases from origin/main c0aa428 (merged PR #135), with no unrelated changes. Removed only global workflow concurrency, preserved streaming-release runs-on, capacity-one runner and retained BuildKit state. Updated deployment documentation to require exactly one matching runner at capacity one, explain pending replacement and old-tag retry limitations, and require separate coordination before adding runners. Added two stdlib unittest regression guards for absence of workflow/job concurrency and use of the capacity-one runner. Red control against original workflow fails for the concurrency block; after fix all 31 release/deployment tests pass, YAML parsed, runner/workflow settings checked, embedded shell syntax and git diff whitespace checks pass. No Rust changes, new dependencies, host configuration, release retries or deployment actions. Committed as 520cf5e (fix: Preserve queued component releases) and pushed with upstream tracking; working tree clean. All 31 deployment tests reran successfully before publication; final diff whitespace check passes. Pull request #136: https://git.kaukus.no/Kaukus/streaming-engines/pulls/136 — fix: Preserve queued component releases. Open, ready for review; head fix/preserve-queued-releases, base main. Full base comparison contains only the queue fix, maintenance guidance and regression guards across three files. Live multi-tag acceptance remains unverified. Task status unchanged by PR administration. Live statuses changed during read-only investigation: cloud-router 4090 completed successfully at 10:17:16 UTC; ruststreamer 4092 failed at 10:17:30 with 'existing version belongs to a different release; tags are immutable' for v0.1.2, a separate release identity conflict that must not be bypassed by overwriting images. local-streamer 4091 attempt 2 started 10:18:51 and was cancelled at 10:19:17 while building; logs do not establish the cause of this later cancellation. Original attempt 1 timeline remains distinct and shows replacement of a pending run. Do not claim attempt 2 never reached a runner or conflate its cancellation with the proven initial pending replacement. Fresh ruststreamer version and any retries require user action/authorization.
Checklist
2 of 2 complete- Remove lossy release concurrency, document runner serialization and verify red/green regression plus deployment tests
- Verify cancelled/waiting release timeline and live capacity-one runner configuration
- Area
- Streaming
- Project
- streaming-engines
- Kind
- Bug
- Task ID
tsk_mkmedhtn7u- Updated