chore: promote dev → main (v0.9.0)#268
Conversation
* chore: Update MCP server configurations and squad export (#246) * chore: merge release-process skill review decisions, update agent histories, archive aged decisions - Merged three inbox decision entries (Aragorn/Boromir/Frodo) into decisions.md - Updated agent history files with 2026-04-12 team sync learnings - Archived pre-April-1 decisions to decisions-archive.md for operational clarity - Released context by condensing aged decision records Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * .squad: Scribe logs for Frodo release-process legacy stub Session: 2026-04-12T19:57:04Z Tasks completed: 1. Orchestration log: frodo agent release-process deprecation task 2. Session log: release-skill-legacy-stub work summary 3. Decision inbox merged: frodo-release-process-legacy-stub.md → decisions.md 4. Frodo history.md updated: Added legacy stub deprecation entry 5. Inbox file deleted after merge Outputs: - .squad/orchestration-log/2026-04-12T19-57-04Z-frodo.md (new) - .squad/log/2026-04-12T19-57-04Z-release-skill-legacy-stub.md (new) - .squad/decisions.md (appended, 92896 bytes) - .squad/agents/frodo/history.md (updated with team context) No archival needed (92896 bytes < 20KB threshold would trigger archive, but this represents 2026-04 additions; all old decisions within 30d window). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * .squad: History file summarization (aragorn, frodo, legolas, pippin) Task 7: Summarized old entries (>30d) to '## Core Context' section. Files: - aragorn: 29KB → 21KB (kept March 28+ recent entries) - frodo: 16KB → 6KB (kept April 12+ recent entries) - legolas: 14KB → 4KB (consolidated CSS, styling, theme learnings) - pippin: 12KB → 4KB (consolidated Aspire, Playwright, team rule learnings) All summarized files now <12KB threshold except Aragorn (21KB still acceptable with Core Context structure). Maintains full context while improving readability. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update MCP server configurations and squad export - Update .copilot/mcp-config.json with enhanced MCP server definitions - Add .mcp.json for MCP client integration (untracked) - Update squad-export.json with latest team metadata Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: update frodo agent history --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: scribe log and decisions export (#247) * scribe: Log PR flow and merge decisions inbox - Added orchestration log for Boromir PR creation/merge attempt (PR #246) - Added session log for PR workflow (squad/scribe-log-mcp-export) - Merged 3 decision inbox files into decisions.md: * Boromir: Branch strategy (dev/main model) feasibility audit * Boromir: MCP config commit safety assessment * Frodo: Documentation audit for dev/main branch model - Cleared .squad/decisions/inbox/ (all inbox files processed) This completes the spawn manifest processing for Boromir's two-pass PR flow attempt. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * scribe: Add Aragorn adoption decision to decisions.md - Merged Aragorn's comprehensive two-branch strategy assessment - Includes GitVersion.yml configuration recommendations - Provides phased implementation roadmap (Phase 1 infrastructure, Phase 2 docs) - Clearcut approval gate: requires Matthew Paulosky sign-off - All decision inbox files now processed and cleared Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add pre-push and merge playbooks, fix process documentation - New .squad/playbooks/pre-push-process.md (5-gate walkthrough) - New .squad/playbooks/pr-merge-process.md (8-step merge lifecycle) - Fix release-issuetracker.md (NBGV→GitVersion, two-branch model) - Rewrite pre-push-test-gate skill (all 5 gates, 10 test projects) - Flag 3 Squad CLI skills as non-applicable to IssueTrackerApp - Update routing.md with playbook-aware routing - Add playbook cross-references to ceremonies.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>"
Set allowPrerelease to false to use stable .NET SDK only.
…255) v3.1.11 and v3 tags only support GitVersion <6.1.0, but 6.x now resolves to 6.7.0 which is out of range. Upgrade all four release workflows to gittools/actions@v4.5.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sync main back to dev after release v0.8.0 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#259) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Syncs squad workflow files from the dotfiles repository into this project. ## Changes - Updated `squad-export.json` with latest squad workflow configuration (81 insertions / 25 deletions) ## Notes Working as Ralph (Work Monitor) --- *All pre-push gates passed: build ✅ | unit tests (2,026) ✅ | integration tests (339) ✅* Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds `*.csproj.lscache` pattern to `.gitignore` to suppress 16 untracked LSP artifact files generated by the C# language server. These files are build/IDE artifacts and should never be committed. --- 🤖 Ralph (Work Monitor) — housekeeping chore Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…0.202 in the all-actions group (#262) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Summary Resolves the breaking changes introduced by Dependabot PR #264 (Auth0.ManagementApi 7.46.0 → 8.1.0 major bump) and bumps remaining packages. ### Changes **`Directory.Packages.props`** — version bumps applied (mirrors Dependabot PR #264): - `Auth0.ManagementApi`: 7.46.0 → 8.2.0 **`src/Web/Features/Admin/Users/UserManagementService.cs`** - Removed manual token-fetch machinery (`IHttpClientFactory`, `TokenCacheService`, token endpoint calls) - Inject `IManagementApiClient` directly — v8 handles token caching internally - All five public methods updated to v8 call patterns **`src/Web/Features/Admin/Users/UserManagementExtensions.cs`** - Replaced `AddHttpClient` + `TokenCacheService` registration with `AddSingleton<IManagementApiClient>` using `ManagementClient(ManagementClientOptions { TokenProvider = new ClientCredentialsTokenProvider(...) })` **`tests/Web.Tests/Services/UserManagementServiceTests.cs`** - Constructor updated to accept `IManagementApiClient?` instead of `IHttpClientFactory?` - Token-caching tests removed (v8 handles internally) - `FakeHttpMessageHandler` deleted **`tests/Web.Tests/Features/Admin/Users/UserManagementServiceCacheTests.cs`** - `DefaultOptions`/`IHttpClientFactory`/`TokenOnlyHttpClientFactory`/`FakeHttpMessageHandler` all removed - `CreateSut` accepts `IManagementApiClient?` - Cache-miss tests now assert `ExternalService` error code ### Test results (local) | Suite | Result | |---|---| | Architecture.Tests | ✅ 63/63 | | Domain.Tests | ✅ 419/419 | | Web.Tests.Bunit | ✅ 934/934 | | Persistence.MongoDb.Tests | ✅ 77/77 | | Web.Tests | ✅ 498/498 | | Persistence.AzureStorage.Tests | ✅ 33/33 | >⚠️ This task was flagged as "needs review" — please have a squad member review before merging. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary Reworks this PR into a **skill-only** change set and keeps the Auth0 guidance aligned with the current `dev` branch after the Auth0 Management API v8 migration. --- ### Changes **Skill package only** — `.github/skills/implement-auth0-authentication/` | File | Purpose | |------|---------| | `SKILL.md` | Main skill entry point with secure Auth0 workflow guidance | | `references/configuration-prompts.md` | Prompts for collecting Auth0 web-app and M2M configuration | | `references/auth-implementation.md` | Auth0 claims transformation, UI components, and secure login/logout examples | | `references/program-configuration.md` | `Program.cs` wiring, secure endpoint mapping, antiforgery, and testing-mode auth | | `references/admin-user-management.md` | Current Auth0 Management API v8 patterns for user/role management | ### Rework notes - Removed the obsolete `Directory.Packages.props` rollback entirely - Updated the skill to reflect the merged Auth0 Management API **v8.2.0** path on `dev` - Replaced stale v7 guidance (`ManagementApiClient`, manual token fetching, `Auth0.ManagementApi.Models/Paging`) with the current v8 approach (`IManagementApiClient`, `ManagementClient`, `ClientCredentialsTokenProvider`, `Auth0.ManagementApi.Users`) - Updated the login guidance to use local return-url validation and CSRF-safe logout patterns ### Validation - `dotnet build IssueTrackerApp.slnx --configuration Release` - All unit, integration, and AppHost test suites passed via the pre-push gate⚠️ Please have a squad reviewer confirm the Auth0 guidance before merging. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🏗️ PR Added to Squad Triage QueueThis PR has been labeled with Next steps:
|
There was a problem hiding this comment.
Pull request overview
Promotes dev into main for the v0.9.0 release, carrying forward dependency/tooling updates plus the Auth0 Management API v8 refactor (DI + tests) and squad workflow automation changes.
Changes:
- Refactor Auth0 admin user management to consume injected
IManagementApiClient(v8) and update related unit/integration tests. - Update .NET SDK and NuGet package versions for the release train.
- Update/extend squad automation (promotion workflow tweak, heartbeat cadence, new PR auto-label workflow) and clean up tracked squad logs/artifacts.
Reviewed changes
Copilot reviewed 80 out of 81 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Web.Tests/Services/UserManagementServiceTests.cs | Updates unit tests to use injectable IManagementApiClient and adds coverage for missing-userId list entries. |
| tests/Web.Tests/Features/Admin/Users/UserManagementServiceCacheTests.cs | Updates cache behavior tests to use IManagementApiClient stubs instead of HTTP/token plumbing. |
| tests/Web.Tests.Integration/CustomWebApplicationFactory.cs | Adds Auth0Management config for startup and stubs IUserManagementService for integration tests. |
| src/Web/Features/Admin/Users/UserManagementService.cs | Migrates Auth0 Management operations to v8 SDK shapes and injected client; adds skip-roles lookup for missing UserId. |
| src/Web/Features/Admin/Users/UserManagementExtensions.cs | Registers singleton IManagementApiClient via ClientCredentialsTokenProvider and wires service DI. |
| src/AppHost/AppHost.cs | Skips /health HTTP health check wiring when running in Testing environment. |
| global.json | Pins repo to .NET SDK 10.0.202. |
| Directory.Packages.props | Updates centralized package versions (Auth0 SDK v8, Aspire, Microsoft Extensions, Playwright, etc.). |
| .squad/orchestration-log/2026-04-02-process-review.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-04-01T19:49:17Z-frodo.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-04-01T19:49:17Z-bilbo.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-04-01T17:15:15Z-ralph.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T21:33:13Z-ralph.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T21-49-00Z-boromir.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T21-49-00Z-aragorn.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T18:47:42Z-legolas-adminlayout.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T18:47:42Z-gimli-adminlayout.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T18:08:58Z-sam.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T18:08:58Z-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T18:08:58Z-aragorn.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T17:04:58Z-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T17:03:05Z-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T16:55:42Z-boromir.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T15-20-55Z-pippin.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-29T14:58:15Z-pippin.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22:42:44Z-pippin.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22:42:44Z-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22-08-49Z-boromir-pr81-fix.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22-08-48Z-gandalf-pr81-review.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22-08-47Z-boromir-pr81-r2.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-27T22-08-46Z-aragorn-pr81-r2.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-24T14_15_51Z-gimli.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-24T14_15_51Z-aragorn.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-19T15-44-51Z-gimli.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-19T15-44-51Z-boromir.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-18-sam.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-18-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-18-gimli.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-17T18-54-25Z-legolas.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-17T18-54-25Z-gandalf.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-17T17-26-00Z-sam.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-17T14-30-00Z-gimli.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2026-03-17T14-30-00Z-aragorn.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2025-03-29T08-33-36Z-pr86-merged.md | Removes historical orchestration log entry from tracking. |
| .squad/orchestration-log/2025-03-21T15-05-sam.md | Removes historical orchestration log entry from tracking. |
| .squad/log/2026-04-02-process-docs-review.md | Removes historical session log entry from tracking. |
| .squad/log/2026-04-01T19:49:17Z-blog-catchup-release-notes.md | Removes historical session log entry from tracking. |
| .squad/log/2026-04-01T17:15:15Z-ralph-ci-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T21-49-00Z-pr-review-process.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T18:47:42Z-adminlayout-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T18:08:58Z-role-claims-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T17:04:58Z-signalr-text-size.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T17:03:05Z-footer-text-size.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T16:55:42Z-boromir-dependabot-merge.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T15-20-55Z-ralph-round2.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29T14:58:15Z-ralph-round1.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-29-ralph-pr102-merged.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-27T22:42:44Z-issues-77-78-79-80.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-27T22-09-00Z-pr81-review-merge.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-27T14-05-27Z-playwright-e2e-tests.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-21T15:42:40Z-pr60-review.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-19T15-44-51Z-buildinfo-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-17T18-54-25Z-auth0-nav-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2026-03-17T17-26-00Z-di-lifetime-fix.md | Removes historical session log entry from tracking. |
| .squad/log/2025-03-29T08-33-36Z-ralph-session-complete.md | Removes historical session log entry from tracking. |
| .squad/log/2025-03-21T15-05-mongodb-config-fix.md | Removes historical session log entry from tracking. |
| .squad/decisions.md | Appends decision log entry related to PR #265 revision cycle/lockout process. |
| .squad/config.json | Removes obsolete squad config file from tracking. |
| .squad/ceremonies.md | Updates ceremonies to align with dev→main workflow and branch cleanup commands. |
| .squad/agents/sam/history.md | Adds Sam’s history entry for PR #265 revision cycle assignment. |
| .squad/agents/aragorn/history.md | Adds Aragorn’s history entry for PR #265 second review/rejection. |
| .squad/.first-run | Removes first-run marker file from tracking. |
| .gitignore | Ignores *.csproj.lscache IDE artifacts. |
| .github/workflows/squad-promote.yml | Hardens promote PR detection by ensuring jq returns empty when no PR exists. |
| .github/workflows/squad-pr-auto-label.yml | Adds automation to label/comment PRs into the squad triage/review system. |
| .github/workflows/squad-heartbeat.yml | Increases heartbeat schedule frequency from 30 minutes to 15 minutes. |
| .github/skills/implement-auth0-authentication/references/program-configuration.md | Adds Auth0 Program.cs configuration reference for the skill. |
| .github/skills/implement-auth0-authentication/references/configuration-prompts.md | Adds detailed prompting script for collecting Auth0 configuration values. |
| .github/skills/implement-auth0-authentication/references/auth-implementation.md | Adds reference implementation patterns for Auth0 auth infrastructure/components. |
| .github/skills/implement-auth0-authentication/references/admin-user-management.md | Adds Auth0 Management API v8 admin user-management reference. |
| .github/skills/implement-auth0-authentication/SKILL.md | Adds the Auth0 implementation skill definition and procedure. |
| [Fact] | ||
| public async Task AssignRolesAsync_OnSuccess_CallsRemoveAsyncForUserByIdKey() | ||
| { | ||
| // NOTE: ManagementApiClient is sealed and constructs its own HttpClient, so the | ||
| // eviction-after-success path is not fully unit-testable without refactoring the | ||
| // service to accept an IManagementApiClientFactory. This test verifies that: | ||
| // a) the SUT accepts the injected IDistributedCache without null-ref, | ||
| // b) validation returns NotBe(Validation) for a valid non-empty roles call, | ||
| // c) a cache read error (sentinel path) does not surface as an exception. | ||
| // Full eviction coverage is tracked in TODO in UserManagementServiceTests.cs. | ||
| // NOTE: The Management API stub returns default (null-valued struct) which causes | ||
| // a NullReferenceException caught as ExternalService. The eviction path runs only | ||
| // after a confirmed success, so this test verifies the SUT wires up correctly and | ||
| // a non-empty roles call reaches Auth0 (returns ExternalService, not Validation). | ||
| // Full eviction coverage is tracked as a TODO in UserManagementServiceTests.cs. |
There was a problem hiding this comment.
The test name suggests it verifies eviction behavior on a successful role assignment, but the test only asserts ExternalService due to the Management API substitute returning defaults. This mismatch can mislead future maintainers and may hide regressions in the real eviction-on-success path. Either (a) rename the test to reflect the actual behavior being asserted, or (b) now that IManagementApiClient is injectable, stub a successful AssignAsync + role lookup and assert the expected RemoveAsync/version-bump calls.
| auto-label: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Auto-label PR for squad system | ||
| uses: actions/github-script@v9 | ||
| with: | ||
| script: | |
There was a problem hiding this comment.
This workflow runs on pull_request_target with pull-requests: write. That event executes in the base repo security context, so any future change that reads PR-controlled content (or checks out PR code) could become a privilege-escalation path. Consider adding an explicit guard (e.g., only run for pr.head.repo.full_name === context.repo.full_name or restrict what actions are taken for forks), and add a comment in the workflow explaining the threat model/safety constraints (no checkout, no PR file reads).
| auto-label: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Auto-label PR for squad system | |
| uses: actions/github-script@v9 | |
| with: | |
| script: | | |
| auto-label: | |
| # Security: this workflow runs on pull_request_target, which executes in | |
| # the base repository security context with write access to PRs. Restrict | |
| # it to same-repository PRs only. Do not add actions/checkout here and do | |
| # not read PR-controlled files/content without a separate security review. | |
| if: github.event.pull_request.head.repo.full_name == github.repository | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Auto-label PR for squad system | |
| uses: actions/github-script@v9 | |
| with: | |
| script: | | |
| // Security note: keep this script limited to GitHub API metadata | |
| // and write operations on the PR. Do not check out PR code or | |
| // read PR-controlled files in this pull_request_target workflow. |
| <!-- Azure Storage --> | ||
| <PackageVersion Include="Azure.Storage.Blobs" Version="12.25.0" /> | ||
| <PackageVersion Include="Azure.Storage.Blobs" Version="12.20.0" /> | ||
| <!-- Azure Key Vault --> |
There was a problem hiding this comment.
Azure.Storage.Blobs is being downgraded (12.25.0 → 12.20.0) while most other dependencies are bumped. If this isn’t intentional, it can reintroduce fixed bugs/security issues or break features relying on newer APIs. Please confirm this downgrade is required; otherwise keep it at the previous/newer version to match the overall upgrade direction.
| /// These tests use a real <see cref="MemoryDistributedCache" /> so cache read/write round-trips | ||
| /// are exercised without mocking serialization internals. The Auth0 Management API layer is | ||
| /// replaced by a <see cref="FakeHttpMessageHandler" /> that returns precanned JSON for the | ||
| /// M2M token endpoint. Management API calls that would contact Auth0 are expected to fail with | ||
| /// <see cref="ResultErrorCode.ExternalService" /> — the tests assert cache behaviour, not the | ||
| /// success path of the Management API itself. | ||
| /// replaced by an NSubstitute <see cref="IManagementApiClient" /> stub. Cache-miss tests assert | ||
| /// <see cref="ResultErrorCode.ExternalService" /> (NSubstitute default returns a null-valued struct | ||
| /// which causes NullReferenceException, caught as ExternalService by the service). |
There was a problem hiding this comment.
These cache-miss tests currently rely on NSubstitute returning a default/null-valued SDK result which triggers a NullReferenceException, and then asserting ExternalService. That makes the tests brittle (tied to NSubstitute + SDK implementation details) and it doesn’t clearly verify the intended behavior. Prefer explicitly configuring the IManagementApiClient substitute to throw a known exception (or return a known pager) so the test failure mode is intentional and stable.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #268 +/- ##
==========================================
- Coverage 78.52% 78.14% -0.38%
==========================================
Files 228 228
Lines 8481 8462 -19
Branches 1166 1170 +4
==========================================
- Hits 6660 6613 -47
- Misses 1284 1305 +21
- Partials 537 544 +7
🚀 New features to boost your workflow:
|
Release Promotion
Merging
devintomainfor release v0.9.0 using a conflict-resolved promotion branch.Notes
global.jsonand.github/workflows/squad-promote.ymldiverged betweenmainanddevdevversions of both filesdevfor release promotionValidation
squad/267-release-v0-9-0After merging, run squad-milestone-release with a minor bump to tag and publish the GitHub Release.