Whaally/Domain
56.3
Adequate · 21 September 2026
3k
lines of production code
C#
primary language
4
measurements over time
What this system is
Whaally.Domain is a .NET framework for building scalable domain models using DDD and event-sourcing patterns. It provides core abstractions for aggregates, commands, and events, backed by an Orleans-based persistence layer that integrates with Marten and PostgreSQL. The system supports distributed messaging and elastic scalability, with a demo application (Skyhop) illustrating its use in managing flight and aircraft states.
Features
Added Skyhop sample application with domain, hosting, and benchmarking components
The samples directory now includes a complete 'Skyhop' demo application, featuring domain models for flights and aircraft with associated commands, events, and sagas that propagate state changes across contexts. The hosting layer exposes an ASP.NET Core API to manage flight operations, while a separate benchmarking project uses BenchmarkDotNet to measure performance against the Orleans-based domain implementation.
samples · high confidence
Initial release of Whaally.Domain framework with Orleans and Marten infrastructure
The repository is restructured to introduce the \Whaally.Domain\ library, a framework for building scalable domain models using DDD and event-sourcing patterns. This release includes the core domain abstractions (Aggregates, Services, Commands, Events) and provides a reference implementation for infrastructure using Microsoft Orleans and Marten. The solution now organizes projects into \src\, \tests\, and \samples\ directories, with \Whaally.Domain.Infrastructure.OrleansHost\ serving as the concrete infrastructure layer. Additionally, a demo application named \Skyhop\ is added to the samples folder to showcase usage.
(repo-wide) · high confidence
Introduce domain abstractions and Orleans persistence for event-sourced aggregates
The domain layer now provides a complete set of abstractions for command and event handling, including interfaces for aggregates, commands, events, sagas, and services, along with a default implementation of the \IEvaluationAgent\ to orchestrate their evaluation. Additionally, a new Orleans-based persistence layer has been added (\AggregateHandlerGrain\) that integrates with Marten to read and write aggregate state from a PostgreSQL database, enabling elastic scalability for the domain model.
src/Whaally.Domain · high confidence
Orleans integration support for domain objects
Added serialization converters and surrogates for domain types (ActivityContext, CommandEnvelope, EventEnvelope, Result, etc.) to enable distributed messaging in the Orleans host. Introduced the AbstractAggregateHandlerGrain and OrleansAggregateHandlerFactory to manage aggregate state and command evaluation within Orleans grains, allowing the domain layer to scale elastically.
src/Whaally.Domain.Infrastructure.OrleansHost · high confidence
Test coverage
Added domain and integration tests for flight and aircraft management; Added domain tests for command, service, and event handling; Added test coverage for Orleans serialization and command composition scenarios.
Dependencies
Add .NET project files for the Whaally domain and Orleans infrastructure
The repository now includes .csproj files for the core domain library, the Orleans host infrastructure, and the Marten persistence provider, each configured for package generation. Additionally, a demo application named Skyhop and its associated test projects have been added, establishing the build structure for the domain and hosting layers.
(dependencies) · medium 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 53 → 56 (+3.2)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 83 → 82 (-0.9)
- Architecture 84 → 84 (-0.4)
- Maturity 60 → 60 (+0.0)
- Readiness 43 → 48 (+4.5)
- Security 65 → 65 (-0.1)
- Domain Modelling 56 → 61 (+5.3)
- Event-Driven 100 → 100 (+0.0)
- Performance 69 → 69 (+0.0)
Resolved (10)
- Bounded contexts not declared
- Coverage not measured
- 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
- TodoComment (tests/Whaally.Domain.Tests/Fixtures/ClusterFixture.cs)
- single-maintainer — knowledge-concentration (bus factor) risk
New (27)
- Documentation: no installation or build instructions (README.md)
- Duplicated block (12 lines × 2) (samples/Skyhop.Domain/FlightContext/Aggregates/FlightAggregate/Commands/SetArrival.cs)
- Duplicated block (14 lines × 2) (src/Whaally.Domain/DefaultEvaluationAgent.cs)
- Duplicated block (16 lines × 2) (samples/Skyhop.Domain/AircraftContext/Sagas/OnArrival.cs)
- Duplicated block (17–18 lines × 2) (src/Whaally.Domain/Aggregate/DefaultAggregateHandler.cs)
- End-of-life runtime: .NET net6.0
- 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)
- Inconsistent class naming for extension methods: ServiceProviderExtensions vs ServiceCollectionExtensions. These classes likely serve similar infrastructure purposes (DI container setup/retrieval) but are split by specific container interface (IServiceProvider vs IServiceCollection), creating a vocabulary drift between 'ServiceProvider' and 'ServiceCollection' for what is essentially the same extension mechanism.
- Low XML-doc coverage: Skyhop.Domain (samples/Skyhop.Domain/Skyhop.Domain.csproj)
- Low XML-doc coverage: Skyhop.Domain.Benchmark (samples/Skyhop.Domain.Benchmark/Skyhop.Domain.Benchmark.csproj)
- Low XML-doc coverage: Skyhop.Hosting (samples/Skyhop.Hosting/Skyhop.Hosting.csproj)
- Low XML-doc coverage: Whaally.Domain (src/Whaally.Domain/Whaally.Domain.csproj)
- Low XML-doc coverage: Whaally.Domain.Infrastructure.OrleansHost (src/Whaally.Domain.Infrastructure.OrleansHost/Whaally.Domain.Infrastructure.OrleansHost.csproj)
- Low XML-doc coverage: Whaally.Domain.Infrastructure.OrleansHost.MartenPersistence (src/Whaally.Domain.Infrastructure.OrleansHost.MartenPersistence/Whaally.Domain.Infrastructure.OrleansHost.MartenPersistence.csproj)
- Medium: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 7 more
API surface
- Unchanged — 5 HTTP endpoints
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Whaally/Domain 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 32937401504feaac8ae51b153c2abf8dcf662570 — 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.