Skip to content
CAI
Software that uses CAICheck a score

ardalis/CleanArchitecture.WorkerService

47.7

Weak · 21 September 2026

436

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Features

Add HttpService for HTTP client abstraction

A new HttpService class has been introduced in the CleanArchitecture.Infrastructure.Http namespace, implementing the IHttpService interface. This service provides a method to retrieve the HTTP status code of a given URL, abstracting the underlying HttpClient usage for the application.

src/CleanArchitecture.Infrastructure/Http · high confidence

Added entry point service for processing queue messages

Introduced a new EntryPointService that orchestrates the processing of incoming queue messages. The service retrieves messages from a configured queue, checks the status of a URL via a new UrlStatusChecker, and persists the results using a repository within a dependency-injected scope. This change adds supporting infrastructure including the IServiceLocator interface and ServiceScopeFactoryLocator to manage service scopes, as well as EntryPointSettings to configure queue names.

src/CleanArchitecture.Core/Services · medium confidence

Added in-memory queue sender and receiver implementations

Introduced InMemoryQueueSender and InMemoryQueueReceiver classes that implement the IQueueSender and IQueueReceiver interfaces, respectively. These components provide a simple in-memory message passing mechanism using a static Queue, allowing messages to be sent and received within the same process without external dependencies.

src/CleanArchitecture.Infrastructure/Messaging · high confidence

Introduce Entity Framework Core data access layer

Added the core data access components for the application, including the AppDbContext, an EF Core repository implementation, and the initial database migration for the UrlStatusHistory entity. This establishes the underlying database schema and repository pattern for persisting URL status history records.

src/CleanArchitecture.Infrastructure/Data · high confidence

Introduce background worker service with periodic execution and configuration

A new background worker service has been added to the application. It runs periodically, executing an entry point service and then waiting for a configurable delay (defaulting to 1000ms). The worker is configured via appsettings.json, which also defines connection strings for a SQL Server database and queue names for message handling. The service is containerized via a new Dockerfile and registers all necessary dependencies, including a logger adapter, repository, and message queue services.

src/CleanArchitecture.Worker · high confidence

Introduces core domain interfaces and entities for URL status tracking

The codebase now includes a set of new interfaces in the core layer to support URL status checking, queue-based messaging, and repository patterns. Specifically, it adds IUrlStatusChecker for verifying URL states, IQueueSender/IQueueReceiver for message queue interactions, IRepository for data access, and ILoggerAdapter for logging. These are paired with domain entities like UrlStatusHistory and a generic BaseEntity, enabling the application to track status changes and persist history.

src/CleanArchitecture.Core/Interfaces · high confidence

Behavioural changes

CleanArchitecture.WorkerService template updated to .NET 8 with new project structure and configuration

The CleanArchitecture.WorkerService template has been upgraded to target .NET 8 (net8.0) and now includes a new solution structure with projects for Core, Infrastructure, Worker, and Unit Tests. A new Directory.Build.props file enforces the .NET 8 target framework, while global.json specifies the .NET 7.0 SDK for tooling. The template now ships as a .NET 8-based solution, replacing the previous .NET 7/3.1 configurations. The README has been updated to reflect the new setup instructions and .NET 8 compatibility.

(repo-wide) · high confidence

Test coverage

Added unit tests for EntryPointService; Added unit tests for InMemoryQueueReceiver validation.

Dependencies

Centralized package version management and .NET 8/8.0.0 library updates

The project now uses a central Directory.Packages.props file to manage NuGet package versions, ensuring consistent versions across all projects. This includes updating to .NET 8.0.0 for key libraries such as Microsoft.Extensions.Hosting, Microsoft.EntityFrameworkCore.SqlServer, and Microsoft.AspNetCore.Identity.EntityFrameworkCore, while also updating testing dependencies like Microsoft.NET.Test.Sdk, Moq, and xunit.runner.visualstudio to their latest compatible versions.

(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 46 → 48 (+1.9)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 68 → 68 (+0.0)
  • Architecture 70 → 70 (+0.0)
  • Maturity 61 → 61 (+0.0)
  • Readiness 42 → 42 (+0.2)
  • Security 37 → 41 (+4.0)

Resolved (12)

  • 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)
  • No exposed public API
  • no production source files with tracked history to analyse
  • no production source files with tracked history to analyse
  • redundant comment (src/CleanArchitecture.Core/Services/EntryPointService.cs)

New (30)

  • Base-context workflow trigger runs with an unscoped token
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no project overview (README.md)
  • Documentation: no usage examples (README.md)
  • 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)
  • Job token omits the contents scope its checkout needs
  • Low coverage: src/CleanArchitecture.Core/Entities/UrlStatusHistory.cs (src/CleanArchitecture.Core/Entities/UrlStatusHistory.cs)
  • Low coverage: src/CleanArchitecture.Core/Services/ServiceScopeFactoryLocator.cs (src/CleanArchitecture.Core/Services/ServiceScopeFactoryLocator.cs)
  • Low coverage: src/CleanArchitecture.Core/Services/UrlStatusChecker.cs (src/CleanArchitecture.Core/Services/UrlStatusChecker.cs)
  • Low coverage: src/CleanArchitecture.Infrastructure/Data/AppDbContext.cs (src/CleanArchitecture.Infrastructure/Data/AppDbContext.cs)
  • Low coverage: src/CleanArchitecture.Infrastructure/Data/Config/UrlStatusHistoryConfiguration.cs (src/CleanArchitecture.Infrastructure/Data/Config/UrlStatusHistoryConfiguration.cs)
  • Low coverage: src/CleanArchitecture.Infrastructure/Data/EfRepository.cs (src/CleanArchitecture.Infrastructure/Data/EfRepository.cs)
  • Low coverage: src/CleanArchitecture.Infrastructure/Http/HttpService.cs (src/CleanArchitecture.Infrastructure/Http/HttpService.cs)
  • …and 10 more

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

Survey your own repository

ardalis/CleanArchitecture.WorkerService 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 4c129b1312867d5373cbdb03fd95e5e0c14a11a6 — 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-28e75b8e3254.