Adopt the de-event-sourcing storage API of CoreJvm - #204
Adopt the de-event-sourcing storage API of CoreJvm#204alexander-yevsyukov wants to merge 14 commits into
Conversation
The branch's `Update config` commit overwrote the repo-local Testcontainers pin (2.0.5, PR #202) with config's `1.21.4`, breaking the compilation of `testlib` against the Testcontainers 2.x API. Re-apply the pin, now in config's KDoc style with the 2.x `testcontainers-` artifact renames spelled out — the shape intended for the `config` repo, where the lasting fix belongs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
`Compiler` -> `2.0.0-SNAPSHOT.065`, `CoreJvmCompiler` -> `2.0.0-SNAPSHOT.081`, `Validation` -> `2.0.0-SNAPSHOT.462`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
`DsAggregateStorageTest` and `DsAggregateStorageTruncationTest` extended the `AggregateStorageTest` and `AggregateHistoryTruncationTest` fixtures, removed from core-jvm along with the event-sourced aggregate machinery. The Datastore-backed latest state of an aggregate is now served by the record storage covered by `DsRecordStorageTest`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Retarget `DsRecordStorageTest` at `DelegatingRecordStorageTest` — the new name of the published `RecordStorageDelegateTest` base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Use `var` in the batch-write loop and drop a redundant `@NonNull`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Allocate a distinct Datastore kind per the combination of a record specification and a `StorageGroup`, as the new CoreJvm storage SPI expects of vendors. Without the group in the kind identity, the event journals of all entity types — and the event log — would share one kind (`sourceType` is `Event` for each), and the state history of an entity type would collide with its latest-state storage. - `Kind.of(recordType, group)` composes grouped kind names from the group name and the record type, e.g. `spine.test.storage.StgProject_Event`. - `DatastoreStorageFactory` implements the 3-arg `createRecordStorage`; grouped storages take a flat layout under the grouped kind by default, and never a custom storage. - A grouped storage — the event journal or the state history of an entity — can be organized with a custom layout (a custom kind, an ancestor structure, or both) via the new `organizeRecords(stateType, recordType, layout)` overload, registered in `RecordLayouts` by the (group name, record type) pair; the single-type `organizeRecords` keeps applying to the ungrouped storages only. `RecordLayout`, `FlatLayout`, and `EntityGroupLayout` gained `Kind`-accepting constructors. - `wrapperFor(...)` uses `computeIfAbsent`, and the testlib factory keeps its wrappers in a concurrent set: the state history storage may be created lazily on delivery worker threads. - New specs cover the vendor allocation contract, the journal and the state-history round-trips against the Datastore emulator, and the concurrent storage creation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the deprecated `val name by registering(Type::class)` task delegate in the root build script with `register<Type>(name)`. Together with the `by extra` -> `extra.set(...)` migration in `version.gradle.kts`, `--warning-mode all` now reports no deprecation warnings from the repo-owned build scripts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Also refresh the copyright year and the license URL scheme in the touched files.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8d1d34d982
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Rolls the Datastore storage vendor forward to the Phase H core-jvm storage SPI, introducing group-aware (per-entity-history) storage allocation and updating the vendor’s record layouts/tests accordingly, while also advancing local dependency pins and modernizing repo-owned Gradle/build tooling.
Changes:
- Implement grouped-storage support by deriving distinct Datastore
Kinds from(StorageGroup, record type)and allowing custom layouts for grouped storages. - Update/replace Datastore emulator test suites to cover grouped histories (event journals/state history), including concurrent storage creation.
- Refresh build tooling and CI wiring (Gradle deprecation cleanups, dependency pins, version-guard workflows and related buildSrc enhancements).
Reviewed changes
Copilot reviewed 194 out of 201 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| version.gradle.kts | Bumps published version and switches to extra.set(...). |
| testlib/src/main/java/io/spine/testing/server/storage/datastore/TestDatastoreStorageFactory.java | Makes wrapper tracking concurrent-safe for lazy/concurrent storage creation. |
| gradlew.bat | Wrapper script comment text change (Gradle-managed). |
| gradlew | Wrapper script comment text change (Gradle-managed). |
| gradle/wrapper/gradle-wrapper.properties | Updates Gradle wrapper distribution URL. |
| docs/dependencies/pom.xml | Regenerates dependency report POM with updated versions. |
| datastore/src/test/kotlin/io/spine/server/storage/datastore/record/given/HistoryStorageTestEnv.kt | Adds shared test fixtures for grouped history storage specs. |
| datastore/src/test/kotlin/io/spine/server/storage/datastore/record/ConcurrentHistoryCreationSpec.kt | Adds concurrency spec for grouped history storage creation. |
| datastore/src/test/java/io/spine/server/storage/datastore/record/given/ProjectChildJournalLayout.java | Adds grouped journal layout fixture using Kind-accepting layout constructors. |
| datastore/src/test/java/io/spine/server/storage/datastore/record/DsRecordStorageTest.java | Retargets record-storage test base to new framework fixture. |
| datastore/src/test/java/io/spine/server/storage/datastore/record/DsAggregateStorageTruncationTest.java | Removes obsolete aggregate truncation suite (core-jvm base removed). |
| datastore/src/test/java/io/spine/server/storage/datastore/record/DsAggregateStorageTest.java | Removes obsolete aggregate storage suite (core-jvm base removed). |
| datastore/src/test/java/io/spine/server/storage/datastore/KindTest.java | Extends Kind tests to cover (recordType, StorageGroup) constructor. |
| datastore/src/main/java/io/spine/server/storage/datastore/record/RecordId.java | Adds @Serial annotation for serialVersionUID. |
| datastore/src/main/java/io/spine/server/storage/datastore/record/DsRecordStorage.java | Minor refactors and annotation cleanup in record storage implementation. |
| datastore/src/main/java/io/spine/server/storage/datastore/record/DsEntityComparator.java | Adds @Serial annotation for serialVersionUID. |
| datastore/src/main/java/io/spine/server/storage/datastore/ProjectId.java | Adds @Serial annotation for serialVersionUID. |
| datastore/src/main/java/io/spine/server/storage/datastore/Kind.java | Adds grouped-kind construction API: Kind.of(recordType, group). |
| datastore/src/main/java/io/spine/server/storage/datastore/DsIdentifier.java | Adds @Serial annotation for serialVersionUID. |
| datastore/src/main/java/io/spine/server/storage/datastore/config/RecordLayouts.java | Adds grouped-storage layout registry + lookup with grouped-kind fallback. |
| datastore/src/main/java/io/spine/server/storage/datastore/config/RecordLayout.java | Adds Kind-accepting constructor for non-type-derived kinds. |
| datastore/src/main/java/io/spine/server/storage/datastore/config/FlatLayout.java | Adds Kind-accepting constructor for grouped-kind flat layouts. |
| datastore/src/main/java/io/spine/server/storage/datastore/config/EntityGroupLayout.java | Adds Kind-accepting constructor for grouped ancestor/child layouts. |
| buildSrc/src/test/kotlin/io/spine/gradle/VersionGradleFileSpec.kt | Adds tests for parsing version declarations including extra.set. |
| buildSrc/src/test/kotlin/io/spine/gradle/VersionComparatorSpec.kt | Adds tests for semantic-ish version ordering logic. |
| buildSrc/src/test/kotlin/io/spine/gradle/report/pom/DependencyWriterSpec.kt | Extends dependency-report tests to validate resolved-version reporting. |
| buildSrc/src/test/kotlin/io/spine/gradle/publish/MavenMetadataSpec.kt | Adds Jackson XML round-trip test for Maven metadata parsing model. |
| buildSrc/src/test/kotlin/io/spine/gradle/publish/IncrementGuardTest.kt | Updates tests for new Version Guard/base-branch comparison behavior. |
| buildSrc/src/test/kotlin/io/spine/gradle/fs/SpineTempDirSpec.kt | Adds tests for new shared per-JVM temp directory behavior. |
| buildSrc/src/test/kotlin/io/spine/gradle/fs/LazyTempPathSpec.kt | Adds tests for updated temp-path creation semantics. |
| buildSrc/src/main/resources/dokka/styles/custom-styles.css | Updates copyright year. |
| buildSrc/src/main/kotlin/write-manifest.gradle.kts | Updates Gradle API usage (register(...)) and comment phrasing. |
| buildSrc/src/main/kotlin/uber-jar-module.gradle.kts | Updates Gradle API usage and fixes “fat JAR” wording. |
| buildSrc/src/main/kotlin/test-module.gradle.kts | Updates copyright year. |
| buildSrc/src/main/kotlin/Strings.kt | Minor documentation wording update. |
| buildSrc/src/main/kotlin/pmd-settings.gradle.kts | Updates copyright year. |
| buildSrc/src/main/kotlin/module-testing.gradle.kts | Documentation wording polish. |
| buildSrc/src/main/kotlin/kmp-publish.gradle.kts | Updates copyright year. |
| buildSrc/src/main/kotlin/kmp-module.gradle.kts | Skips forcing on Dokka configs + modernizes Kotlin DSL usage and test task wiring. |
| buildSrc/src/main/kotlin/jvm-module.gradle.kts | Skips forcing on Dokka configs + modernizes task registration DSL. |
| buildSrc/src/main/kotlin/jacoco-kotlin-jvm.gradle.kts | Removes deprecated JaCoCo script plugin (superseded by Kover pipeline). |
| buildSrc/src/main/kotlin/jacoco-kmm-jvm.gradle.kts | Removes deprecated JaCoCo script plugin (superseded by Kover pipeline). |
| buildSrc/src/main/kotlin/io/spine/gradle/VersionComparator.kt | Adds semantic-ish comparator for version strings. |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt | Uses centralized JaCoCo agent coordinates and updates docs. |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/Multiproject.kt | Fixes wording (“dependent”). |
| buildSrc/src/main/kotlin/io/spine/gradle/testing/Logging.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/TaskName.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/StringExtensions.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/RunGradle.kt | Documentation wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/RunBuild.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/SpineLicense.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ProjectMetadata.kt | Reworks metadata fallback logic away from deprecated property delegation. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomXmlWriter.kt | Minor doc phrasing fix. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomFormatting.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ModuleDependency.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/MarkupExtensions.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/InceptionYear.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/pom/DependencyScope.kt | Fixes punctuation/grammar in enum KDoc. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Template.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Tasks.kt | Minor doc wording adjustments. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/ProjectDependencies.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/MarkdownReportRenderer.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/LicenseReporter.kt | Improves license report task inputs and opts task out of build cache. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/license/Configuration.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/SiblingCoverage.kt | Exposes helper as internal and expands doc comment. |
| buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt | Improves aggregation wiring and credits forked compiler exec data in root report. |
| buildSrc/src/main/kotlin/io/spine/gradle/repo/RepoSlug.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/repo/Credentials.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/StandardJavaPublicationHandler.kt | Minor KDoc wording fix. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt | Multiple small KDoc wording fixes. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingRepos.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingExts.kt | KDoc wording and minor comment cleanup. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt | KDoc punctuation fix. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/ProtoExts.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/MavenMetadata.kt | Adds Maven metadata XML model and fetch/parse helper. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/IncrementGuard.kt | Changes guard to run via Version Guard workflow (not check) + adds base-compare gating. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudRepo.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudArtifactRegistry.kt | Fixes wording (“publisher”). |
| buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt | Minor KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/kotlin/KotlinConfig.kt | Scopes opt-ins more accurately (JVM-only ExperimentalPathApi). |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/Publish.kt | Fixes “NPM” spelling in KDoc. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/IntegrationTest.kt | Improves grammar in KDoc. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Protobuf.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/McJs.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/JsPlugins.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Idea.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsExtension.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsEnvironment.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsContext.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocTag.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocConfig.kt | KDoc wording and formatting cleanups. |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/ExcludeInternalDoclet.kt | Minor wording fix (“fully qualified”). |
| buildSrc/src/main/kotlin/io/spine/gradle/javadoc/Encoding.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/javac/Javac.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/javac/ErrorProne.kt | Minor doc wording (“Command-line”). |
| buildSrc/src/main/kotlin/io/spine/gradle/java/Tasks.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPagesExtension.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPages.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/Update.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/github/pages/AuthorEmail.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/UserInfo.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/Repository.kt | Fixes “temporary” wording and other KDoc edits. |
| buildSrc/src/main/kotlin/io/spine/gradle/git/Branch.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/fs/SpineTempDir.kt | Introduces shared per-JVM temp dir namespace with shutdown cleanup. |
| buildSrc/src/main/kotlin/io/spine/gradle/fs/LazyTempPath.kt | Creates temp dirs under shared SpineTempDir base path. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Publish.kt | KDoc and comment wording fixes. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/IntegrationTest.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/DartTasks.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Build.kt | KDoc wording and spelling fix (“compatibility”). |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/Protobuf.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/DartPlugins.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartExtension.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartEnvironment.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/dart/DartContext.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/gradle/ConfigTester.kt | Minor KDoc wording and punctuation fixes. |
| buildSrc/src/main/kotlin/io/spine/gradle/Clean.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/checkstyle/CheckStyleConfig.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/Build.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/gradle/base/Tasks.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/docs/MarkdownDocument.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/TestKitTruth.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Testcontainers.kt | Restores/clarifies Testcontainers 2.x coordinates and adds missing module constants. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/SystemLambda.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/OpenTest4J.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Kover.kt | Bumps Kover version pin. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt | Adds Jacoco.agent coordinate constant for reuse. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/Hamcrest.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/test/AssertK.kt | KDoc punctuation fix. |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/QueryDsl.kt | Adds QueryDSL dependency coordinates (for JDBC storage tests/tooling). |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/PostgreSql.kt | Adds PostgreSQL JDBC driver coordinates. |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/MySql.kt | Adds MySQL Connector/J coordinates. |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/HsqlDb.kt | Adds HSQLDB coordinates. |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/Hikari.kt | Adds HikariCP coordinates. |
| buildSrc/src/main/kotlin/io/spine/dependency/storage/H2.kt | Adds H2 coordinates. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt | Advances Validation dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt | Advances ToolBase dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt | Advances Time dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Spine.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Reflect.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoTap.kt | Minor wording fix in suppression comment. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Logging.kt | Advances Logging dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt | Advances CoreJvmCompiler dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt | Advances CoreJvm dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt | Advances Compiler dependency version and KDoc wording. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Change.kt | Advances Change dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/BaseTypes.kt | Advances BaseTypes dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt | Advances Base dependency version. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Slf4J.kt | Minor KDoc reflow/wording. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Roaster.kt | Removes outdated Java version note. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Protobuf.kt | KDoc wording polish. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/KotlinX.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaX.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaPoet.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaJwt.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Jackson.kt | Advances Jackson version. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Coroutines.kt | Fixes typo in link text (“project”). |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/BouncyCastle.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/Asm.kt | Minor KDoc wording fix. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/AppEngine.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/lib/ApacheHttp.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/Serialization.kt | Fixes spacing in KDoc. |
| buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/KotlinX.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/io/spine/dependency/Dependency.kt | Adds Configuration.isDokka to prevent breaking Dokka by forcing versions. |
| buildSrc/src/main/kotlin/io/spine/dependency/build/ErrorProne.kt | Updates Error Prone version and documents Java 17 compatibility constraint. |
| buildSrc/src/main/kotlin/io/spine/dependency/boms/BomsPlugin.kt | Excludes Dokka configs from version forcing and minor KDoc fix. |
| buildSrc/src/main/kotlin/io/spine/dependency/boms/Boms.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/DokkaExts.kt | Minor KDoc wording polish. |
| buildSrc/src/main/kotlin/dokka-setup.gradle.kts | Disables Dokka Javadoc publication for KMP modules. |
| buildSrc/src/main/kotlin/DocumentationSettings.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/detekt-code-analysis.gradle.kts | KDoc wording polish. |
| buildSrc/src/main/kotlin/DependencyResolution.kt | Excludes Dokka configurations from version forcing and minor KDoc fix. |
| buildSrc/src/main/kotlin/config-tester.gradle.kts | Comment wording polish. |
| buildSrc/src/main/kotlin/BuildSettings.kt | Updates copyright year. |
| buildSrc/src/main/kotlin/BuildExtensions.kt | Adds excludeJetBrainsAnnotations() helper and various doc fixes. |
| buildSrc/settings.gradle.kts | Updates copyright year. |
| buildSrc/quality/checkstyle.xml | Updates copyright year in header. |
| buildSrc/quality/checkstyle-suppressions.xml | Updates copyright year in header. |
| buildSrc/build.gradle.kts | Bumps Kover version and minor KDoc wording updates. |
| build.gradle.kts | Modernizes task registration DSL for copyCredentials. |
| .idea/misc.xml | Removes IDE-local config file from repo tracking. |
| .idea/live-templates/README.md | Minor whitespace fix in instructions. |
| .gitignore | Keeps .idea/misc.xml ignored and adds ignores for Claude local artifacts. |
| .github/workflows/revalidate-versions.yml | Adds workflow to revalidate open PRs when base branch version advances. |
| .github/workflows/publish.yml | Adds explicit error reporting step on publication failure. |
| .github/workflows/increment-guard.yml | Enhances Version Guard workflow (base fetch, status publishing, more triggers). |
| .claude/settings.json | Adjusts Claude Code settings (plans dir, allowed permissions). |
| .agents/tasks/de-event-sourcing-rollout.md | Adds rollout task notes for the Phase H migration (agent task doc). |
Files not reviewed (1)
- .idea/misc.xml: Generated file
Join the group name and the record type with a dash rather than an underscore in `Kind.of(recordType, group)`. The underscore is a legal character in Protobuf type names, so the grouped kind of one entity type could equal the plain type-name kind of another — e.g. the event journal of `Order` and the latest-state storage of a sibling type `Order_Event` would both land in `pkg.Order_Event`. A dash cannot occur in a type name, making grouped kinds structurally disjoint from the ungrouped ones. Addresses the Codex review of #204. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Guard both parameters of `RecordLayouts.find(recordType, group)` with `checkNotNull`, consistently with the sibling declarations. Addresses the Copilot review of #204. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #204 +/- ##
============================================
+ Coverage 90.76% 90.97% +0.20%
- Complexity 466 475 +9
============================================
Files 62 62
Lines 1625 1662 +37
Branches 90 92 +2
============================================
+ Hits 1475 1512 +37
Misses 121 121
Partials 29 29 🚀 New features to boost your workflow:
|
Part of the de-event-sourcing delivery train: the Phase H rollout of the new
core-jvm storage SPI (
2.0.0-SNAPSHOT.522) to the Datastore storage vendor.Reference implementation: SpineEventEngine/jdbc-storage#181 (the same phase,
which settled the vendor conventions).
What changed
DatastoreStorageFactoryimplements the new 3-argcreateRecordStorage(context, spec, group): a storage belonging to aStorageGroup— a per-entity history — is allocated a distinct kind composedof the group name and the record type (
Kind.of(recordType, group), e.g.spine.test.storage.StgProject-Event). Without the group in the kindidentity, the event journals of all entity types — and the event log — would
conflate, as would an entity's state history with its latest-state storage.
organizeRecords(stateType, recordType, layout)builder overload registers aRecordLayout— a custom kind, an ancestor structure, or both — for thegrouped storage addressed by the (group, record type) pair. The single-type
organizeRecordsand the custom storages keep applying to ungrouped storagesonly.
RecordLayout,FlatLayout, andEntityGroupLayoutgainedKind-accepting constructors.wrapperFor(...)moved tocomputeIfAbsent, and the testlibfactory keeps its wrappers in a concurrent set — the state history storage
may be created lazily on delivery worker threads.
DsAggregateStorageTestandDsAggregateStorageTruncationTestare removed together with their deleted core-jvm bases;
DsRecordStorageTestis retargeted atDelegatingRecordStorageTest.contract, the
EntityEventStorageandEntityStateHistoryStorageround-trips (incl.
EntityStateKeymessage IDs,stateAttie-breaks,trim/truncate), and the concurrent storage creation.CoreJvm.522— the train target;Validation.462,CoreJvmCompiler.081,Compiler.065); theTestcontainers
2.0.5pin (Upgrade Testcontainers to 2.0.5 #202) is restored after the config update hadreverted it — the lasting fix belongs in the
configrepo.(
by extra->extra.set(...),by registering->register<Type>(name));serialVersionUIDfields annotated with@Serial.Reviewer notes
@Applyusages — the Phase H grep gate passes with noaggregate migration.
DsRecordStorage.deleteRecord()documents always returningtrue, deviatingfrom the
RecordStorage.deletecontract ("falseif not found"); the newjournal spec asserts the documented vendor behavior, and the decision point
is recorded in
.agents/tasks/de-event-sourcing-rollout.mdas a follow-up.io.spine.server.storage.datastore.record.RecordId, so theEntityGroupLayouttest fixture is written in Java../gradlew build dokkaGenerateis green: 319 datastore tests (301 passed,18 conditionally skipped), 18/18 testlib.
🤖 Generated with Claude Code