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
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
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

2 participants