Prevent skipped stable publishers and enable safe recovery / 防止稳定发布任务被跳过并支持安全恢复#6629
Merged
SivanCola merged 1 commit intoJul 18, 2026
Merged
Conversation
Problem: The stable orchestrator reported success after approval even though the CLI, npm, and Desktop publication jobs were skipped through a transitive skipped dependency. The existing recovery dispatch also could not use a workflow fix without moving the already-published tags. Root cause: Each reusable publisher joined an orchestrated guard with a deliberately skipped standalone gate. The cache guard used an explicit status condition, but its descendants did not, so GitHub propagated the skipped ancestor through the dependency chain. Recovery also checked out and executed control scripts from the old release candidate. Fix: Add explicit success conditions to every affected publication stage, keep recovery authorization and verification on protected main-v2 while building the immutable historical tag SHA, and reject non-ancestor or mismatched tag sets. Add a stable postflight that verifies required CLI/Desktop release assets and the exact npm latest version so a no-op release cannot stay green. Verification: - bash scripts/release-workflows.test.sh - go run github.com/rhysd/actionlint/cmd/actionlint@v1.7.7 -ignore 'label "windows-11-arm" is unknown' on all release workflows - bash -n on all changed release scripts - verify-stable-release-artifacts.sh against public v1.17.14 artifacts - ./scripts/cache-guard.sh - go test ./... - git diff --check
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The stable v1.17.15 orchestrator run completed green after approval, but every real CLI, npm, and Desktop publication job was skipped. The reusable workflows joined a successful orchestrator guard with a deliberately skipped standalone approval job; GitHub propagated that skipped ancestor beyond the cache guard because the publication descendants had no explicit status condition.
The documented workflow_dispatch recovery path was also ineffective after a workflow fix: it checked out and executed control scripts from the old release tag and required that tag to remain current main-v2.
Broken run: https://github.com/esengine/DeepSeek-Reasonix/actions/runs/29622254856
Fix
Recovery
After this PR merges, dispatch Release stable from protected main-v2 with tag v1.17.15. It will retain the existing v1.17.15, npm-v1.17.15, and desktop-v1.17.15 tag targets, request one release-environment approval, build the original candidate SHA, and verify every public artifact at the end. No tag movement or recreation is required.
Verification
Compatibility and cache
Cache impact: none. No provider-visible prompt, tool schema/order, request serialization, compaction, memory, or provider code changed. The cache guard remains green.