Skip to content
CAI
Software that uses CAICheck a score

SSWConsulting/SSW.VerticalSliceArchitecture

62.5

Adequate · 21 September 2026

2.3k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a .NET 10 template implementing Vertical Slice Architecture, designed to demonstrate modern backend development patterns using FastEndpoints and .NET Aspire. It provides a structured foundation for building domain-driven APIs with features like event-driven consistency, robust pagination, and centralized observability. The project includes comprehensive tooling for local development, testing, and dependency management, serving as a reference implementation for scalable service design.

Features

Added .NET Aspire service defaults for observability and resilience

The src/ServiceDefaults/Extensions.cs file now provides a centralized configuration for .NET Aspire services. This includes automatic setup for OpenTelemetry (logging, metrics, and tracing with OTLP export), default health checks (liveness and readiness endpoints), service discovery, and HTTP client resilience. These defaults are applied via the AddServiceDefaults extension method, simplifying the integration of standard infrastructure concerns across service projects.

src/ServiceDefaults · high confidence

Initial release of the SSW Vertical Slice Architecture template for .NET 10

This entry introduces the foundational structure of the SSW Vertical Slice Architecture template, targeting .NET 10. It establishes the solution layout using the new .slnx format, defines coding standards via a comprehensive .editorconfig, and sets up the project configuration in Directory.Build.props. The template includes a sample domain (Heroes) to demonstrate Vertical Slice Architecture principles, integrates Aspire for local orchestration and observability, and provides agent skills for scaffolding new slices and entities.

(repo-wide) · high confidence

Introduce Aspire AppHost with local SQL Server 2025 and dev-only data seeding

The tools area now includes a new AppHost project that orchestrates the application using .NET Aspire. This setup configures an Azure App Service environment (B1 tier) for publishing and runs a local SQL Server 2025 container for development, grouped under the 'SSW-VSA' project in Docker UIs. The AppHost manages EF Core migrations via Aspire's AddEFMigrations and conditionally adds a Seeder service in run mode to populate the database with sample data using Bogus, ensuring no seed data reaches production. It also configures Application Insights and Log Analytics only in publish mode, while using the Aspire Dashboard locally.

tools · high confidence

Behavioural changes

Introduce domain-driven architecture with FastEndpoints, pagination, and eventual consistency

The WebApi layer has been restructured to follow a vertical slice and domain-driven design, replacing the previous implementation with FastEndpoints. This change introduces a robust domain model for Heroes and Teams, featuring strongly typed IDs, aggregate roots, and value objects. It adds a standardized pagination and sorting system that enforces safe, allow-listed column mapping and clamped page sizes. Additionally, the API now supports eventual consistency by automatically dispatching domain events after database saves, with a middleware layer to handle offline event processing.

src/WebApi · high confidence

Teams API endpoints migrated to FastEndpoints with pagination and event-driven power level updates

The Teams feature area has been re-implemented using the FastEndpoints framework, replacing the previous minimal API approach. This change introduces new endpoints for creating teams, retrieving team details (including nested hero and power data), listing teams with pagination and sorting, adding heroes to teams, and executing or completing missions. The GetAllTeams endpoint now supports standard paged envelopes with configurable page size and sort columns. Additionally, an event handler has been added to asynchronously recalculate team power levels when individual hero power levels are updated, ensuring eventual consistency across the system.

src/WebApi/Features/Teams · high confidence

Test coverage

Added architecture and pagination unit tests; Added integration test infrastructure and helpers; Added integration tests for Heroes and Teams endpoints; Added unit tests for Heroes and Teams domain logic and request validators.

Dependencies

Centralized dependency management and security pinning

The project now uses central package version management via Directory.Packages.props to standardize all NuGet references across the solution. This update includes upgrading core libraries such as Aspire to 13.5.3, FastEndpoints to 8.2.0, and xunit to v3.2.1, while also pinning specific transitive dependencies—MessagePack (2.5.302), Microsoft.OpenApi (2.9.0), and SSH.NET (2026.0.0)—to resolve high-severity security vulnerabilities (NU1903) and build warnings.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 64 → 62 (-1.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 84 → 83 (-0.1)
  • Architecture 94 → 95 (+1.0)
  • Maturity 75 → 79 (+3.9)
  • Readiness 65 → 57 (-8.5)
  • Security 79 → 80 (+1.6)
  • Domain Modelling 74 → 78 (+4.0)
  • Performance 55 → 55 (-0.2)

Resolved (18)

  • Bounded contexts not declared
  • Duplicated block (16 lines × 2) (src/WebApi/Features/Heroes/CreateHero/CreateHeroRequestValidator.cs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • LLM evaluation failed
  • LLM evaluation failed
  • No exposed public API
  • Off-boarding risk: anonymized user #1

New (30)

  • CommentedOutCode (src/ServiceDefaults/Extensions.cs)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (24 lines × 2) (src/WebApi/Features/Heroes/CreateHero/CreateHeroRequestValidator.cs)
  • Duplicated block (5 lines × 3) (src/WebApi/Common/Domain/Heroes/Hero.cs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 10 more

Changes since last survey

  • 16 commits — 15 feature/other, 1 fixes

By area

  • (root) — 14 commits
  • src/WebApi — 1 commit
  • tools/Seeder — 1 commit

Notable commits

  • fix: fix(deps): pin SSH.NET to 2026.0.0 to clear NU1903 (#312)
  • change: Bump Microsoft.Extensions.Http.Resilience from 10.1.0 to 10.8.0 (#301)
  • change: Bump Microsoft.Extensions.ServiceDiscovery from 10.0.0 to 10.8.0 (#302)
  • change: Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.8.1 (#303)
  • change: Bump NSubstitute from 5.3.0 to 6.0.0 (#304)
  • change: Bump OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.3 to 1.17.0 (#305)
  • change: Bump OpenTelemetry.Extensions.Hosting from 1.15.3 to 1.17.0 (#306)
  • change: Bump OpenTelemetry.Instrumentation.AspNetCore from 1.15.2 to 1.17.0 (#307)
  • change: Bump OpenTelemetry.Instrumentation.Http from 1.15.1 to 1.17.0 (#308)
  • change: Bump OpenTelemetry.Instrumentation.Runtime from 1.15.1 to 1.17.0 (#309)
  • change: Bump Polly from 8.6.5 to 8.7.0 (#310)
  • change: chore(agents): make CLAUDE.md canonical and add /add-adr skill (#298)
  • change: chore(deps): bump Aspire to 13.5.3 and enable the CLI bundle (#313)
  • change: docs(migrations): require --force when removing a migration (#311)
  • change: feat(api): add pagination and sorting primitives (#297)
  • change: feat(aspire): replace MigrationService with Aspire's AddEFMigrations (#300)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

SSWConsulting/SSW.VerticalSliceArchitecture was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6bbf585e210bad489dacad79c7b1aee1ab8f0b7d — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.