Release Workflow
Guides a Constellation Engine release through pre-flight, QA, and publish stages. Delegates the actual release to scripts/release.ps1 (Windows) or scripts/release.sh (Unix).
Argument Parsing
Parse the invocation arguments:
| Invocation | Type | Dry Run |
|---|---|---|
/release minor | minor | no |
/release patch | patch | no |
/release major | major | no |
/release dry minor | minor | yes |
/release dry patch | patch | yes |
/release dry major | major | yes |
If no release type is provided, ask the user which type they want (patch/minor/major).
Workflow Stages
Stage 1 — Pre-Flight Checks (automatic)
Run these checks and report results. Fail early if any check fails.
# 1. Verify on master branch git branch --show-current # Must be "master" # 2. Clean working directory git status --porcelain # Must be empty (or only untracked files in agents/) # 3. Synced with origin git fetch origin master git rev-list HEAD..origin/master --count # Must be "0" # 4. gh CLI authenticated gh auth status # Must succeed
Report:
Pre-flight: Branch: master Working dir: clean Remote sync: up to date GitHub CLI: authenticated
Stage 2 — CHANGELOG Review (interactive)
Read CHANGELOG.md and extract the [Unreleased] section. Present it to the user.
- •If
[Unreleased]section is empty or missing, warn the user and ask whether to proceed - •If it has content, show the content and confirm it looks correct
- •Use
AskUserQuestionto get confirmation before proceeding
Stage 3 — QA Gate (automatic)
Run phases 1-6 of the /qa pipeline (compile + format + lint + docs + ethos + tests):
sbt compile sbt scalafmtCheckAll sbt -J-Xmx4g "scalafixAll --check" sbt "docGenerator/runMain io.constellation.docgen.FreshnessChecker" sbt "docGenerator/runMain io.constellation.docgen.EthosVerifier" sbt -J-Xmx4g test
Note: -J-Xmx4g is required for scalafix and test — parallel compilation OOMs with default heap.
Sequential execution — fail on first error. If any phase fails, abort the release and report which phase failed with its fix suggestion.
Stage 4 — Version Confirmation (interactive)
Extract the current version from build.sbt:
grep 'ThisBuild / version' build.sbt
Calculate the new version based on the release type and present to the user:
Current version: 0.6.1(-SNAPSHOT) Release type: minor New version: 0.7.0 Files that will be updated: - build.sbt - vscode-extension/package.json - CHANGELOG.md ([Unreleased] → [0.7.0] - 2026-02-12)
Use AskUserQuestion to confirm before proceeding.
Stage 5 — Dry Run (automatic)
Run the release script in dry-run mode:
Windows:
.\scripts\release.ps1 -Type <type> -DryRun
Unix:
./scripts/release.sh <type> --dry-run
Show the dry-run output to the user. If /release dry <type> was invoked, stop here — do not proceed to Stage 6.
Stage 6 — Execute Release (user confirmation required)
This is a destructive action. Before executing, clearly state what will happen:
This will: 1. Update version in build.sbt, package.json, CHANGELOG.md 2. Run sbt test 3. Commit: "chore(release): v0.7.0" 4. Tag: v0.7.0 5. Push commit and tag to origin/master 6. Create GitHub Release (triggers Maven Central publish) Proceed?
Use AskUserQuestion to get explicit confirmation. On approval:
Windows:
.\scripts\release.ps1 -Type <type>
Unix:
./scripts/release.sh <type>
Stage 7 — Post-Release Verification (automatic)
After the release script completes:
# Verify tag exists git tag -l "v<new-version>" # Verify GitHub release was created gh release view "v<new-version>" # Check if publish workflow was triggered gh run list --workflow=publish.yml --limit=1
Report:
Post-release: Git tag: v0.7.0 (created) GitHub Release: https://github.com/VledicFranco/constellation-engine/releases/tag/v0.7.0 Publish workflow: triggered (run #1234)
Published Modules
These modules are published to Maven Central when the publish workflow runs:
| Module | Maven Artifact |
|---|---|
| core | constellation-core |
| runtime | constellation-runtime |
| lang-ast | constellation-lang-ast |
| lang-parser | constellation-lang-parser |
| lang-compiler | constellation-lang-compiler |
| lang-stdlib | constellation-lang-stdlib |
| lang-lsp | constellation-lang-lsp |
| http-api | constellation-http-api |
| module-provider-sdk | constellation-module-provider-sdk |
| cache-memcached | constellation-cache-memcached |
NOT published (publish/skip = true): module-provider (server), example-app, lang-cli, doc-generator, root.
Maven group: io.github.vledicfranco
For publish infrastructure details, see PUBLISH-INFRA.md.
Error Recovery
| Stage | Recovery |
|---|---|
| Pre-flight: wrong branch | git checkout master |
| Pre-flight: dirty workdir | git stash or commit changes |
| Pre-flight: behind remote | git pull origin master |
| QA gate failure | Fix the issue, re-run /qa quick or /qa tests |
| Release script failure | Script auto-reverts file changes on test failure |
| Post-release: no workflow | Check GitHub Actions tab manually |