Skip to content

Protect partially completed release plans from abandonment - #17223

Merged
Helen Gao (helen229) merged 7 commits into
mainfrom
fix/17126-protect-partial-release-abandonment
Oct 27, 2026
Merged

Helen Gao (helen229) merged 7 commits into
mainfrom
fix/17126-protect-partial-release-abandonment

Conversation

@helen229

@helen229 Helen Gao (helen229) commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Protect release plans from abandonment after any SDK PR has merged or any SDK is recorded as Released.

Related: #17126. Review this guard before the stacked cleanup PR #17224.

Behavior

  • Breaking input change: manual abandonment accepts only the user-facing Release Plan ID: azsdk release-plan abandon --release-plan-id <id> / MCP releasePlanId. Its workItemId input is removed; other commands retain their existing contracts.
  • Read the plan once and check one eligibility method. Finished plans, recorded SDK releases, and live merged SDK PRs block abandonment. Open, draft, and closed-unmerged SDK PRs do not block it.
  • Validate linked PRs against the public Azure SDK repository for their recorded language. Unknown or unreadable data fails closed. Private SDK repositories are not supported.
  • Save Abandoned with the existing snapshot revision precondition. A concurrent change fails without a retry. Already abandoned plans are unchanged by this guard.
  • Partially completed releases should request language-exclusion exceptions and contact the SDK Release Support channel on Teams.

Latest reviewer follow-up

  • Replace the extra integer-lookup overload with one async method and optional includeAbandoned = false; preserve existing callers' filtering and cancellation behavior.
  • Remove private-repository rewriting and slash-based URL parsing. Use an anchored, timeout-bounded regex with the expected language repository and a positive Int32 PR number; deduplicate validated links.
  • Update mocks and compatibility tests for the optional argument, and clarify Teams support guidance.
  • Integrate current main normally, preserve its Private Preview fix, and retain published changelog history byte-for-byte. Whole PR: 17 files.

Validation

  • Full offline Debug CLI suite: 3,538 passed, 32 not executed, zero failures.
  • Dedicated mock suite: 83 passed. The 684 focused tests are included in the full CLI count.
  • Strict Release solution build and packaging passed. The actual 0.6.55 packaged-changelog check and MCP instruction-reference validator passed.
  • The unchanged repository guide-link checker passed with normal link-guidance validation enabled.
  • Tests cover default/include-abandoned lookup filtering, public repository/language matching and aliases, malformed/private URLs, positive-number boundaries, deduplication, protected plans, unavailable state, revision conflicts, and cancellation.

Ready for re-review; new hosted checks must finish before merge. No live plan abandonment, SDK PR cleanup, model eval, deployment, or release was performed. No admin authorization, monthly cleanup, permissions, force/approval inputs, or automatic-write retries were added. GitHub reads and the ADO write are not a cross-service transaction.

@github-actions github-actions Bot added the azsdk-cli Issues related to Azure/azure-sdk-tools::tools/azsdk-cli label Oct 8, 2026
@azure-pipelines

azure-pipelines Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
69 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@helen229
Helen Gao (helen229) marked this pull request as ready for review October 20, 2026 19:11
@helen229
Helen Gao (helen229) requested review from a team as code owners October 20, 2026 19:11
Copilot AI balanced review requested due to automatic review settings October 20, 2026 19:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No blocking issues remain in the supplied review evidence, with targeted tests covering safeguards and contract changes; tests were not rerun.

No open issues 🎉

What changed in this PR

Adds manual-abandonment safeguards to the Azure SDK release-plan workflow, addressing #17126 while preserving separate cleanup policies.

Changes:

  • Blocks abandonment after SDK releases or merged PRs, with revision-guarded writes.
  • Requires Release Plan ID across CLI, MCP, mocks, and agent guidance.
  • Adds safeguard and contract tests, updates documentation, and corrects guide links.
File Description
tools/​azsdk-cli/​README.md Documents safeguards and corrects links.
tools/​azsdk-cli/​docs/​mcp-tools.md Updates abandonment tool documentation.
tools/​azsdk-cli/​Azure.Sdk.Tools.Mock/​Tests/​ReleasePlanSpecCommitHandlerTests.cs Tests mock validation and schema parity.
tools/​azsdk-cli/​Azure.Sdk.Tools.Mock/​Handlers/​ReleasePlan/​ReleasePlanRemainingHandlers.cs Validates Release Plan ID arguments.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli/​Tools/​ReleasePlan/​ReleasePlanTool.cs Implements eligibility checks and guarded abandonment.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli/​Services/​DevOpsService.cs Adds optional lookup of abandoned plans.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli/​CHANGELOG.md Records safeguards and breaking input changes.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli.Tests/​Tools/​ReleasePlan/​ReleasePlanToolTests.cs Updates command-contract tests.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli.Tests/​Tools/​ReleasePlan/​ReleasePlanAbandonmentTests.cs Covers safeguards, failures, and cancellation.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli.Tests/​TestData/​TestPrompts.json Uses Release Plan ID in prompts.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli.Tests/​Services/​DevOpsServiceTests.cs Tests lookup filtering and revision conflicts.
tools/​azsdk-cli/​Azure.Sdk.Tools.Cli.Tests/​Mocks/​Services/​MockDevOpsService.cs Supports the new lookup overload.
plugins/​azure-sdk-tools/​skills/​prepare-release-plan/​SKILL.md Updates plugin argument guidance.
evals/​tools/​prompt-to-tool-releaseplan.eval.yaml Aligns evaluation prompts with the new contract.
.github/​skills/​azsdk-common-prepare-release-plan/​SKILL.md Updates source skill argument guidance.

Review effort: Balanced

@helen229

Copy link
Copy Markdown
Member Author

/check-enforcer override

@helen229
Helen Gao (helen229) merged commit d12fd92 into main Oct 27, 2026
20 of 21 checks passed
@helen229
Helen Gao (helen229) deleted the fix/17126-protect-partial-release-abandonment branch October 27, 2026 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

azsdk-cli Issues related to Azure/azure-sdk-tools::tools/azsdk-cli

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants