Release v0.8.0#257
Conversation
* chore: Update MCP server configurations and squad export (#246) * chore: merge release-process skill review decisions, update agent histories, archive aged decisions - Merged three inbox decision entries (Aragorn/Boromir/Frodo) into decisions.md - Updated agent history files with 2026-04-12 team sync learnings - Archived pre-April-1 decisions to decisions-archive.md for operational clarity - Released context by condensing aged decision records Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * .squad: Scribe logs for Frodo release-process legacy stub Session: 2026-04-12T19:57:04Z Tasks completed: 1. Orchestration log: frodo agent release-process deprecation task 2. Session log: release-skill-legacy-stub work summary 3. Decision inbox merged: frodo-release-process-legacy-stub.md → decisions.md 4. Frodo history.md updated: Added legacy stub deprecation entry 5. Inbox file deleted after merge Outputs: - .squad/orchestration-log/2026-04-12T19-57-04Z-frodo.md (new) - .squad/log/2026-04-12T19-57-04Z-release-skill-legacy-stub.md (new) - .squad/decisions.md (appended, 92896 bytes) - .squad/agents/frodo/history.md (updated with team context) No archival needed (92896 bytes < 20KB threshold would trigger archive, but this represents 2026-04 additions; all old decisions within 30d window). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * .squad: History file summarization (aragorn, frodo, legolas, pippin) Task 7: Summarized old entries (>30d) to '## Core Context' section. Files: - aragorn: 29KB → 21KB (kept March 28+ recent entries) - frodo: 16KB → 6KB (kept April 12+ recent entries) - legolas: 14KB → 4KB (consolidated CSS, styling, theme learnings) - pippin: 12KB → 4KB (consolidated Aspire, Playwright, team rule learnings) All summarized files now <12KB threshold except Aragorn (21KB still acceptable with Core Context structure). Maintains full context while improving readability. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update MCP server configurations and squad export - Update .copilot/mcp-config.json with enhanced MCP server definitions - Add .mcp.json for MCP client integration (untracked) - Update squad-export.json with latest team metadata Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: update frodo agent history --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: scribe log and decisions export (#247) * scribe: Log PR flow and merge decisions inbox - Added orchestration log for Boromir PR creation/merge attempt (PR #246) - Added session log for PR workflow (squad/scribe-log-mcp-export) - Merged 3 decision inbox files into decisions.md: * Boromir: Branch strategy (dev/main model) feasibility audit * Boromir: MCP config commit safety assessment * Frodo: Documentation audit for dev/main branch model - Cleared .squad/decisions/inbox/ (all inbox files processed) This completes the spawn manifest processing for Boromir's two-pass PR flow attempt. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * scribe: Add Aragorn adoption decision to decisions.md - Merged Aragorn's comprehensive two-branch strategy assessment - Includes GitVersion.yml configuration recommendations - Provides phased implementation roadmap (Phase 1 infrastructure, Phase 2 docs) - Clearcut approval gate: requires Matthew Paulosky sign-off - All decision inbox files now processed and cleared Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add pre-push and merge playbooks, fix process documentation - New .squad/playbooks/pre-push-process.md (5-gate walkthrough) - New .squad/playbooks/pr-merge-process.md (8-step merge lifecycle) - Fix release-issuetracker.md (NBGV→GitVersion, two-branch model) - Rewrite pre-push-test-gate skill (all 5 gates, 10 test projects) - Flag 3 Squad CLI skills as non-applicable to IssueTrackerApp - Update routing.md with playbook-aware routing - Add playbook cross-references to ceremonies.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>"
Set allowPrerelease to false to use stable .NET SDK only.
v3.1.11 and v3 tags only support GitVersion <6.1.0, but 6.x now resolves to 6.7.0 which is out of range. Upgrade all four release workflows to gittools/actions@v4.5.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…255) v3.1.11 and v3 tags only support GitVersion <6.1.0, but 6.x now resolves to 6.7.0 which is out of range. Upgrade all four release workflows to gittools/actions@v4.5.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #257 +/- ##
=======================================
Coverage 78.52% 78.52%
=======================================
Files 228 228
Lines 8481 8481
Branches 1166 1166
=======================================
Hits 6660 6660
Misses 1284 1284
Partials 537 537 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Release PR promoting the repository to the v0.8.0 state, including the shift to a two-branch (dev → main) model and associated workflow/documentation updates.
Changes:
- Updates GitVersion config and release/promotion workflows to support
devas the integration branch andmainas release-only. - Revises contributor/agent documentation and adds new playbooks to reflect the new branching + review/merge processes.
- Adjusts pre-push protections and automation (Dependabot + issue assignment) to target
dev.
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| global.json | Tweaks SDK roll-forward / prerelease settings for repo tooling consistency. |
| GitVersion.yml | Adds explicit dev branch config and updates source-branch relationships. |
| docs/New Work process.md | Updates “new work” and merge guidance to target dev instead of main. |
| CONTRIBUTING.md | Documents two-branch model and updates contribution flow to target dev. |
| AGENTS.md | Updates workflow guidance to reflect dev integration branch and main releases. |
| .squad/routing.md | Re-formats routing table and updates references to playbooks/skills locations. |
| .squad/playbooks/release-issuetracker.md | Replaces single-branch release guidance with two-branch + GitVersion-based release guidance. |
| .squad/playbooks/pre-push-process.md | Adds a step-by-step playbook for the local pre-push gate process. |
| .squad/playbooks/pr-merge-process.md | Adds a PR lifecycle playbook aligned to squash merges into dev. |
| .squad/ceremonies.md | Updates ceremony docs formatting and adds links to the new playbooks. |
| .github/workflows/squad-test.yml | Ensures push workflow runs on dev as well as main. |
| .github/workflows/squad-release.yml | Upgrades gittools/actions usage to v4.5.0 for GitVersion compatibility. |
| .github/workflows/squad-promote.yml | Reworks promotion to open a dev → main PR and upgrades gittools/actions. |
| .github/workflows/squad-preview.yml | Replaces placeholder preview validation with real restore/build/test on dev. |
| .github/workflows/squad-milestone-release.yml | Upgrades gittools/actions usage to v4.5.0 for GitVersion compatibility. |
| .github/workflows/squad-issue-assign.yml | Sets the coding agent base branch to dev (release work stays on main). |
| .github/workflows/squad-insider-release.yml | Upgrades gittools/actions usage to v4.5.0 for GitVersion compatibility. |
| .github/workflows/squad-heartbeat.yml | Sets the coding agent base branch to dev (release work stays on main). |
| .github/hooks/pre-push | Extends Gate 0 to block direct pushes to both main and dev. |
| .github/dependabot.yml | Targets Dependabot PRs to dev and broadens NuGet/dotnet-sdk scanning to repo root. |
| .copilot/skills/squad-conventions/SKILL.md | Clarifies this skill is “Squad CLI Only” (not IssueTrackerApp). |
| .copilot/skills/release-process/SKILL.md | Clarifies this skill is “Squad CLI Only” and points to IssueTrackerApp release playbook. |
| .copilot/skills/pre-push-test-gate/SKILL.md | Updates the pre-push gate skill to align with the repo’s hook and new playbook. |
| .copilot/skills/merged-pr-guard/SKILL.md | Updates guard guidance to sync to dev (integration branch) instead of main. |
| .copilot/skills/git-workflow/SKILL.md | Updates workflow guidance to a two-branch model and IssueTrackerApp context. |
| .copilot/skills/ci-validation-gates/SKILL.md | Clarifies this skill is “Squad CLI Only” and points to IssueTrackerApp sources. |
| id: gitversion | ||
| uses: gittools/actions/gitversion/execute@v4.5.0 | ||
| with: | ||
| useConfigFile: true |
There was a problem hiding this comment.
The GitVersion action is configured with useConfigFile: true but does not specify configFilePath. Other workflows in this repo pass configFilePath: GitVersion.yml; without it this job can become sensitive to default-path behavior changes in the action.
| useConfigFile: true | |
| useConfigFile: true | |
| configFilePath: GitVersion.yml |
There was a problem hiding this comment.
✅ Fixed in 0445b49 — added configFilePath: GitVersion.yml to the execute step, matching the other 3 release workflows.
| # Check if a promote PR already exists | ||
| EXISTING=$(gh pr list --base main --head dev --state open --json number --jq '.[0].number' || true) | ||
| if [ -n "$EXISTING" ]; then | ||
| echo "ℹ️ Promote PR #$EXISTING already exists — updating description" | ||
| gh pr edit "$EXISTING" \ | ||
| --title "chore: promote dev → main (v${VERSION})" \ | ||
| --body "## Release Promotion | ||
|
|
||
| - name: Configure git | ||
| run: | | ||
| git config user.name "github-actions[bot]" | ||
| git config user.email "github-actions[bot]@users.noreply.github.com" | ||
| Merging \`dev\` into \`main\` for release **v${VERSION}**. | ||
|
|
||
| - name: Fetch all branches | ||
| run: git fetch --all | ||
| ### Commits included | ||
| $(git log origin/main..origin/dev --oneline | head -50) | ||
|
|
||
| - name: Show current state | ||
| run: | | ||
| echo "=== preview HEAD ===" && git log origin/preview -1 --oneline | ||
| echo "=== main HEAD ===" && git log origin/main -1 --oneline | ||
| echo "=== Version ===" && node -e "console.log('v' + require('./package.json').version)" | ||
| --- | ||
| _After merging, run **squad-milestone-release** to tag and publish the GitHub Release._" |
There was a problem hiding this comment.
The gh pr create/edit --body "..." string includes $(git log ... --oneline) output inside double quotes. If any commit subject contains an unescaped double quote, the shell will break and the workflow will fail. Prefer constructing the body via a heredoc / --body-file to avoid shell-escaping issues.
There was a problem hiding this comment.
✅ Fixed in 0445b49 — refactored to write the PR body to a temp file via heredoc and use --body-file for both the create and edit paths. The temp file is cleaned up after use.
| **GitVersion.yml reference** (actual repo config): | ||
|
|
||
| ```yaml | ||
| mode: ContinuousDeployment | ||
| tag-prefix: '[vV]?' | ||
| branches: | ||
| main: | ||
| regex: ^main$ | ||
| tag: '' | ||
| increment: Minor | ||
| develop: | ||
| regex: ^dev$ | ||
| tag: preview | ||
| increment: Minor | ||
| feature: | ||
| regex: ^(feature|squad)[/-] | ||
| tag: alpha.{BranchName} | ||
| increment: Inherit | ||
| ``` |
There was a problem hiding this comment.
This playbook claims the embedded YAML is the "actual repo config", but it does not match GitVersion.yml in this repo (e.g., mode is ContinuousDelivery, tag-prefix is [vV], branches use label not tag, and there is a dev branch entry). Please update the snippet or replace it with a link/reference to avoid drift.
| **GitVersion.yml reference** (actual repo config): | |
| ```yaml | |
| mode: ContinuousDeployment | |
| tag-prefix: '[vV]?' | |
| branches: | |
| main: | |
| regex: ^main$ | |
| tag: '' | |
| increment: Minor | |
| develop: | |
| regex: ^dev$ | |
| tag: preview | |
| increment: Minor | |
| feature: | |
| regex: ^(feature|squad)[/-] | |
| tag: alpha.{BranchName} | |
| increment: Inherit | |
| ``` | |
| **GitVersion.yml reference:** Use [`GitVersion.yml`](../../GitVersion.yml) at the | |
| repo root as the authoritative configuration source. | |
| To avoid documentation drift, this playbook does not duplicate the full YAML here. | |
| For the current `mode`, `tag-prefix`, and branch configuration | |
| (`main`, `dev`, `feature`/`squad`), refer directly to `GitVersion.yml`. |
There was a problem hiding this comment.
✅ Fixed in 0445b49 — replaced the stale embedded YAML block with a direct link to GitVersion.yml at repo root, plus a summary of the key settings (mode: ContinuousDelivery, tag-prefix: '[vV]', branch configs).
|
|
||
| **Last Updated:** 2026-04-12 | ||
| **Ref:** `.squad/skills/release-process-base/SKILL.md` | ||
| **Last Updated:** 2025-07-17 |
There was a problem hiding this comment.
Last Updated is earlier than Last Reviewed at the end of the document, which makes the metadata inconsistent. Consider updating Last Updated to reflect the current revision date (or removing one of the fields).
| **Last Updated:** 2025-07-17 | |
| **Last Updated:** 2026-04-13 |
There was a problem hiding this comment.
✅ Fixed in 0445b49 — updated Last Updated to 2026-04-13 on this file and the other playbook docs.
| | Gate | What | Blocks Push If | | ||
| | ----- | ---------------------- | ------------------------------------------------------------------------ | | ||
| | **0** | Branch protection | Current branch is `main` | | ||
| | **1** | Untracked source files | `.razor`/`.cs` files not staged (prompts y/N) | | ||
| | **2** | Release build | `dotnet build --configuration Release` fails (3 attempts) | | ||
| | **3** | Unit/Arch/bUnit tests | Any of 6 test projects fail (3 attempts) | | ||
| | **4** | Integration tests | Any of 4 integration test projects fail; Docker not running (3 attempts) | |
There was a problem hiding this comment.
Gate 0 is described as blocking pushes only when the current branch is main, but the hook and earlier checklist say it blocks both main and dev. Please update the table to match the hook behavior.
There was a problem hiding this comment.
✅ Fixed in 0445b49 — Gate 0 table now reads "Current branch is main or dev" to match the hook's actual behavior (line 16 blocks both).
| | Gate | Name | What It Does | Blocks If | | ||
| |------|------|-------------|-----------| | ||
| | **0** | Branch protection | Checks current branch | Push is to `main` | | ||
| | **1** | Untracked source files | Scans for untracked `.razor`/`.cs` files | Untracked source files found (prompts y/N) | | ||
| | **2** | Release build | `dotnet build IssueTrackerApp.slnx --configuration Release` | Build fails (3 retries) | | ||
| | **3** | Unit/Arch/bUnit tests | Runs 6 test projects in Release mode | Any test project fails (3 retries) | | ||
| | **4** | Integration tests | Runs 4 integration test projects (Docker required) | Any test project fails (3 retries) | |
There was a problem hiding this comment.
Gate 0 is documented as blocking only pushes to main, but .github/hooks/pre-push now blocks direct pushes to both main and dev. Please update this row to match the hook behavior.
There was a problem hiding this comment.
✅ Fixed in 0445b49 — updated Gate 0 row to "Push is to main or dev" to match the hook.
| git checkout main && git pull origin main && git fetch --prune | ||
|
|
||
| # Remove merged remote squad/ branches | ||
| git branch -r --merged origin/main \ | ||
| | grep 'origin/squad/' \ | ||
| | sed 's|origin/||' \ | ||
| | xargs -r -I{} git push origin --delete {} | ||
|
|
||
| # Remove merged local squad/ branches | ||
| git branch --merged main \ |
There was a problem hiding this comment.
This cleanup procedure uses origin/main / main to detect merged squad branches, but feature PRs are now squash-merged into dev. Using main here will miss branches merged to dev and leave them behind; the merged checks should reference origin/dev / dev (or the PR base branch).
| git checkout main && git pull origin main && git fetch --prune | |
| # Remove merged remote squad/ branches | |
| git branch -r --merged origin/main \ | |
| | grep 'origin/squad/' \ | |
| | sed 's|origin/||' \ | |
| | xargs -r -I{} git push origin --delete {} | |
| # Remove merged local squad/ branches | |
| git branch --merged main \ | |
| git checkout dev && git pull origin dev && git fetch --prune | |
| # Remove merged remote squad/ branches | |
| git branch -r --merged origin/dev \ | |
| | grep 'origin/squad/' \ | |
| | sed 's|origin/||' \ | |
| | xargs -r -I{} git push origin --delete {} | |
| # Remove merged local squad/ branches | |
| git branch --merged dev \ |
There was a problem hiding this comment.
✅ Fixed in 0445b49 — cleanup procedure now references origin/dev / dev for merged branch detection, matching the squad PR workflow.
| @@ -219,6 +233,7 @@ Fix agent: please push corrections to `{branch}` and comment when ready for re-r | |||
| git commit -m "chore: resolve merge conflicts with main\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" | |||
| git push | |||
There was a problem hiding this comment.
Conflict-resolution protocol merges origin/main into the PR branch. If the PR base is dev, conflicts should be resolved by merging the PR base (origin/dev) into the branch; merging main risks introducing unrelated release-only changes and won’t reliably resolve conflicts against dev.
There was a problem hiding this comment.
✅ Fixed in 0445b49 — conflict resolution now merges origin/dev and the commit message references dev instead of main.
| @@ -253,7 +268,7 @@ git fetch --prune | |||
|
|
|||
| `--prune` removes local tracking refs (`origin/squad/*`) for branches already deleted on origin. | |||
|
|
|||
| **Step 2 — Delete merged remote branches (origin)** | |||
| #### **Step 2 — Delete merged remote branches (origin)** | |||
|
|
|||
| Catches any `squad/*` branches not removed by `--delete-branch` at merge time: | |||
|
|
|||
| @@ -264,15 +279,15 @@ git branch -r --merged origin/main \ | |||
| | xargs -r -I{} git push origin --delete {} | |||
| ``` | |||
There was a problem hiding this comment.
Orphan-branch cleanup checks --merged origin/main / --merged main, but PRs are merged into dev per the updated process. This will miss branches merged to dev; consider switching these merged checks to origin/dev / dev (and update the one-liner and report filters accordingly).
There was a problem hiding this comment.
✅ Fixed in 0445b49 — orphan cleanup now uses origin/dev / dev for all merged-branch checks, matching the squad workflow where PRs merge to dev.
| | Parameter | Value | Notes | | ||
| | ------------------ | --------------------------------- | ------------------------------------------------------- | | ||
| | **Version System** | GitVersion | Configured in `GitVersion.yml` | | ||
| | **Version File** | `GitVersion.yml` | At repo root | | ||
| | **Tag Prefix** | `v` / `V` | e.g., `v1.0.0` (both cases accepted per GitVersion.yml) | | ||
| | **Package ID** | IssueTrackerApp | From `.csproj` | | ||
| | **Merge Strategy** | squash (to dev), merge (dev→main) | Squash for feature work, merge commit for promotion | |
There was a problem hiding this comment.
This doc states tag prefixes v / V are accepted. GitVersion is configured for [vV], but the release workflow trigger in .github/workflows/squad-release.yml only matches lowercase tags (v*.*.*). Either update the docs to say lowercase v only, or update workflow triggers to include uppercase V*.*.* to match GitVersion behavior.
| | Parameter | Value | Notes | | |
| | ------------------ | --------------------------------- | ------------------------------------------------------- | | |
| | **Version System** | GitVersion | Configured in `GitVersion.yml` | | |
| | **Version File** | `GitVersion.yml` | At repo root | | |
| | **Tag Prefix** | `v` / `V` | e.g., `v1.0.0` (both cases accepted per GitVersion.yml) | | |
| | **Package ID** | IssueTrackerApp | From `.csproj` | | |
| | **Merge Strategy** | squash (to dev), merge (dev→main) | Squash for feature work, merge commit for promotion | | |
| | Parameter | Value | Notes | | |
| | ------------------ | --------------------------------- | ---------------------------------------------------- | | |
| | **Version System** | GitVersion | Configured in `GitVersion.yml` | | |
| | **Version File** | `GitVersion.yml` | At repo root | | |
| | **Tag Prefix** | `v` | e.g., `v1.0.0` (release workflow triggers on `v`) | | |
| | **Package ID** | IssueTrackerApp | From `.csproj` | | |
| | **Merge Strategy** | squash (to dev), merge (dev→main) | Squash for feature work, merge commit for promotion | |
There was a problem hiding this comment.
✅ Fixed in 0445b49 — tag prefix row now reads v (lowercase only) with a note that GitVersion accepts [vV] but the release workflow trigger only matches v*.*.*.
- Add configFilePath: GitVersion.yml to squad-promote.yml execute step - Fix shell-escaping risk: use --body-file instead of inline --body with command substitution - Replace stale embedded GitVersion YAML with link to actual file - Update Last Updated dates to 2026-04-13 - Fix Gate 0 docs: blocks main AND dev, not just main - Fix branch cleanup: reference origin/dev not origin/main (squad PRs merge to dev) - Fix conflict resolution: merge origin/dev not origin/main - Clarify tag prefix: lowercase v only triggers release workflow Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Release v0.8.0
Promotes all changes from
devtomainfor the v0.8.0 release.Changes included
Test results
Conflict resolution
.squad/playbooks/release-issuetracker.md(kept dev version with correct GitVersion/two-branch model references)