Skip to content

fix(workflows): replace even/odd versioning with SemVer -rc.N suffixes#811

Merged
WilliamBerryiii merged 1 commit intomainfrom
fix/prerelease-versioning-rc-suffixes
Feb 27, 2026
Merged

fix(workflows): replace even/odd versioning with SemVer -rc.N suffixes#811
WilliamBerryiii merged 1 commit intomainfrom
fix/prerelease-versioning-rc-suffixes

Conversation

@WilliamBerryiii
Copy link
Copy Markdown
Member

Pre-release versioning previously relied on an even/odd minor version convention to distinguish stable from pre-release builds across the CI/CD pipeline. This scheme was fragile, produced version collisions when both pipelines targeted the same minor, and was redundant — the VS Code Marketplace determines channel placement via the --pre-release flag, not version number inspection. This PR replaces the entire even/odd scheme with standard SemVer -rc.N pre-release suffixes.

Changes

Pre-release version computation

The core versioning logic in prerelease.yml was the most significant change, replacing arithmetic parity checks with conventional commit analysis.

  • Rewrote version computation in prerelease.yml to use conventional commit bump rules — breaking changes bump major, new features bump minor, all others bump patch
  • Added feature commit detection (HAS_FEAT) alongside existing breaking change detection for accurate minor version bumps
  • Fixed an unanchored BREAKING[ -]CHANGE regex to ^BREAKING[ -]CHANGE: to prevent false positives from commit body content
  • Appended -rc.N suffix using git rev-list --count as the RC number, producing versions like 3.1.0-rc.5

Validation and channel routing

The remaining five workflow files enforce the -rc.N convention at their respective gates.

  • Updated prerelease-release.yml to extract and validate -rc.N suffixes from PR titles instead of checking minor version parity
  • Replaced auto-detection in extension-publish-prerelease.yml — queries gh release list with isPrerelease filter instead of deriving an odd minor from the latest stable tag
  • Updated extension-publish.yml stable channel guard to reject -rc.N versions rather than requiring even minor numbers
    • The existing format regex ^[0-9]+\.[0-9]+\.[0-9]+$ provides defense-in-depth by rejecting -rc.N before the explicit check
  • Simplified main.yml post-release reset to "${MAJOR}.$((MINOR + 1)).0-rc.0", removing the ODD_MINOR arithmetic and modulo guard
  • Cleaned up channel labels in extension-publish-marketplace.yml from "Pre-Release (ODD minor)" to "Pre-Release"

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • GitHub Actions workflow

Related Issues

None

Testing

  • All six workflow files pass YAML lint validation (npm run lint:yaml)
  • Verified the --pre-release flag on vsce publish controls VS Code Marketplace channel placement, confirming even/odd was never used by the marketplace
  • Traced each pipeline path end-to-end: pre-release computation, pre-release validation, pre-release extension publish, stable extension publish, and post-release reset

Checklist

Required Checks

  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable)

- rewrite prerelease.yml version computation with conventional commit bump rules and -rc.N suffix
- update prerelease-release.yml to validate -rc.N suffix instead of odd minor
- update extension-publish-prerelease.yml to detect pre-releases via -rc.N pattern
- update extension-publish.yml to reject -rc.N versions for stable channel
- update extension-publish-marketplace.yml channel labels to drop odd minor references
- update main.yml post-release reset to use -rc.0 suffix instead of odd minor increment

🔧 - Generated by Copilot
@WilliamBerryiii WilliamBerryiii requested a review from a team as a code owner February 27, 2026 22:49
@github-actions
Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@WilliamBerryiii WilliamBerryiii merged commit 18f7545 into main Feb 27, 2026
24 checks passed
WilliamBerryiii pushed a commit that referenced this pull request Feb 28, 2026
## Pre-Release 3.1.44

### ✨ Features

