thefabric-io/eventsourcing
61.1
Adequate · 21 September 2026
2.1k
lines of production code
Go
primary language
4
measurements over time
What this system is
This system is an event-sourcing library that provides the core infrastructure for building reliable, distributed applications. It manages the storage and retrieval of domain events while offering robust mechanisms for consuming them, including both asynchronous and FIFO-ordered processing with at-least-once delivery semantics. The framework supports PostgreSQL-backed offset tracking and cross-aggregate event streaming to ensure consistent state reconstruction and processing.
Features
Event sourcing core: new interfaces, metadata, and event consumer mechanism
The library introduces several new capabilities for building event-sourced applications. You can now record inception and modification timestamps on aggregates by implementing the new \InceptionRecorder\ and \ModificationRecorder\ interfaces, which are automatically invoked during event application. Aggregates can now carry arbitrary metadata, and the \Aggregate\ type exposes a \Metadata()\ accessor. For storage, the \StorageNamer\ interface allows aggregates to define custom storage names, while the \AggregateStateEventMapper\ interface enables explicit mapping of event types. The \Event\ struct now tracks and exposes an \Offset\ for reliable processing. Additionally, the \eventconsumer\ package provides a robust mechanism for consuming events with FIFO ordering, at-least-once delivery semantics, and PostgreSQL-backed offset storage, including an \AsyncSequentialSubscriber\ and \FIFOSubscriber\. The \EventStore\ interface has been updated to support saving multiple aggregates in a single call and querying events by offset and type.
(repo-wide) · high confidence
Introduce event consumer framework with async and FIFO subscribers
The \eventconsumer\ package now provides a robust framework for consuming events with at-least-once delivery semantics and offset tracking. Users can choose between two execution models: \AsyncSequentialSubscriber\ for non-transactional processing (ideal for IO-heavy or long-running handlers) and \FIFOSubscriber\ for transactional processing (ideal for projections that must commit with offset updates). The API has been updated to use parameter objects and functional options for configuration. A PostgreSQL-backed \ConsumerStore\ is provided in \eventconsumer/pgeventconsumer\ for durable offset tracking. Existing handlers that previously received a transaction must be split into \Handler\[S\]\ (non-transactional) or \TxHandler\[S\]\ (transactional) interfaces.
eventconsumer · high confidence
PostgreSQL event store gains cross-aggregate streaming and consumer tracking
The pgeventstore package now supports cross-aggregate event streaming via a new 'offset' column and an 'Events' API that allows consumers to query events by offset and type. This enables efficient, in-order consumption of events across all aggregates. Additionally, the store now creates an 'events\_consumers' table to track consumer group offsets, supporting robust event consumption patterns. The 'Init' function has been updated to handle schema and table creation for these new features, and the 'Storage' function no longer requires a parse event type function, relying instead on the 'AggregateStateEventMapper' interface for event parsing.
pgeventstore · high confidence
Dependencies
Updated Go dependencies and added Docker test support
The project's Go module dependencies have been updated. Notably, the \github.com/thefabric-io/transactional\ library was added at version 1.1.0. Additionally, \github.com/ory/dockertest/v3\ was added to support Docker-based testing, along with a range of indirect dependencies including \logrus\ and various Docker-related packages.
(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 53 → 61 (+7.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 81 → 89 (+8.2)
- Architecture 100 → 100 (+0.0)
- Maturity 69 → 69 (+0.0)
- Readiness 24 → 38 (+13.6)
- Security 89 → 91 (+2.4)
- Domain Modelling 100 → 100 (+0.0)
Resolved (18)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (go.mod)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (11 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- Duplicated block (13 lines × 2) (pgeventstore/storage.go)
- Duplicated block (9 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- Duplicated block (9 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- High CVE: [GHSA redacted] (go.mod)
- High CVE: [GHSA redacted] (go.mod)
- LLM evaluation failed
- Medium CVE: GO-2024-2598 (go.mod)
- Medium CVE: GO-2026-5024 (go.mod)
- No exposed public API
- Test reliability not included
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- git history depth insufficient
New (18)
- ClassTooLong: AsyncSequentialSubscriber (eventconsumer/subscriber.asyncseq.go)
- Critical CVE: [GHSA redacted] (go.mod)
- Duplicated block (11–12 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- Duplicated block (12 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- Duplicated block (15 lines × 2) (pgeventstore/storage.go)
- Duplicated block (8 lines × 2) (eventconsumer/subscriber.asyncseq.go)
- Duplicated block (9 lines × 3) (eventconsumer/subscriber.asyncseq.go)
- High CVE: [GHSA redacted] (go.mod)
- High CVE: [GHSA redacted] (go.mod)
- Medium CVE: GO-2024-2598 (go.mod)
- Medium CVE: GO-2026-5024 (go.mod)
- Medium CVE: GO-2026-6179 (go.mod)
- MethodTooLong: AsyncSequentialSubscriber.processLoop (eventconsumer/subscriber.asyncseq.go)
- Near-duplicate member pair (31 shared lines) (eventconsumer/subscriber.asyncseq.go)
- Outdated: github.com/jmoiron/sqlx
- Outdated: github.com/lib/pq
- Outdated: github.com/ory/dockertest/v3
- Outdated: github.com/sirupsen/logrus
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
thefabric-io/eventsourcing 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 4ea44f21f8d041b8afd9476c17032824f788cdcf — 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.