aneshas/tactical-ddd
42.4
Weak · 21 September 2026
504
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a .NET library implementing Domain-Driven Design (DDD) with a focus on event sourcing. It provides core DDD abstractions, such as constrained value objects and entity models, alongside a modular event sourcing framework. The library includes a Postgres-based event store implementation that persists domain events, complete with integration tests to verify its behavior.
Features
Added Postgres event store and related project structure
The solution now includes new projects for event sourcing, specifically \Tactical.DDD.EventSourcing\ and \Tactical.DDD.EventSourcing.Postgres\, along with integration tests. This introduces a Postgres-based event store implementation alongside the core DDD helpers, allowing users to persist domain events to a Postgres database.
(repo-wide) · high confidence
Added Postgres event store implementation
Introduced a new Postgres-based event store, including the \EventStore\ implementation of \IEventStore\ and \IPullEventStreamEventStore\, along with \PostgresOffsetTracker\ for tracking projection offsets. The change adds service collection extensions (\AddPostgresEventStore\, \AddPostgresAperture\) to register the store, migrator, and offset tracker, and provides an application builder extension to ensure the \events\ table is created on startup.
Tactical.DDD.EventSourcing.Postgres · high confidence
Behavioural changes
Introduced core Event Sourcing abstractions
Added the foundational types for the event sourcing module: a new \Event\ record to represent a stored event with metadata and domain data, and an \IEventStore\ interface defining the contract for loading and saving events by aggregate ID and version.
Tactical.DDD.EventSourcing · high confidence
Refactors core DDD abstractions and introduces event sourcing support
The library replaces the previous abstract base classes (DomainIdentity, ValueObject) with new abstractions: a generic ConstrainedValue for value objects, a DomainException for domain errors, and a DomainEvent record. The Entity base class now requires its identity to be an EntityId, and the AggregateRoot now supports event sourcing by tracking and applying DomainEvents.
Tactical.DDD · medium confidence
Removed EventSourcing base classes and interfaces
The \AggregateRoot\ class, \IAggregate\ interface, and \IEventStore\ interface in the \Tactical.DDD.EventSourcing\ namespace have been removed from the codebase. This eliminates the previous implementation of the event sourcing pattern for aggregate roots and their associated storage contracts.
Tactical.DDD/EventSourcing · high confidence
Test coverage
Added Postgres integration tests for the event store; Added test models for domain events and aggregates; Added tests for constrained value objects and entity equality.
Dependencies
Upgrade to .NET 7 and update test SDK
The project files have been updated to target .NET 7, replacing the previous .NET Core 2.1 and .NET 5 targets. The test project has been upgraded to use the Microsoft.NET.Test.Sdk version 16.7.1, and the C\# language version has been set to 9. Additionally, the main library projects now include SourceLink configuration via Microsoft.SourceLink.GitHub and reference Microsoft.CSharp 4.6.0.
(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
Score
- CAI 43 → 42 (-0.6)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 77 → 75 (-1.6)
- Architecture 100 → 100 (+0.0)
- Maturity 43 → 43 (+0.0)
- Readiness 25 → 25 (+0.0)
- Security 88 → 77 (-11.0)
- Performance 60 → 60 (+0.0)
Resolved (4)
- No exposed public API
- The README links to a Medium post for the example project but does not itself describe how to use any of the tactical helper types (AggregateRoots, ValueObjects) or link to the example project. (README.md)
- dormant codebase — no living knowledge left to concentrate
- redundant comment (Tactical.DDD/ConstrainedValue.cs)
New (5)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- End-of-life runtime: .NET net5.0
- End-of-life runtime: .NET net7.0
- WriteOnlyPrivateField (Tactical.DDD.EventSourcing.Postgres/Aperture/PostgresProjection.cs)
Architecture
- Unchanged — 1 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
aneshas/tactical-ddd 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 7914d71400375c0218c617175b205717f5d87eb2 — 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.