- add Docusaurus 3 documentation site with GitHub Pages deployment
(#680)
- add workflow permissions validation for OpenSSF Scorecard compliance
(#759)
- add DT coach return path handoff to task-researcher (#591) (#758)
- add DT subagent handoff workflow instructions (#592) (#757)
- create dt-method-06-deep.instructions.md (#602) (#748)
- create dt-method-05-deep.instructions.md (#747)
- add DT-aware task-implementor context instructions (#755)
- extract embedded PowerShell from workflows into testable scripts
(#738)
- add gitleaks binary-based secret scanning as PR gate (#734)
- add SBOM generation, attestation, and diff tooling to release pipeline
(#730)
- add dt-learning-tutor agent for DT education (#662)
- add DT image prompt generation guidance for Method 5 (#726)
- add DT-aware task-reviewer review context (#714)
- add dt-method-next routing prompt (#713)
- create dt-method-04-deep.instructions.md (#709)
- add Implementation Space exit handoff prompt for DT workflows (#708)
- add Write-CIStepSummary markdown table to Test-SHAStaleness github
output (#660)
- add dt-handoff-solution-space prompt for Solution Spac… (#707)

### 🐛 Bug Fixes

- update sidebar link color to meet WCAG AA contrast requirements (#814)
- harden even/odd versioning against regression and syntax errors (#816)
- replace even/odd versioning with SemVer -rc.N suffixes (#811)
- ensure prerelease label exists before PR creation (#806)
- replace Docusaurus favicons with Microsoft logo (#808)
- add missing subagents and shared instructions to collection manifests
(#804)
- standardize file path conventions for copilot-tracking output (#784)
- enforce project-scoped artifact isolation across DT files (#766)
- add top-level permissions to copilot-setup-steps.yml (#760)
- update broken file directives and markdown links after collection
directory reorg (#743)
- add pre-release companion pipeline with even/odd versioning (#735)
- exclude auto-generated CHANGELOG.md from spell check (#756)
- add job-level permissions to extension-publish.yml (#729)
- resolve handoff dependencies using display names (#727)
- add job-level permissions to validate-version in
extension-publish-prerelease (#731)
- replace parent-directory VS Code settings paths with per-subdirectory
enumeration (#732)

### 📚 Documentation

- add Design Thinking documentation and DT-to-RPI handoff (#789)
- add customization guides for HVE Core artifacts (#772)
- reconcile documentation against implementation (#771)
- document accepted Token-Permissions risks and add
lint:dependency-pinning (#763)
- add Design Thinking section to hve-core-all collection description
(#762)

### ♻️ Refactoring

- move collection scripts from plugins to collections (#728)
- remove duplicate git diff logic in frontmatter validator (#473)

### 🔧 Maintenance

- bump basic-ftp from 5.0.5 to 5.2.0 (#780)
- standardize script path references in SKILL.md files (#768)
- bump the github-actions group across 1 directory with 2 updates (#752)

---
*Managed automatically by pre-release workflow.*

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
WilliamBerryiii pushed a commit that referenced this pull request Feb 28, 2026
## Pre-Release 3.1.46

### ✨ Features

- add Docusaurus 3 documentation site with GitHub Pages deployment
(#680)
- add workflow permissions validation for OpenSSF Scorecard compliance
(#759)
- add DT coach return path handoff to task-researcher (#591) (#758)
- add DT subagent handoff workflow instructions (#592) (#757)
- create dt-method-06-deep.instructions.md (#602) (#748)
- create dt-method-05-deep.instructions.md (#747)
- add DT-aware task-implementor context instructions (#755)
- extract embedded PowerShell from workflows into testable scripts
(#738)
- add gitleaks binary-based secret scanning as PR gate (#734)
- add SBOM generation, attestation, and diff tooling to release pipeline
(#730)
- add dt-learning-tutor agent for DT education (#662)
- add DT image prompt generation guidance for Method 5 (#726)
- add DT-aware task-reviewer review context (#714)
- add dt-method-next routing prompt (#713)
- create dt-method-04-deep.instructions.md (#709)
- add Implementation Space exit handoff prompt for DT workflows (#708)
- add Write-CIStepSummary markdown table to Test-SHAStaleness github
output (#660)
- add dt-handoff-solution-space prompt for Solution Spac… (#707)

### 🐛 Bug Fixes

- update prerelease publish to use even/odd convention (#822)
- update sidebar link color to meet WCAG AA contrast requirements (#814)
- harden even/odd versioning against regression and syntax errors (#816)
- replace even/odd versioning with SemVer -rc.N suffixes (#811)
- ensure prerelease label exists before PR creation (#806)
- replace Docusaurus favicons with Microsoft logo (#808)
- add missing subagents and shared instructions to collection manifests
(#804)
- standardize file path conventions for copilot-tracking output (#784)
- enforce project-scoped artifact isolation across DT files (#766)
- add top-level permissions to copilot-setup-steps.yml (#760)
- update broken file directives and markdown links after collection
directory reorg (#743)
- add pre-release companion pipeline with even/odd versioning (#735)
- exclude auto-generated CHANGELOG.md from spell check (#756)
- add job-level permissions to extension-publish.yml (#729)
- resolve handoff dependencies using display names (#727)
- add job-level permissions to validate-version in
extension-publish-prerelease (#731)
- replace parent-directory VS Code settings paths with per-subdirectory
enumeration (#732)

### 📚 Documentation

- add Design Thinking documentation and DT-to-RPI handoff (#789)
- add customization guides for HVE Core artifacts (#772)
- reconcile documentation against implementation (#771)
- document accepted Token-Permissions risks and add
lint:dependency-pinning (#763)
- add Design Thinking section to hve-core-all collection description
(#762)

### ♻️ Refactoring

- move collection scripts from plugins to collections (#728)
- remove duplicate git diff logic in frontmatter validator (#473)

### 🔧 Maintenance

- pre-release 3.1.44 (#819)
- bump basic-ftp from 5.0.5 to 5.2.0 (#780)
- standardize script path references in SKILL.md files (#768)
- bump the github-actions group across 1 directory with 2 updates (#752)

---
*Managed automatically by pre-release workflow.*

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants