feat: opt-in "dangerous" flag for upgrades.json removals#39
Merged
Conversation
Set top-level "dangerous": true in upgrades.json to downgrade the removal-diff guard in validate-config.sh from an error to a warning, so a PR can intentionally retire an entry. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
"dangerous": truefield toupgrades.json.validate-config.shreports removed contract entries as a warning (with::warning::annotation + step-summary note) instead of erroring out.false(or drop it) in a follow-up PR to re-arm the guard.The flag is read from the PR's config (not base), so the escape hatch only applies to PRs that explicitly set it.
Test plan
dangerous: true→ upgrade-config job fails with an error, summary points the user at the flag.dangerous: true→ upgrade-config job succeeds with a warning annotation and warning summary.dangerousvalue.dangerous(string"true", number1, etc.) is treated as not set — usesjq '.dangerous == true'for strict boolean check.🤖 Generated with Claude Code