kwaazaar/Resonance
49.1
Weak · 21 September 2026
3.9k
lines of production code
C#
primary language
4
measurements over time
What this system is
Resonance is a .NET eventing library that implements a messaging system supporting pub/sub, FIFO, and functional ordering for Microsoft SQL Server and MySQL. It provides features such as delayed delivery, message expiration, configurable retry policies with exponential backoff, and batch processing capabilities. The system includes structured error handling, subscription statistics, and housekeeping tasks to manage event lifecycle and reliability.
Features
Added local NuGet build and restore infrastructure
The project now includes local MSBuild targets (NuGet.targets) and configuration (NuGet.Config) to manage package restoration and NuGet.exe updates directly within the repository. This enables the build system to automatically download the latest NuGet.exe if missing and restore packages before building, ensuring consistent dependency resolution without relying on external tooling installations.
.nuget · high confidence
Core eventing models and retry configuration introduced
The core data models for the eventing system have been defined, including Topic, Subscription, TopicEvent, SubscriptionEvent, and ConsumableEvent, which support features such as functional ordering, delivery delays, TTL, and header-based filtering with negation. A new RetryPolicy model and InvokeOptions class provide configurable retry behavior (including exponential backoff) for event consumption, while Reason and SubscriptionSummary models expose detailed failure reasons and consumption statistics to users.
Resonance.Core/Models · high confidence
Initial MySQL support and subscription statistics scripts
The product now includes a complete database schema for MySQL (ResonanceDB.MySql.sql), enabling users to deploy the system on MySQL instead of only SQL Server. This schema defines tables for subscriptions, events, and payloads, utilizing bigint keys and specific indexing strategies. Additionally, new SQL scripts (SubscriptionSummary.MsSql.sql and SubscriptionSummary.MySql.sql) have been added to provide subscription statistics, allowing users to view details such as open, consumed, and failed event counts, as well as calculate current message throughput.
Resonance.Core/content · high confidence
Initial Resonance.Demo console application
The Resonance.Demo project has been added as a standalone console application to demonstrate the Resonance eventing library. It provides a complete setup including dependency injection configuration, database repository factory selection (supporting both MySQL and MsSql via connection strings), and an event consumption worker that can operate in either single or batched processing modes. The demo includes logic to publish test events with functional keys and consume them, allowing users to observe parallel processing, retry policies, and housekeeping tasks in action.
Resonance.Demo · high confidence
Initial release of Resonance eventing library
Introduces the Resonance library, a messaging system supporting pub/sub, FIFO and functional ordering, delayed delivery, and message expiration for Microsoft SQL Server and MySQL. The release includes the core library (Resonance.Core), a demo application (Resonance.Demo), and unit tests (Resonance.Tests), along with an AppVeyor CI configuration and MIT license.
(repo-wide) · high confidence
Behavioural changes
Database repository layer refactored with UTC time handling and command timeouts
The database repository implementation in Resonance.Core/Repo/Database has been updated to ensure consistent time handling and improve connection management. A new DateTimeUtcTypeHandler registers with Dapper to force all DateTime values to UTC, resolving previous issues where dates were stored as Unspecified. The base DbEventingRepo and its SQL Server (MsSqlEventingRepo) and MySQL (MySqlEventingRepo) implementations now accept a configurable CommandTimeout, allowing users to control query execution limits. Additionally, the MySQL repository factory now automatically enables AllowUserVariables in the connection string to support internal variable usage required for locking logic.
Resonance.Core/Repo/Database · high confidence
Initial assembly metadata for Resonance.Core
The Resonance.Core assembly now includes standard metadata attributes, identifying the product as 'Resonance' by Robert te Kaat with a copyright date of 2018. The assembly is marked as non-ComVisible, and the description clarifies that it is a messaging library supporting MsSql and MySql, designed for pub/sub messaging in microservices architectures.
Resonance.Core/Properties · high confidence
Introduction of structured event consumption results and batch processing
The Resonance.Core library now provides explicit control over event processing outcomes through the new ConsumeResult type, which allows consumers to signal success, failure, or the need for retry/suspension. This enables the EventConsumptionWorker to support both single-event and batch consumption models, allowing multiple events to be processed and marked as consumed in a single operation. Additionally, the worker now includes built-in housekeeping tasks that run during backoff periods, and subscription data is cached in memory to reduce database round-trips.
Resonance.Core · high confidence
Repository layer refactored with retry policies and structured error handling
The eventing repository implementation has been restructured to improve reliability and error management. A new \BaseEventingRepo\ base class centralizes transaction logic and event publication, while a \BaseEventingRepoFactory\ introduces configurable retry policies with exponential backoff for repository operations. Additionally, a new \RepoException\ type and \RepoError\ enum have been added to classify errors (e.g., Unavailable, TooBusy), allowing consumers to distinguish between transient failures and other issues.
Resonance.Core/Repo · high confidence
Test coverage
Added test infrastructure for eventing repository with MySQL and MS SQL support; Added tests for event consumption behavior and subscription statistics; Added tests for housekeeping logic; Added unit tests for topic management and event publishing.
Dependencies
Resonance.Core 0.9.0 initial release with .NET Standard support
The Resonance.Core project is introduced as a new eventing library targeting netstandard1.3, netstandard2.0, and net461, establishing version 0.9.0. It includes dependencies on Dapper (1.50.4), MySqlConnector (0.35.0), and Newtonsoft.Json (10.0.3), along with Microsoft.Extensions libraries for caching and logging. A demo project (Resonance.Demo) and test suite (Resonance.Tests) are also added to demonstrate usage and validate functionality.
(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
Score
- CAI 50 → 49 (-0.6)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 64 → 55 (-8.9)
- Architecture 97 → 97 (+0.0)
- Maturity 44 → 44 (+0.0)
- Readiness 43 → 43 (+0.0)
- Security 79 → 83 (+3.9)
- Performance 57 → 58 (+0.4)
Resolved (14)
- Bounded contexts not declared
- High CVE: Microsoft.NETCore.App 1.1.1
- High CVE: Microsoft.NETCore.App 1.1.1
- High CVE: System.Net.Security 4.3.0
- High CVE: System.Net.Security 4.3.0
- Medium CVE: System.Data.SqlClient 4.4.0
- Medium CVE: System.Net.Security 4.3.0
- Medium CVE: System.Net.Security 4.3.0
- No ADRs found
- No exposed public API
- Test runner surfaced no tests
- The term 'Eventing' is used in the repository naming (IEventingRepo, BaseEventingRepo, etc.), which is a non-standard gerund. Other parts of the codebase use 'Event' as a noun adjunct (e.g., EventConsumer, EventPublisher, TopicEvent).
- Two interfaces exist for event consumers: one synchronous (IEventConsumer) and one asynchronous (IEventConsumerAsync). While this may reflect a legacy vs modern pattern, the naming convention for the interface itself is inconsistent with the 'Async' suffix used for other async interfaces in the codebase (e.g., IEventPublisherAsync).
- dormant codebase — no living knowledge left to concentrate
New (49)
- BaseEventingRepo.PublishTopicEventAsync (cognitive 19) (Resonance.Core/Repo/BaseEventingRepo.cs)
- BaseEventingRepoFactory.InvokeFuncAsync (cognitive 21) (Resonance.Core/Repo/BaseEventingRepoFactory.cs)
- BaseEventingRepoFactory.InvokeFuncAsync (cognitive 21) (Resonance.Core/Repo/BaseEventingRepoFactory.cs)
- CommentedOutCode (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- CommentedOutCode (Resonance.Demo/Program.cs)
- DbEventingRepo.MarkConsumedAsync (cognitive 24) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- DbEventingRepo.MarkConsumedAsync (cognitive 33) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- DbEventingRepo.MarkConsumedAsync (cyclomatic 18) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (14 lines × 2) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- Duplicated block (15 lines × 2) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- Duplicated block (15 lines × 2) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- Duplicated block (16–19 lines × 2) (Resonance.Core/Repo/Database/MySqlEventingRepo.cs)
- Duplicated block (19 lines × 3) (Resonance.Core/Repo/Database/MySqlEventingRepo.cs)
- Duplicated block (23 lines × 2) (Resonance.Core/Repo/BaseEventingRepoFactory.cs)
- Duplicated block (24 lines × 2) (Resonance.Core/Repo/Database/DbEventingRepo.cs)
- Duplicated block (5 lines × 2) (Resonance.Core/Repo/Database/MsSqlEventingRepo.cs)
- Duplicated block (9–10 lines × 2) (Resonance.Core/IEventConsumerAsync.cs)
- …and 29 more
Architecture
- Unchanged — 3 containers · 0 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
kwaazaar/Resonance 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 9053d627346eb886936c2f7fa801bade4e5e481a — 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.