j5ik2o/event-store-adapter-rs
70.4
Strong · 21 September 2026
4.4k
lines of production code
Rust
primary language
4
measurements over time
What this system is
This system is a Rust library for event sourcing that provides adapters for storing domain events and snapshots in DynamoDB, Google Bigtable, SQLite, or in-memory storage. It utilizes a v3 envelope-based API to manage event metadata and optimistic locking, allowing users to opt into specific backends via Cargo features. The library also includes test utilities for local backend emulation and example implementations for user account management.
Features
New SQLite user-account example demonstrating v3 envelope API
Added a new example in \examples/user-account-sqlite\ that demonstrates the v3 envelope API using an in-memory SQLite database. The example implements a user-account domain model where event metadata (aggregate ID, sequence number, timestamp, manifest) is carried in envelopes rather than aggregate fields, and optimistic locking is handled via explicit expected versions passed to the event store.
examples/user-account-sqlite · high confidence
New test utilities for Bigtable, DynamoDB, and ID generation
The test-utils crate now provides helper modules to support testing against Bigtable and DynamoDB backends. It includes a Bigtable admin helper to create tables with specific column families, Docker helpers to spin up LocalStack (for DynamoDB) and the Bigtable emulator, and DynamoDB utilities to create journal and snapshot tables (with TTL enabled for snapshots) and configure a client pointing to a local port. Additionally, a monotonic ULID generator is added to ensure deterministic, ordered IDs across test runs.
test-utils · high confidence
Behavioural changes
AI-DLC workflow now supports skipping the operation phase
The AI-DLC adaptive workflow composer has been updated to allow the operation phase to be skipped during workflow composition. This change enables the system to compose minimal viable workflows that stop after the construction phase when the operation stage is not required for the specific task, reducing unnecessary process overhead for tasks that do not need operational planning or deployment configuration.
.claude · medium confidence
Event Store v3: Envelope API replaces traits and enforces opt-in backends
This release introduces a major API overhaul for the event store library. The \Event\ and \Aggregate\ traits have been removed; domain events and aggregates are now plain \serde\ types, with metadata (aggregate ID, sequence number, timestamp) carried by new \EventEnvelope\ and \SnapshotEnvelope\ types. The \EventStore\ API now requires explicit \expected\_version\ for optimistic locking and no longer injects metadata into stored payloads. Additionally, storage backends (DynamoDB, Bigtable, SQLite) are no longer compiled by default; users must explicitly enable them via Cargo features (e.g., \features = \["dynamodb"\]\). Data written by v2 is not readable by v3, requiring manual migration.
(repo-wide) · high confidence
Event store backends migrate to envelope-based SPI with explicit versioning and retention
The DynamoDB, Bigtable, SQLite, and in-memory event store backends have been refactored to use a new envelope-based storage SPI (\StorageBackend\) that passes \EventEnvelope\ and \SnapshotEnvelope\ types instead of raw payloads. This change introduces explicit version tracking in snapshots (via \SnapshotEnvelope.version\) and adds configurable snapshot retention policies (\keep\_snapshot\_count\ and \delete\_ttl\) to all backends, allowing users to limit historical snapshot storage. The migration also standardizes optimistic locking behavior across backends, ensuring that updates to absent aggregates are treated as optimistic lock conflicts, and enforces contract violations for invalid inputs such as zero shard counts or zero snapshot retention counts.
lib/src · high confidence
User account example migrated to v3 envelope API
The user-account example has been updated to use the v3 envelope API, where event metadata (aggregate ID, sequence number, timestamp) is carried in envelopes rather than embedded in the domain event or aggregate state. This change introduces explicit optimistic locking via an expected\_version parameter on writes and requires the repository to manage replay positions and versions from the envelope data instead of relying on aggregate fields.
examples/user-account · high confidence
Dependencies
Initial release of event-store-adapter-rs v3.0.2 with multi-backend support
This change introduces the initial version (v3.0.2) of the \event-store-adapter-rs\ library, establishing a Rust workspace that provides event-sourcing adapters for DynamoDB, Google Bigtable, SQLite, and in-memory storage. The library gates backend implementations behind Cargo features (e.g., \dynamodb\, \bigtable\, \sqlite\), requiring users to opt into specific backends. It sets a Minimum Supported Rust Version (MSRV) of 1.94.1 and includes example projects for user-account management using both SQLite and DynamoDB backends.
(dependencies) · high confidence
Housekeeping
AI-DLC workflow artifacts and audit records for SQLite EventStore initiative
This change records the AI-DLC (AI-Driven Lifecycle) workflow artifacts for the SQLite EventStore intent, including reverse-engineering analysis of the existing Rust event-store-adapter library (DynamoDB, Bigtable, Memory backends), code quality assessments, dependency audits, and build/test verification results. It also adds audit logs tracking the workflow stages (initialization, ideation, inception, construction) and state tracking for the 26-stage plan, confirming that the SQLite backend implementation, feature splitting, and Memory backend contract alignment have been generated and verified via local builds and tests.
aidlc · 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 53 → 70 (+16.9)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 97 (-2.9)
- Architecture 95 → 100 (+5.2)
- Maturity 53 → 77 (+24.4)
- Readiness 61 → 78 (+17.3)
- Security 38 → 56 (+17.6)
- Domain Modelling 100 → 100 (+0.0)
Resolved (15)
- Change coupling: event_store_for_dynamodb.rs ↔ dynamodb.rs (lib/src/event_store_for_dynamodb.rs)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- 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)
- High: security finding (details withheld)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Test reliability not included
New (44)
- Consistent usage of maintenance across all implementations. No inconsistency.
- Consistent usage of with_delete_ttl across all implementations. No inconsistency.
- Consistent usage of with_event_serializer across all implementations. No inconsistency.
- Consistent usage of with_keep_snapshot_count across all implementations. No inconsistency.
- Consistent usage of with_key_resolver across all implementations. No inconsistency.
- Consistent usage of with_snapshot_serializer across all implementations. No inconsistency.
- Duplicated block (12 lines × 2) (lib/src/event_store_for_bigtable.rs)
- Duplicated block (13 lines × 2) (lib/src/event_store_for_bigtable.rs)
- Duplicated block (15 lines × 2) (lib/src/event_store_for_dynamodb.rs)
- Duplicated block (5 lines × 2) (lib/src/event_store_for_sqlite.rs)
- Duplicated block (58 lines × 2) (test-utils/src/dynamodb.rs)
- Duplicated block (8 lines × 2) (lib/src/event_store_for_dynamodb.rs)
- FileTooLong: src/event_store_for_bigtable.rs (lib/src/event_store_for_bigtable.rs)
- FileTooLong: src/event_store_for_dynamodb.rs (lib/src/event_store_for_dynamodb.rs)
- High IaC: WD-COMPOSE-0002 (tools/docker-compose.yaml)
- High IaC: WD-COMPOSE-0002 (tools/docker-compose.yaml)
- High IaC: WD-COMPOSE-0002 (tools/docker-compose.yaml)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 24 more
Changes since last survey
- 62 commits — 59 feature/other, 3 fixes
By area
- lib/src — 18 commits
- (repo) — 11 commits
- lib/Cargo.toml — 8 commits
- (root) — 7 commits
- .github/workflows — 7 commits
- aidlc/spaces — 2 commits
- docs/DATABASE_SCHEMA.ja.md — 2 commits
- .claude/CLAUDE.md — 1 commit
- .claude/hooks — 1 commit
- .claude/knowledge — 1 commit
- .claude/scopes — 1 commit
- docs/MIGRATION_GUIDE_v3.ja.md — 1 commit
- examples/user-account — 1 commit
- examples/user-account-sqlite — 1 commit
Notable commits
- fix: fix(sqlite): handle zero snapshot retention and reject zero shard count
- fix: fix: treat updates on absent aggregates as optimistic lock conflicts
- fix: test: fix the ContractViolation reason template with a regression test
- change: BREAKING CHANGE(features): gate backends behind cargo features with empty default
- change: BREAKING CHANGE(types): replace SDK-leaked error type with neutral OptimisticLockError(String)
- change: BREAKING CHANGE: replace the Event/Aggregate traits with the EventEnvelope API for v3
- change: Merge branch 'bolt-1-envelope-core' into feature/v3-event-envelope
- change: Merge branch 'bolt-2-bigtable-backend' into feature/v3-event-envelope
- change: Merge branch 'bolt-3-dynamodb-backend' into feature/v3-event-envelope
- change: Merge branch 'bolt-4-sqlite-backend' into feature/v3-event-envelope
- change: Merge branch 'bolt-5-release-prep' into feature/v3-event-envelope
- change: Merge branch 'main' into sqlite
- change: Merge pull request #224 from j5ik2o/renovate/actions-checkout-7.x
- change: Merge pull request #227 from j5ik2o/renovate/actions-setup-python-7.x
- change: Merge pull request #230 from j5ik2o/chore/add-aidlc-assets
- change: Merge pull request #231 from j5ik2o/sqlite
- change: Merge pull request #232 from j5ik2o/feature/v3-event-envelope
- change: chore(aidlc): append review-loop audit entries
- change: chore(aidlc): record SQLite event-store workflow artifacts
- change: chore(ci): run library tests with --all-features
- …and 42 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
j5ik2o/event-store-adapter-rs 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 98eb30d761dba45599aa05567e4aed6f2d8a3b83 — 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.