meixuesong/aggregate-persistence
55.6
Adequate · 22 September 2026
588
lines of production code
Java
primary language
7
measurements over time
What this system is
This system is a Java library for aggregate persistence, providing mechanisms to detect changes in domain objects through deep comparison and deep copying. It enables the creation of snapshots and the generation of field-level deltas to track state modifications. The codebase includes comprehensive test coverage for these features, validating behavior across complex object graphs and various data types.
Features
Introduce deep comparison and deep copying for aggregate roots
The library now provides built-in support for deep comparison and deep copying of aggregate roots. A new \DeepComparator\ interface and \JavaUtilDeepComparator\ implementation allow the \Aggregate\ class to detect changes by comparing the current root with its snapshot. Additionally, a \DeepCopier\ interface and \SerializableDeepCopier\ implementation enable deep copying of objects, which is used to create snapshots of the aggregate root. These changes facilitate more robust change detection and state management within the aggregate pattern.
src/main · high confidence
Test coverage
Added deep equality tests for aggregate persistence; Added test fixtures for complex object persistence; Added tests for aggregate persistence and data object utilities.
Dependencies
Initial project setup with Java 21 and updated dependencies
The project has been initialized with a new pom.xml that targets Java 21 and includes updated dependencies, including junit 4.13.1, mockito-core 4.11.0, and commons-lang3 3.18.0. The build is configured to use the Maven compiler plugin 3.12.1, and release profiles are set up for publishing to the Central Repository.
(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 54 → 56 (+1.1)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 99 → 99 (+0.4)
- Architecture 69 → 69 (+0.0)
- Maturity 53 → 54 (+1.0)
- Readiness 39 → 45 (+5.4)
- Security 100 → 78 (-22.2)
Resolved (8)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (7 lines × 2) (src/main/java/com/github/meixuesong/aggregatepersistence/Aggregate.java)
- Duplicated block (8 lines × 2) (src/main/java/com/github/meixuesong/aggregatepersistence/DataObjectUtils.java)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Scanner failed to run — not a clean result
- Test reliability not included
New (16)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (7 lines × 2) (src/main/java/com/github/meixuesong/aggregatepersistence/Aggregate.java)
- Duplicated block (9 lines × 2) (src/main/java/com/github/meixuesong/aggregatepersistence/DataObjectUtils.java)
- No SBOM
- No assertions: testAtomicStuff (src/test/java/com/github/meixuesong/aggregatepersistence/deepequals/DeepEqualsTest.java)
- No assertions: testSymmetry (src/test/java/com/github/meixuesong/aggregatepersistence/deepequals/DeepEqualsTest.java)
- No assertions: testUnorderedMapsWithKeyHashCodeCollisions (src/test/java/com/github/meixuesong/aggregatepersistence/deepequals/DeepEqualsTest.java)
- No assertions: testUnorderedMapsWithKeyValueHashCodeCollisions (src/test/java/com/github/meixuesong/aggregatepersistence/deepequals/DeepEqualsTest.java)
- No assertions: testUnorderedMapsWithValueHashCodeCollisions (src/test/java/com/github/meixuesong/aggregatepersistence/deepequals/DeepEqualsTest.java)
- No build provenance
- No dependency advisory monitoring
- Scanner failed to run — not a clean result
- Scanner failed to run — not a clean result
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
meixuesong/aggregate-persistence 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 22 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 d70c430ca4aa920954f8b36544120a37ab941e5b — 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-90d5d2fe38ee.