continuous-integration/drone/push Build is failing
The canonical is last-GREEN, not CURRENT. Its promotion (WC5) deploys a warm-<recipe> app and health-checks it; when that fails the canonical stays pinned at an old release indefinitely — and the failure is invisible to the upgrade tier, which keeps basing on it. Live evidence (2026-08-10): gitea's canonical was 3.5.3+1.24.2-rootless from 2026-06-17 because warm-gitea crash-loops on a read-only app.ini (open fix: recipe PR #4). Four other recipes are in the same state — the 2026-08-09 sweep logged GREEN-BUT-PROMOTE-FAILED for bluesky-pds, drone, gitea, lasuite-drive and lasuite-meet. Consequence: the upgrade tier tested 3.5.3 -> head, a transition no deployment performs, and MISSED the one they do. 3.5.3 -> head crosses an APP_INI_VERSION change (v21 -> v22) so Swarm creates a fresh config object; the real 3.6.1 -> 3.6.2 upgrade keeps v22 and aborts on Swarm's immutable-config rule ('only updates to Labels are allowed'). That shipped in 3.6.2 and broke every existing install taking the 1.27.1 security release. Now: when the newest published release older than head is NEWER than the canonical, use the release and say so in the log (naming the stale canonical so the promote failure gets noticed). Resolution stays dynamic; UPGRADE_BASE_FLOOR still filters structurally-invalid candidates; the canonical remains the base whenever it is current. Unit-verified on the real gitea tag set: base moves 3.5.3+1.24.2-rootless -> 3.6.1+1.26.2-rootless, exactly the transition that reproduces the break.