diff --git a/.agents/memory/MEMORY.md b/.agents/memory/MEMORY.md
index 2c8045c6ed..781dee7b18 100644
--- a/.agents/memory/MEMORY.md
+++ b/.agents/memory/MEMORY.md
@@ -9,7 +9,7 @@ See [README.md](README.md) for the format and routing rules.
## Project (durable context & rationale)
-*(no entries yet)*
+- [codegen-coverage-blind-spot](project/codegen-coverage-blind-spot.md) — Why the `java`/`context` codegen modules report ~0% coverage — they run out-of-process in the forked Spine Compiler JVM, which JaCoCo/Kover do not instrument.
## Reference (external systems)
diff --git a/.agents/memory/project/codegen-coverage-blind-spot.md b/.agents/memory/project/codegen-coverage-blind-spot.md
new file mode 100644
index 0000000000..160dd8e9dc
--- /dev/null
+++ b/.agents/memory/project/codegen-coverage-blind-spot.md
@@ -0,0 +1,32 @@
+---
+name: codegen-coverage-blind-spot
+description: Why the `java`/`context` codegen modules report ~0% coverage — they run out-of-process in the forked Spine Compiler JVM, which JaCoCo/Kover do not instrument.
+metadata:
+ type: project
+ since: 2026-07-06
+---
+
+The `java` and `context` modules are Spine Compiler plugins/renderers (`JavaValidationPlugin`,
+the `*Generator` classes, the `expression/*` builders, the ProtoData plugin). They execute in the
+**forked `launch*SpineCompiler` (`JavaExec`) process** during the build, not in the `test` JVM.
+Kover/JaCoCo instrument only the test JVM, so this code reports **~0% line coverage** even though
+the `tests/*` and `context-tests` `.proto` fixtures exercise it on every build. The lone generator
+with real coverage — `UnsignedIntegerWarnings` (~82%) — has it because one spec instantiates it
+**in-process**. This is the main reason the repo total sits around ~12%.
+
+**Why:** So a future session seeing an alarmingly low total, or a codegen module at 0%, does not
+misread it as neglected/untested code or a quality regression and waste time re-deriving the cause.
+It is a measurement blind spot inherent to out-of-process code generation, not missing tests.
+
+**How to apply:** When coverage looks structurally low here, do **not** reach for sibling
+attribution (`SiblingCoverage.creditTestCoverageFrom`) or expect root Kover aggregation to fix it —
+those re-attribute execution data that already exists in-process, and for compiler-executed code no
+such data exists anywhere. Closing the gap requires **instrumenting the forked compiler JVM**:
+attach the standalone JaCoCo agent to the `launch*SpineCompiler` tasks and merge the resulting
+`.exec` via `KoverConfig`'s `additionalBinaryReports` — the same pattern
+`io.spine.gradle.testing.enableTestKitCoverage()` already uses for Gradle TestKit workers. The
+JVM-args/agent hook is best owned by the `SpineEventEngine/compiler` repo (the launch tasks are
+`JavaExec`, so `jvmArgs` is the natural injection point; the `compiler-fat-cli` does **not**
+relocate plugin classes, so JaCoCo class IDs match and `additionalBinaryReports` credits them
+correctly). Complement with in-process unit tests for logic-heavy
+generators, and report codegen vs. runtime under separate Codecov flags/components.
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 264f823015..8ddcb8373d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -40,5 +40,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 6456f7006c..a95dc08e81 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,5 +1,5 @@
/*
- * Copyright 2024, TeamDev. All rights reserved.
+ * Copyright 2026, TeamDev. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,6 +43,7 @@ import io.spine.gradle.repo.standardToSpineSdk
import io.spine.gradle.report.coverage.KoverConfig
import io.spine.gradle.report.license.LicenseReporter
import io.spine.gradle.report.pom.PomGenerator
+import io.spine.gradle.testing.enableSpineCompilerCoverage
buildscript {
standardSpineSdkRepositories()
@@ -140,5 +141,14 @@ allprojects {
}
KoverConfig.applyTo(rootProject)
+
+// Attach the JaCoCo agent to the forked Spine Compiler JVMs so that the
+// out-of-process execution of code-generation plugins (the `java` and `context`
+// modules' renderers and generators) is credited to the root coverage report.
+// A no-op for modules that run no `launch*SpineCompiler` task.
+subprojects {
+ enableSpineCompilerCoverage()
+}
+
LicenseReporter.mergeAllReports(project)
PomGenerator.applyTo(project)
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt b/buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt
index 478ae1b96a..04a8888897 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/test/Jacoco.kt
@@ -34,4 +34,12 @@ package io.spine.dependency.test
@Suppress("ConstPropertyName")
object Jacoco {
const val version = "0.8.15"
+
+ /**
+ * The Maven coordinates of the standalone JaCoCo agent JAR (the `runtime`
+ * classifier), attached via `-javaagent:` to forked JVMs — Gradle TestKit
+ * workers and the Spine Compiler process — so their execution is credited
+ * to coverage.
+ */
+ const val agent = "org.jacoco:org.jacoco.agent:$version:runtime"
}
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt b/buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt
index e3bd5b98dd..113de938cd 100644
--- a/buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt
@@ -28,6 +28,7 @@ package io.spine.gradle.report.coverage
import io.spine.dependency.test.Jacoco
import io.spine.dependency.test.Kover
+import io.spine.gradle.testing.COMPILER_COVERAGE_DIR
import io.spine.gradle.testing.TESTKIT_COVERAGE_DIR
import java.io.File
import kotlinx.kover.gradle.plugin.dsl.KoverProjectExtension
@@ -104,6 +105,13 @@ private const val KOTLIN_FILE_CLASS_SUFFIX: String = "Kt"
* the probe level against each module's actual bytecode: a line hit both
* in-process and out-of-process is counted once. Summing pre-aggregated XML
* reports instead would double-count such lines.
+ * - Feeds the JaCoCo execution data produced by the forked Spine Compiler JVMs
+ * (see [io.spine.gradle.testing.enableSpineCompilerCoverage]) into the **root**
+ * `total` report as `additionalBinaryReports`. This credits the code-generation
+ * plugins in the `java` and `context` modules — renderers and generators that
+ * run out-of-process in the compiler fork and are otherwise reported at ~0%.
+ * Fed only at the root: Codecov ingests the root report, whose aggregation owns
+ * those classes, so a per-module feed would be redundant.
*
* This is the Kover-based successor to the deprecated JaCoCo-based
* coverage aggregation pipeline. The behaviour mirrors what
@@ -198,6 +206,7 @@ class KoverConfig private constructor(
onCheck.set(true)
}
additionalBinaryReports.addAll(rootTestKitExecFilesProvider())
+ additionalBinaryReports.addAll(rootCompilerExecFilesProvider())
}
filters {
excludes {
@@ -243,6 +252,27 @@ class KoverConfig private constructor(
.toList()
}
+ /**
+ * Lazy `Provider` of the JaCoCo execution-data files produced by the forked
+ * Spine Compiler JVMs across every subproject.
+ *
+ * These files credit the out-of-process execution of compiler plugins — the
+ * renderers and generators in the `java` and `context` modules — to the root
+ * coverage rollup. Unlike the TestKit files, they are collected from **all**
+ * subprojects regardless of whether the producing module applies Kover: the
+ * exec is produced by a test module's `launch*SpineCompiler` task, but the
+ * classes it credits belong to the aggregated production modules. Resolved at
+ * task-graph time, after the launch tasks have written them.
+ *
+ * @see io.spine.gradle.testing.enableSpineCompilerCoverage
+ */
+ private fun rootCompilerExecFilesProvider(): Provider> =
+ rootProject.provider {
+ rootProject.subprojects.asSequence()
+ .flatMap { compilerExecFiles(it).asSequence() }
+ .toList()
+ }
+
/**
* Lazy `Provider` of the JaCoCo execution-data files produced by the Gradle
* TestKit workers of [sub]. See [rootTestKitExecFilesProvider] for timing notes.
@@ -301,6 +331,23 @@ private fun testKitExecFiles(project: Project): List {
?: emptyList()
}
+/**
+ * Returns the JaCoCo execution-data (`.exec`) files written by the forked Spine
+ * Compiler JVMs of the [project], or an empty list if the module produced none.
+ *
+ * The files reside under `build/`[COMPILER_COVERAGE_DIR] and are created when a
+ * module opts in via [io.spine.gradle.testing.enableSpineCompilerCoverage].
+ */
+private fun compilerExecFiles(project: Project): List {
+ val dir = project.layout.buildDirectory.dir(COMPILER_COVERAGE_DIR).get().asFile
+ if (!dir.isDirectory) {
+ return emptyList()
+ }
+ return dir.listFiles { file -> file.isFile && file.extension == "exec" }
+ ?.sorted()
+ ?: emptyList()
+}
+
private fun generatedSrcDirs(project: Project): Set {
val javaDirs = javaMainSourceSet(project)
?.let(::generatedSrcDirs)
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/testing/SpineCompilerCoverage.kt b/buildSrc/src/main/kotlin/io/spine/gradle/testing/SpineCompilerCoverage.kt
new file mode 100644
index 0000000000..8ed789be0d
--- /dev/null
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/testing/SpineCompilerCoverage.kt
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2026, TeamDev. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Redistribution and use in source and/or binary forms, with or without
+ * modification, must retain the above copyright notice and the following
+ * disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package io.spine.gradle.testing
+
+import io.spine.dependency.test.Jacoco
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.tasks.JavaExec
+import org.gradle.kotlin.dsl.withType
+
+/**
+ * Configures the `launch*SpineCompiler` tasks of this project so that the JaCoCo
+ * agent is attached to the forked JVM that runs the Spine Compiler, and the
+ * resulting execution data is captured as a task output.
+ *
+ * The Spine Compiler executes plugin code — renderers, option generators, and
+ * ProtoData plugins such as `JavaValidationPlugin` — in a **separate JVM** spawned
+ * by the `launch[]SpineCompiler`
+ * [JavaExec][org.gradle.api.tasks.JavaExec] tasks. Kover (and JaCoCo) instrument
+ * only the `test` JVM, so this out-of-process execution is otherwise not credited
+ * to coverage, even though the module's `.proto` fixtures exercise it on every build.
+ *
+ * For every such launch task, this method:
+ *
+ * 1. Resolves the standalone JaCoCo agent JAR ([Jacoco.agent]) through a dedicated
+ * [AGENT_CONFIGURATION] configuration.
+ * 2. Attaches
+ * `-javaagent:=destfile=build/`[COMPILER_COVERAGE_DIR]`/.exec,append=false`
+ * to the forked JVM. Each launch variant (main, test, test-fixtures) writes its
+ * own per-task file, and `append=false` makes every run overwrite it, so a
+ * re-run never accumulates a previous run's probes.
+ * 3. Declares that `.exec` file as a **task output**, which keeps the launch tasks
+ * cacheable. A `JavaExec` task blocks until the forked JVM exits, and the agent
+ * flushes the exec on that exit — so the file is already on disk when the task
+ * action returns and *can* be a declared output. Declaring it lets Gradle's
+ * build cache store and restore it, so the coverage survives both an
+ * `UP-TO-DATE` skip (the file stays on disk from the previous run) and a
+ * `FROM-CACHE` hit (the file is restored from the cache). This is the key
+ * difference from [enableTestKitCoverage], whose TestKit worker daemon flushes
+ * its exec only *after* the `Test` task completes and therefore cannot declare
+ * it — which is why that helper must instead disable caching.
+ *
+ * The agent is attached from a `doFirst` action rather than a `jvmArgumentProviders`
+ * entry so that its absolute path stays out of the task's input fingerprint: the
+ * exec content depends on the compiler's own inputs (which drive what code runs), so
+ * keying up-to-dateness and the cache on those inputs is exactly right.
+ *
+ * The produced `.exec` files are merged into the **root** Kover report by
+ * [io.spine.gradle.report.coverage.KoverConfig]. Only classes the root aggregation
+ * owns (the `java` and `context` modules' renderers/generators) are credited from
+ * them; the compiler loads those classes as their original, un-relocated artifacts,
+ * so JaCoCo's class IDs match. The agent emits binary execution data because Kover
+ * merges binary data at the probe level — see `KoverConfig` for why binary, not XML.
+ *
+ * The method is idempotent and may be called on every subproject; it is a no-op for
+ * modules that declare no `launch*SpineCompiler` task.
+ */
+fun Project.enableSpineCompilerCoverage() {
+ val agent = configurations.maybeCreate(AGENT_CONFIGURATION).apply {
+ isCanBeConsumed = false
+ isCanBeResolved = true
+ }
+ dependencies.add(agent.name, Jacoco.agent)
+
+ val agentPath = agent.elements.map { it.single().asFile.absolutePath }
+ val execDir = layout.buildDirectory.dir(COMPILER_COVERAGE_DIR)
+
+ val launchTasks = tasks.withType().matching { it.isSpineCompilerLaunchTask() }
+
+ launchTasks.configureEach {
+ val taskName = name
+ val execFile = execDir.map { it.file("$taskName.exec") }
+ // Captured as a task output so the build cache stores and restores it —
+ // see the KDoc for why a synchronous `JavaExec` can declare its agent exec
+ // while a TestKit worker cannot.
+ outputs.file(execFile)
+ doFirst {
+ val file = execFile.get().asFile
+ file.parentFile.mkdirs()
+ jvmArgs(
+ "-javaagent:${agentPath.get()}=destfile=${file.absolutePath},append=false"
+ )
+ }
+ }
+
+ // The root Kover report/verification tasks read these exec files as
+ // `additionalBinaryReports`, but do not otherwise depend on the (non-Kover)
+ // test modules that produce them. Order them explicitly after the launch
+ // tasks — otherwise the report may run before the exec is written.
+ rootProject.tasks
+ .matching { it.isCoverageReportTask() }
+ .configureEach { dependsOn(launchTasks) }
+}
+
+/**
+ * Tells whether this is one of the `launch[]SpineCompiler` tasks that
+ * fork the Spine Compiler — matched by name to avoid a compile-time dependency on
+ * the compiler Gradle plugin's task types.
+ */
+private fun Task.isSpineCompilerLaunchTask(): Boolean =
+ name.startsWith(LAUNCH_TASK_PREFIX) && name.endsWith(LAUNCH_TASK_SUFFIX)
+
+/**
+ * Tells whether this is a Kover report or verification task — one that reads the
+ * binary exec files and must therefore run only after the launch tasks that write
+ * them. Matches `koverXmlReport`, `koverHtmlReport`, `koverVerify`, and their
+ * `Cached*` companions.
+ */
+private fun Task.isCoverageReportTask(): Boolean =
+ name.startsWith(KOVER_TASK_PREFIX) &&
+ (name.endsWith(REPORT_TASK_SUFFIX) || name.endsWith(VERIFY_TASK_SUFFIX))
+
+/**
+ * The name of the directory under a module's `build` directory where the coverage
+ * of forked Spine Compiler JVMs is collected.
+ *
+ * The directory holds JaCoCo execution-data (`.exec`) files — one per launch task —
+ * written by the JaCoCo agent attached to the compiler fork. `KoverConfig` picks
+ * these files up and feeds them into the root Kover report as additional binary
+ * reports.
+ *
+ * @see io.spine.gradle.report.coverage.KoverConfig
+ */
+internal const val COMPILER_COVERAGE_DIR: String = "jacoco-compiler"
+
+/**
+ * The name of the dedicated, resolvable configuration that holds the standalone
+ * JaCoCo agent JAR ([Jacoco.agent]) attached to the forked Spine Compiler JVMs.
+ *
+ * The configuration is hidden and non-consumable; it exists only to resolve the
+ * agent JAR.
+ */
+private const val AGENT_CONFIGURATION: String = "spineCompilerJacocoAgent"
+
+private const val LAUNCH_TASK_PREFIX: String = "launch"
+private const val LAUNCH_TASK_SUFFIX: String = "SpineCompiler"
+
+private const val KOVER_TASK_PREFIX: String = "kover"
+private const val REPORT_TASK_SUFFIX: String = "Report"
+private const val VERIFY_TASK_SUFFIX: String = "Verify"
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt b/buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt
index 9682596d83..9d5c89e15b 100644
--- a/buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/testing/TestKitCoverage.kt
@@ -84,7 +84,7 @@ fun Project.enableTestKitCoverage() {
isCanBeConsumed = false
isCanBeResolved = true
}
- dependencies.add(agent.name, "org.jacoco:org.jacoco.agent:${Jacoco.version}:runtime")
+ dependencies.add(agent.name, Jacoco.agent)
val agentPath = agent.elements.map { it.single().asFile.absolutePath }
val execDir = layout.buildDirectory.dir(TESTKIT_COVERAGE_DIR)
diff --git a/docs/dependencies/dependencies.md b/docs/dependencies/dependencies.md
index 00cbce2bd3..7c2fa5d873 100644
--- a/docs/dependencies/dependencies.md
+++ b/docs/dependencies/dependencies.md
@@ -1,6 +1,6 @@
-# Dependencies of `io.spine.tools:validation-context:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-context:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -1106,14 +1106,14 @@
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-context-tests:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-context-tests:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -1607,6 +1607,9 @@ This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -1803,28 +1806,31 @@ This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-docs:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-docs:2.0.0-SNAPSHOT.448`
## Runtime
## Compile, tests, and tooling
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:33 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:58 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-gradle-plugin:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-gradle-plugin:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -2864,14 +2870,14 @@ This report was generated on **Sun Jul 05 23:28:33 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-java:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-java:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -3977,14 +3983,14 @@ This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-java-bundle:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-java-bundle:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
@@ -4008,6 +4014,9 @@ This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
* **License:** [The Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
## Compile, tests, and tooling
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -4031,14 +4040,14 @@ This report was generated on **Sun Jul 05 23:28:43 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:35 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:58 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-java-settings:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-java-settings:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -4838,14 +4847,14 @@ This report was generated on **Sun Jul 05 23:28:35 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine:spine-validation-jvm-runtime:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine:spine-validation-jvm-runtime:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -5665,14 +5674,14 @@ This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-consumer:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-consumer:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -6162,6 +6171,9 @@ This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -6350,14 +6362,14 @@ This report was generated on **Sun Jul 05 23:28:42 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:40 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-consumer-dependency:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-consumer-dependency:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -6656,6 +6668,9 @@ This report was generated on **Sun Jul 05 23:28:40 WEST 2026** using
* **Project URL:** [http://functionaljava.org/](http://functionaljava.org/)
* **License:** [The BSD3 License](https://github.com/functionaljava/functionaljava/blob/master/etc/LICENCE)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -6811,14 +6826,14 @@ This report was generated on **Sun Jul 05 23:28:40 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-extensions:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-extensions:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -7274,6 +7289,9 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
* **Project URL:** [http://functionaljava.org/](http://functionaljava.org/)
* **License:** [The BSD3 License](https://github.com/functionaljava/functionaljava/blob/master/etc/LICENCE)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -7429,14 +7447,14 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-runtime:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-runtime:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -7805,6 +7823,9 @@ This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -7993,14 +8014,14 @@ This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
+This report was generated on **Mon Jul 06 18:59:00 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-time:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-time:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -8238,6 +8259,9 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -8422,14 +8446,14 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-validating:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-validating:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -8829,6 +8853,9 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -9033,14 +9060,14 @@ This report was generated on **Sun Jul 05 23:28:41 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:52 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-validator:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-validator:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.22.0.
@@ -9566,6 +9593,9 @@ This report was generated on **Sun Jul 05 23:28:52 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -9770,14 +9800,14 @@ This report was generated on **Sun Jul 05 23:28:52 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-validator-dependency:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-validator-dependency:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -9899,6 +9929,9 @@ This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
* **Project URL:** [https://checkerframework.org/](https://checkerframework.org/)
* **License:** [The MIT License](https://opensource.org/licenses/MIT)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -10010,14 +10043,14 @@ This report was generated on **Sun Jul 05 23:28:47 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:38 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:validation-vanilla:2.0.0-SNAPSHOT.447`
+# Dependencies of `io.spine.tools:validation-vanilla:2.0.0-SNAPSHOT.448`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -10252,6 +10285,9 @@ This report was generated on **Sun Jul 05 23:28:38 WEST 2026** using
1. **Group** : org.hamcrest. **Name** : hamcrest-core. **Version** : 1.3.
* **License:** [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
+1. **Group** : org.jacoco. **Name** : org.jacoco.agent. **Version** : 0.8.15.
+ * **License:** [EPL-2.0](https://www.eclipse.org/legal/epl-2.0/)
+
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0.
* **Project URL:** [http://www.jetbrains.org](http://www.jetbrains.org)
* **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -10360,6 +10396,6 @@ This report was generated on **Sun Jul 05 23:28:38 WEST 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Sun Jul 05 23:28:40 WEST 2026** using
+This report was generated on **Mon Jul 06 18:58:59 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
\ No newline at end of file
diff --git a/docs/dependencies/pom.xml b/docs/dependencies/pom.xml
index c0e87447e9..89b383889e 100644
--- a/docs/dependencies/pom.xml
+++ b/docs/dependencies/pom.xml
@@ -10,7 +10,7 @@ all modules and does not describe the project structure per-subproject.
-->
io.spine.tools
validation
-2.0.0-SNAPSHOT.447
+2.0.0-SNAPSHOT.448
2015
diff --git a/version.gradle.kts b/version.gradle.kts
index f3e0bab1d0..7ad68a8dd8 100644
--- a/version.gradle.kts
+++ b/version.gradle.kts
@@ -27,4 +27,4 @@
/**
* The version of the Validation library to publish.
*/
-val validationVersion by extra("2.0.0-SNAPSHOT.447")
+val validationVersion by extra("2.0.0-SNAPSHOT.448")