Skip to content

Reconcile main into dev before release - #212

Merged
mpaulosky merged 32 commits into
devfrom
squad/211-reconcile-main-into-dev
Apr 26, 2026
Merged

Reconcile main into dev before release#212
mpaulosky merged 32 commits into
devfrom
squad/211-reconcile-main-into-dev

Conversation

@mpaulosky

Copy link
Copy Markdown
Owner

Summary

  • merge main into dev to restore a clean release path before the Sprint 13 promotion
  • keep the current dev xUnit v3 test state when resolving the backport conflicts
  • drop the stray tests/Unit.Tests files from main because that project is not part of the current dev test layout

Closes #211

mpaulosky and others added 30 commits April 20, 2026 08:03
- PR #62: APPROVE — pre-push hook logic verified, clean infra fix
- PR #63: conditional APPROVE — build confirmation needed before merge
- PR #60: NEEDS_CHANGES — dirty state, missing copyright headers, wrong attribution
- Systemic finding: squad-test.yml does not trigger on sprint/** PRs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add push trigger for sprint/** so direct pushes to sprint branches
  trigger the parallel test suite
- Add sprint/** to pull_request.branches so PRs targeting sprint
  consolidation branches also run CI validation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Update .NET SDK to 10.0.202 in global.json
- Add docs/build-log.txt with build & test results
- Include refactored code improvements

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…learnings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
GitVersion auto-increments on main; v1.0.0-sprint3 is final sprint tag.
Subsequent releases follow pure semantic versioning from v1.0.1 onwards.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Marks cutover from sprint-based tags to pure semantic versioning.

GitVersion auto-increments Patch on main.
This release validates the new versioning workflow:
- main commit → CI GitVersion tags → GitHub Release creation

Closes: versioning decision from sprint/4-planning

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When CI runs on main after merge, create and push the git tag based on
GitVersion-determined semver. This enables v1.0.1, v1.0.2, etc. to be
automatically tagged without manual intervention.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add step to CI workflow that creates and pushes git tags for each commit
to main, using GitVersion-determined semver.

This completes the v1.0.1 release flow:
- Merge PR to main
- CI determines version with GitVersion
- CI creates and pushes tag (v1.0.1, v1.0.2, ...)
- Team creates GitHub Release from tag

Closes: versioning automation setup
GitVersion v4 action no longer accepts 'useConfigFile'. Use 'configFilePath'
to explicitly specify the GitVersion.yml location.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace deprecated 'useConfigFile' with 'configFilePath' in GitVersion
action.

This is required for gittools/actions/gitversion/execute@v4 to work
properly.
The 'Create and Push Git Tag' step requires 'contents: write' permission
to push tags to the repository.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Change 'contents: read' to 'contents: write' so the 'Create and Push Git
Tag' step can push tags.

This completes the automatic versioning workflow.
semVer includes pre-release height on non-main branches, resulting in tags like
v1.0.0-101. On main, we want clean semver tags like v1.0.1, which comes from
the majorMinorPatch output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
GitVersion's semVer output includes pre-release height (e.g.
v1.0.0-101).
On main, we want clean v1.0.1 format, which comes from majorMinorPatch.

This ensures the first post-sprint release is tagged v1.0.1, not
v1.0.0-{height}.
Document the new automatic versioning workflow with GitVersion.
This is the first commit after v1.0.0, which will trigger v1.0.1 tag creation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add RELEASE.md documenting the new automatic versioning workflow.

This commit on main will trigger v1.0.1 tag creation via the CI
workflow.
Aligns with squad naming conventions and PRD specification.
All squad-managed workflows use the 'squad-' prefix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Align CI workflow naming with squad conventions. All squad-managed
workflows use the 'squad-' prefix.
Merge dev into main for Sprint 4 release. Resolve workflow conflicts
by accepting dev versions (squad-ci.yml, squad-test.yml).
Also fix squad-preview validate to exclude AppHost.Tests/Bunit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 4 Release — v1.1.0

Replaces PR #105 which had a merge conflict in workflow files
(`squad-ci.yml`, `squad-test.yml`).

### Changes included

All Sprint 4 work from `dev`:
- feat: Blazor theme system (Sprint 4 issues #81#86)
- feat: VSA migration — move Domain.Features to Web (PR #104)
- fix: Resolve all 7 flaky E2E tests in AppHost.Tests (PR #102)
- refactor: Reorganize test projects (PR #100)
- ci: Central Package Management (CPM)
- ci: Fix squad-preview validate to skip AppHost.Tests/Bunit (unrunnable
on plain runners)

### Conflict resolution

`squad-ci.yml` and `squad-test.yml` had add/add and content conflicts
from main having an older version. Resolved by accepting the `dev`
versions (correct current state).

---
Closes #105

_After merging, run **squad-milestone-release** to tag and publish
v1.1.0._
## Sprint 5 Release — Redis & Caching (v1.2.0)

Promotes `dev` → `main` for the Sprint 5 release.

### What's in this release

- **`IBlogPostCacheService`** — caching contract with
`GetOrFetchAllAsync`, `GetOrFetchByIdAsync`, `InvalidateAllAsync`,
`InvalidateByIdAsync`
- **`BlogPostCacheService`** — two-tier L1 (IMemoryCache, 1-min TTL) +
L2 (Redis, 5-min TTL), registered as Singleton via
`AddBlogPostCaching()`
- All 4 BlogPost MediatR handlers refactored to inject
`IBlogPostCacheService` only
- 16 unit tests, 2 arch tests, 3 Redis integration tests
(Testcontainers)
- ADR: `docs/adr/sprint5-caching-abstraction.md`
- CI: auto-move Done → Released on GitHub Release publish

### Closed issues
Closes #109, #110, #111, #112, #113, #114

### CI status
All checks green on `dev` ✅
Fixes literal block scalar indentation in project-board-automation.yml, add-issues-to-project.yml, and squad-test.yml. All CI checks green.
…itHub Pages

Promotes v1.2.0 documentation from dev to main:

- 6 new blog posts (Sprints 1–5 + release milestones v1.0.0/v1.1.0/v1.2.0) in docs/blog/
- docs/blog/index.md — blog landing page with Latest Posts table (blog-readme-sync compatible)
- README.md — full rewrite for v1.2.0 stack (Aspire 13.2.3, Redis, bUnit, 7 test projects)
  - Dev Blog section with BLOG_START/BLOG_END markers for automated sync
  - Release history table (v1.0.0 → v1.2.0)
- docs/index.html — GitHub Pages overhauled for v1.2.0 (release table, blog links, npm tw:watch)
- Workflow YAML heredoc indentation hardening (3 workflow files)

Fixes from PR #127 included: correct npm script (tw:watch), blog-sync markers, Aspire 13.2.3.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary

Promotes `dev` → `main` to bring the `workflow_dispatch` trigger for
`squad-mark-released.yml` to production.

## What's included

- **ci: add workflow_dispatch to squad-mark-released.yml** (PR #128,
squash-merged)
- Adds manual trigger so Done → Released board migration can be run from
Actions UI
  - Guards `if` condition for manual vs release-event runs
  - Safe `tag_name` fallback for manual dispatch

## Why

`squad-mark-released.yml` never fired for v1.2.0 due to a timing race at
release. Without `workflow_dispatch`, recovery required direct GraphQL
mutations. This fix makes the workflow self-service going forward.

Closes no issue — maintenance/ops improvement.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Release PR: merge Sprint 6 code quality improvements into main for
tagging and release.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
Closes #211

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 26, 2026 20:53
@github-actions github-actions Bot added the squad Squad triage inbox — Lead will assign to a member label Apr 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🏗️ PR Added to Squad Triage Queue

This PR has been labeled with squad and added to the triage queue.

Next steps:

  • The squad Lead will review and assign to an appropriate team member
  • A squad:member label will be added after triage

If you know which squad member should handle this, you can add the appropriate squad:member label yourself.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR appears to adjust internal Squad agent documentation, but the PR metadata describes a maindev reconciliation intended to unblock a Sprint 13 release path.

Changes:

  • Added an additional “Key Learnings” note to .squad/agents/gimli/history.md.

Comment thread .squad/agents/gimli/history.md Outdated
4. **Runner JSON settings for integration tests** — Keep `parallelizeAssembly: false` for integration tests that share Docker containers. This prevents container port conflicts that would cause flaky tests.

5. **Pre-push gate runs integration tests** — The repo's pre-push hook runs `tests/Web.Tests.Integration` automatically. All 12 tests passed including the Testcontainers-based MongoDB and Redis tests.
2. Scope discipline matters here: do not churn nearby tests for unrelated convention gaps when the requested review is only about async continuation configuration. No newline at end of file

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line continues the ordered "Key Learnings" list but uses "2." after items 1–5 above, which makes the source numbering inconsistent and harder to follow. Update the list marker to the next number (e.g., "6.") or convert this note into a separate paragraph/bullet outside the ordered list.

Suggested change
2. Scope discipline matters here: do not churn nearby tests for unrelated convention gaps when the requested review is only about async continuation configuration.
6. Scope discipline matters here: do not churn nearby tests for unrelated convention gaps when the requested review is only about async continuation configuration.

Copilot uses AI. Check for mistakes.
Comment thread .squad/agents/gimli/history.md Outdated
4. **Runner JSON settings for integration tests** — Keep `parallelizeAssembly: false` for integration tests that share Docker containers. This prevents container port conflicts that would cause flaky tests.

5. **Pre-push gate runs integration tests** — The repo's pre-push hook runs `tests/Web.Tests.Integration` automatically. All 12 tests passed including the Testcontainers-based MongoDB and Redis tests.
2. Scope discipline matters here: do not churn nearby tests for unrelated convention gaps when the requested review is only about async continuation configuration. No newline at end of file

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR title/description indicate a main→dev reconciliation (conflict resolution, test project cleanup), but in this diff the only change is a single line in a history markdown file. If the reconciliation changes are missing from the PR, please include them; otherwise update the PR description to match the actual scope so reviewers can validate the right acceptance criteria.

Copilot uses AI. Check for mistakes.
@github-actions

github-actions Bot commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

Test Results Summary

273 tests  ±0   273 ✅ ±0   16s ⏱️ ±0s
  6 suites ±0     0 💤 ±0 
  6 files   ±0     0 ❌ ±0 

Results for commit f28ac3e. ± Comparison against base commit 4ac82b8.

♻️ This comment has been updated with latest results.

@codecov

codecov Bot commented Apr 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.64%. Comparing base (4ac82b8) to head (f28ac3e).
⚠️ Report is 33 commits behind head on dev.

Additional details and impacted files
@@           Coverage Diff           @@
##              dev     #212   +/-   ##
=======================================
  Coverage   78.64%   78.64%           
=======================================
  Files          43       43           
  Lines         721      721           
  Branches      112      112           
=======================================
  Hits          567      567           
  Misses        108      108           
  Partials       46       46           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@mpaulosky
mpaulosky merged commit 02cf370 into dev Apr 26, 2026
18 checks passed
@mpaulosky
mpaulosky deleted the squad/211-reconcile-main-into-dev branch April 26, 2026 22:35
@mpaulosky mpaulosky mentioned this pull request Apr 26, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

squad Squad triage inbox — Lead will assign to a member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Sprint 13] Reconcile main into dev before release

2 participants