From 830ba77d5d8dda6ebd247b4136e5d89d0ec433a6 Mon Sep 17 00:00:00 2001 From: bradygaster Date: Fri, 20 Feb 2026 00:25:19 -0800 Subject: [PATCH] =?UTF-8?q?chore:=20v0.5.0=20release=20hardening=20?= =?UTF-8?q?=E2=80=94=20version=20bump,=20CI=20validation,=20release=20chec?= =?UTF-8?q?klist=20(#62)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump package.json version from 0.4.2 to 0.5.0 - Add version consistency validation to squad-preview.yml and squad-release.yml - Validates that package.json version has matching CHANGELOG.md entry - Prevents releases with missing or mismatched version documentation - Mirror validation changes to templates/workflows/ for consumer repos - Create docs/release-checklist.md with comprehensive release procedures - Patch, minor, and major release checklists - Pre-release and CI validation steps - Clear actionable guidance for release engineers - Update CHANGELOG.md with v0.5.0 feature list Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/squad-preview.yml | 9 ++ .github/workflows/squad-release.yml | 9 ++ CHANGELOG.md | 12 +++ docs/release-checklist.md | 123 ++++++++++++++++++++++++++ package.json | 2 +- templates/workflows/squad-preview.yml | 9 ++ templates/workflows/squad-release.yml | 9 ++ 7 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 docs/release-checklist.md diff --git a/.github/workflows/squad-preview.yml b/.github/workflows/squad-preview.yml index 53c5dd76d..9298c364e 100644 --- a/.github/workflows/squad-preview.yml +++ b/.github/workflows/squad-preview.yml @@ -17,6 +17,15 @@ jobs: with: node-version: 22 + - name: Validate version consistency + run: | + VERSION=$(node -e "console.log(require('./package.json').version)") + if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then + echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release" + exit 1 + fi + echo "✅ Version $VERSION validated in CHANGELOG.md" + - name: Run tests run: node --test test/*.test.js diff --git a/.github/workflows/squad-release.yml b/.github/workflows/squad-release.yml index e4aa41833..bbd5de793 100644 --- a/.github/workflows/squad-release.yml +++ b/.github/workflows/squad-release.yml @@ -22,6 +22,15 @@ jobs: - name: Run tests run: node --test test/*.test.js + - name: Validate version consistency + run: | + VERSION=$(node -e "console.log(require('./package.json').version)") + if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then + echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release" + exit 1 + fi + echo "✅ Version $VERSION validated in CHANGELOG.md" + - name: Read version from package.json id: version run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index d134ddc9f..72ae95f23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.5.0] — Unreleased + +### Added + +- **`.ai-team/` renamed to `.squad/`** — Full directory rename with backward-compatible migration utilities for existing installations +- **Decision lifecycle management** — Archival and versioning support for design decisions across the agent lifecycle +- **Identity layer** — New `wisdom.md` and `now.md` files for agent context and temporal awareness +- **ISO 8601 UTC timestamps** — Standardized timestamp format throughout (decision dates, agent updates, metadata) +- **Cold-path extraction** — Refactored `squad.agent.md` to separate active decision paths from historical logic +- **Skills export/import verification** — Enhanced import/export validation and documentation for agent skill extension +- **Email scrubbing** — Automatic email removal during migration to prevent accidental PII commits + ## [0.4.2] — 2026-02-20 ### Fixed diff --git a/docs/release-checklist.md b/docs/release-checklist.md new file mode 100644 index 000000000..33d6e1862 --- /dev/null +++ b/docs/release-checklist.md @@ -0,0 +1,123 @@ +# Release Checklist + +This document outlines the steps for preparing and shipping Squad releases. Follow the appropriate checklist based on the release type. + +## Pre-Release Steps (All Releases) + +- [ ] Ensure all PRs targeting the release branch are merged and reviewed +- [ ] Pull latest `dev` branch: `git pull origin dev` +- [ ] Run full test suite: `npm test` +- [ ] All tests pass (53+ tests for current version) +- [ ] Review CHANGELOG.md for accuracy and completeness +- [ ] Verify package.json version matches intended release version + +## Patch Release (e.g., 0.4.2 → 0.4.3) + +**Purpose:** Bug fixes and patches with no new features or breaking changes. + +### Steps + +1. Create patch branch: `git checkout -b squad/patch-{version}` +2. Update `package.json` version: increment patch number (e.g., 0.4.2 → 0.4.3) +3. Add `CHANGELOG.md` entry with date: + ```markdown + ## [0.4.3] — YYYY-MM-DD + + ### Fixed + - Description of fix + ``` +4. Commit: `git commit -m "chore: v0.4.3 patch release"` +5. Push and create PR: `git push origin squad/patch-{version}` +6. Get review and merge to `dev` +7. Merge `dev` → `main` +8. CI automatically creates GitHub release + +## Minor Release (e.g., 0.4.2 → 0.5.0) + +**Purpose:** New features with backward compatibility. Commonly used for feature cadence releases. + +### Steps + +1. Create release branch: `git checkout -b squad/{issue}-release-hardening` +2. Update `package.json` version: increment minor number (e.g., 0.4.2 → 0.5.0) +3. Update all affected workflow files and templates: + - `.github/workflows/squad-preview.yml` + - `.github/workflows/squad-release.yml` + - `templates/workflows/squad-preview.yml` + - `templates/workflows/squad-release.yml` +4. Add `CHANGELOG.md` entry with new features: + ```markdown + ## [0.5.0] — Unreleased + + ### Added + - Feature description + - Another feature + ``` +5. Test all changes locally and in CI +6. Commit: `git commit -m "chore: v0.5.0 release hardening — version bump, CI validation, docs"` +7. Push and create PR: `git push origin squad/{issue}-release-hardening` +8. Get review and merge to `dev` +9. Merge `dev` → `main` +10. CI automatically creates GitHub release + +## Major Release (e.g., 0.4.2 → 1.0.0) + +**Purpose:** Breaking changes, significant refactors, or major feature releases. + +### Steps + +1. Create release branch: `git checkout -b squad/major-{version}-release` +2. Update `package.json` version: increment major number (e.g., 0.4.2 → 1.0.0) +3. Add migration guide if needed (breaking changes documentation) +4. Update all affected files (same as minor release) +5. Update `CHANGELOG.md` with detailed breaking changes section: + ```markdown + ## [1.0.0] — Unreleased + + ### Breaking Changes + - Clear description of breaking change + - Migration guidance + + ### Added + - New feature + ``` +6. Comprehensive testing and validation +7. Commit and push with clear messaging +8. Create PR with detailed description of breaking changes +9. Get thorough review and merge to `dev` +10. Merge `dev` → `main` +11. CI automatically creates GitHub release + +## CI Validation Steps + +The following checks run automatically in CI (no manual action required): + +### In `squad-preview.yml` (Preview Branch) + +- Runs full test suite +- Validates no `.ai-team/` or `.squad/` files are tracked +- Validates package.json contains a version +- **NEW:** Validates version consistency with CHANGELOG.md + +### In `squad-release.yml` (Main Branch) + +- Runs full test suite +- Reads version from package.json +- Checks if tag already exists (prevents duplicate releases) +- **NEW:** Validates version consistency with CHANGELOG.md +- Creates git tag (e.g., `v0.5.0`) +- Creates GitHub Release with auto-generated notes +- Verifies release was created successfully + +## Key Requirements + +- **CHANGELOG.md must have entry** for every release version (validated in CI) +- **Version consistency** between `package.json` and CHANGELOG.md is enforced +- **All tests must pass** before release can proceed +- **No `.ai-team/` or `.squad/` files** on preview or main branches + +## References + +- [GitHub Actions Workflows](.github/workflows/) +- [Package Configuration](package.json) +- [Changelog](CHANGELOG.md) diff --git a/package.json b/package.json index ab8921409..0d9b2d6b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bradygaster/create-squad", - "version": "0.4.2", + "version": "0.5.0", "description": "Add an AI agent team to any project", "bin": { "create-squad": "./index.js" diff --git a/templates/workflows/squad-preview.yml b/templates/workflows/squad-preview.yml index 53c5dd76d..9298c364e 100644 --- a/templates/workflows/squad-preview.yml +++ b/templates/workflows/squad-preview.yml @@ -17,6 +17,15 @@ jobs: with: node-version: 22 + - name: Validate version consistency + run: | + VERSION=$(node -e "console.log(require('./package.json').version)") + if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then + echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release" + exit 1 + fi + echo "✅ Version $VERSION validated in CHANGELOG.md" + - name: Run tests run: node --test test/*.test.js diff --git a/templates/workflows/squad-release.yml b/templates/workflows/squad-release.yml index e4aa41833..bbd5de793 100644 --- a/templates/workflows/squad-release.yml +++ b/templates/workflows/squad-release.yml @@ -22,6 +22,15 @@ jobs: - name: Run tests run: node --test test/*.test.js + - name: Validate version consistency + run: | + VERSION=$(node -e "console.log(require('./package.json').version)") + if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then + echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release" + exit 1 + fi + echo "✅ Version $VERSION validated in CHANGELOG.md" + - name: Read version from package.json id: version run: |