Skip to content

Migrate to Jackson 3.2.1 - #955

Merged
alexander-yevsyukov merged 16 commits into
masterfrom
bump-jackson
Aug 9, 2026
Merged

Migrate to Jackson 3.2.1#955
alexander-yevsyukov merged 16 commits into
masterfrom
bump-jackson

Conversation

@alexander-yevsyukov

Copy link
Copy Markdown
Contributor

Migrates the repository from Jackson 2.22.1 (com.fasterxml.jackson) to Jackson 3.2.1 (tools.jackson), following the Jackson 3 migration brief (config/docs/jackson-3-migration-brief.md).

What changed

  • The config submodule points at its bump-jackson tip, and buildSrc is synced from it: the Jackson dependency object now serves tools.jackson:jackson-bom:3.2.1 — confirmed the newest 3.2.x. jackson-annotations deliberately stays on 2.x (BOM-resolved to 2.22), the only com.fasterxml artifact on the runtime classpath.
  • The format module is migrated to the tools.jackson.* packages and Jackson 3's immutable mappers: JacksonSupport abstracts over a MapperBuilder (JsonMapper.builder() / YAMLMapper.builder()) instead of a shared JsonFactory; parsers keep sharing the writers' mapper configuration. The jackson-datatype-jdk8 and -jsr310 dependencies are removed — both merged into jackson-databind in 3.x.
  • Jackson module discovery is ServiceLoader-only via MapperBuilder.findAndAddModules(). The public mutable JacksonSupport.modules list is removed; modules are contributed by exposing them as services, e.g., with @AutoService(JacksonModule::class).
  • @throws documentation is corrected: Jackson 3 throws the unchecked JacksonException (and subclasses) instead of IOException; IOException remains accurate for file reading and the Protobuf-backed formats.
  • Version: 2.0.0-SNAPSHOT.426 -> 2.0.0-SNAPSHOT.430 (breaking-change rounding per the version policy).

Wire format

The only serialization change vs. 2.22.1, established by byte-diffing outputs of the same value: java.time types are now written as ISO-8601 strings instead of numeric epoch values (DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS is off by default in 3.x). Property order for Kotlin data classes is unchanged (constructor properties keep declaration order), and YAML output is otherwise byte-identical despite the switch to snakeyaml-engine. Fixtures generated under 2.22.1 are committed as test resources, and Jackson2CompatibilitySpec proves they still parse correctly under 3.2.1. All 3.x changed defaults are accepted (none restored); the decision log lives in .agents/tasks/bump-jackson.md.

Breaking changes

  • JacksonSupport.Companion.modules (MutableList<Module>) is removed.
  • Jackson types visible in the format API move from com.fasterxml.jackson.* to tools.jackson.*.

Reviewer notes

  • Depends on the config repository's bump-jackson branch (the submodule is pinned at its tip).
  • buildSrc keeps its own Jackson at 2.18.3 deliberately: buildSrc sources still use the 2.x API; the decoupling comment comes from config.
  • Pre-PR gate: ./gradlew build dokkaGenerate green; spine-code-review, kotlin-engineer, and review-docs all returned APPROVE. Three cosmetic nits were reported and deliberately left for review: a double "other" in one JacksonSupport KDoc sentence, a repeated [Format] link in the class doc, and the unnamed origin of the @AutoService annotation in an example.

🤖 Generated with Claude Code

alexander-yevsyukov and others added 13 commits August 7, 2026 23:34
Advance the `config` submodule to its `bump-jackson` tip, which migrates
the `Jackson` dependency object to `tools.jackson:jackson-bom:3.2.1`
(Jackson 3 group IDs; `jackson-annotations` deliberately stays on 2.x),
and copy the resulting `buildSrc` delta into this repository.

Also add the task plan for the migration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Serialize a deterministic `UserAccount` through `io.spine.format.write`
while the module is still on Jackson 2.22.1, and store the JSON and YAML
outputs as test resources. After the migration to Jackson 3, round-trip
tests parse these files to prove that data written by 2.x remains
readable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Move Jackson imports to the `tools.jackson.*` packages and adapt to the
immutable mapper design of Jackson 3:

- `JacksonSupport` now abstracts over a `MapperBuilder` instead of
  a `JsonFactory`: mappers cannot be configured after construction,
  so subclasses supply `JsonMapper.builder()` / `YAMLMapper.builder()`,
  and the base class registers shared modules and enables
  `INDENT_OUTPUT` on the builder before `build()`.
- The shared `modules` list holds `JacksonModule`s (renamed from
  `Module` in 3.x) and is discovered via `MapperBuilder.findModules()`
  (the `ObjectMapper.findModules()` static is gone).
- Parsers keep sharing the writers' mapper configuration, now via
  `mapperBuilder()` instead of a shared factory instance.
- Drop the `jackson-datatype-jdk8` and `jackson-datatype-jsr310`
  dependencies: both are merged into `jackson-databind` in 3.x.
- Correct `@throws` documentation: Jackson 3 throws the unchecked
  `JacksonException` instead of `IOException` subclasses; plain I/O
  failures and Protobuf-backed parsing still surface `IOException`.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add `Jackson2CompatibilitySpec`, which parses the JSON and YAML fixtures
produced by Jackson 2.22.1 and asserts the values are read intact under
Jackson 3.2.1, covering `java.time.Instant` (numeric epoch form), Guava
collections, and JDK `Optional`.

The only wire-format change of the migration, verified by diffing 2.x and
3.x outputs of the same value: `Instant` is now written as an ISO-8601
string instead of a numeric epoch value (`DateTimeFeature`,
ex-`WRITE_DATES_AS_TIMESTAMPS`, is now disabled by default). Numeric
values written by 2.x remain parseable, as these tests demonstrate.
Property order is unchanged: constructor-bound Kotlin properties keep
declaration order in Jackson 3.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerated by `build` after the move to `tools.jackson` 3.2.1
coordinates and the removal of the `jdk8` and `jsr310` datatype
modules, which Jackson 3 merged into `jackson-databind`.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add a team-memory note about the silent `*Test`/`*Spec` class-name
filter of the shared `test` task, discovered while generating the
Jackson 2 fixtures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Extend the `@throws tools.jackson.core.JacksonException` tags with
"or its subclass" — Jackson 3 throws concrete subtypes such as
`StreamReadException` and `DatabindException` — matching the phrasing
of the neighboring `IOException` tags. In `Jackson2CompatibilitySpec`,
backtick the `@DisplayName` subject as sibling specs do, load fixtures
via `Class.getResource`, and reflow a widow line in the class KDoc.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Drop the mutable shared module list from `JacksonSupport`: mappers now
call `MapperBuilder.findAndAddModules()`, so modules are contributed by
exposing them as `ServiceLoader` services (e.g., via `@AutoService`)
instead of mutating a public list. This removes the companion object —
and with it the registration-timing and concurrent-modification hazards
of the former API. Removing the published `modules` property is a
breaking change covered by the version bump to `2.0.0-SNAPSHOT.430`.

Also apply review feedback to the KDoc: state that new formats are
added within the Spine SDK (the `Format` hierarchy is sealed), fix the
sentence wrongly attributing other formats to `YAMLMapper`, and note
that `java.time` values are now written as ISO-8601 strings while data
written by Jackson 2 remains readable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 8, 2026 00:06
@alexander-yevsyukov alexander-yevsyukov self-assigned this Aug 8, 2026
@alexander-yevsyukov alexander-yevsyukov moved this to 🏗 In progress in v2.0 Aug 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the repository’s Jackson usage from Jackson 2.x (com.fasterxml.jackson.*) to Jackson 3.2.1 (tools.jackson.*), focusing on the format module’s JSON/YAML I/O implementation and updating generated dependency reports and versioning to reflect the breaking API change.

Changes:

  • Migrated format JSON/YAML parsing/writing to Jackson 3’s tools.jackson.* packages using immutable mapper builders and ServiceLoader-based module discovery.
  • Added Jackson 2 compatibility fixtures + a regression spec ensuring Jackson 2-written files still parse under Jackson 3.
  • Bumped published version and refreshed dependency-report artifacts; removed stale/generated root-level pom.xml.

Reviewed changes

Copilot reviewed 146 out of 151 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
version.gradle.kts Bumps published version to .430.
pom.xml Removes stale generated root dependency report.
format/build.gradle.kts Switches format deps to Jackson 3 BOM + trims removed datatype modules.
format/src/main/kotlin/io/spine/format/JacksonSupport.kt Refactors Jackson support to mapper builders + ServiceLoader module discovery.
format/src/main/kotlin/io/spine/format/Parse.kt Updates public KDoc @throws for Jackson 3 exception types.
format/src/main/kotlin/io/spine/format/parse/Parser.kt Updates parser API KDoc @throws for Jackson-backed formats.
format/src/main/kotlin/io/spine/format/parse/JacksonParser.kt Migrates parser implementation to tools.jackson.* mappers/builders.
format/src/main/kotlin/io/spine/format/write/JacksonWriter.kt Migrates writer implementation to tools.jackson.* mappers/builders.
format/src/test/kotlin/io/spine/format/Jackson2CompatibilitySpec.kt Adds coverage ensuring Jackson 2 fixtures remain readable under Jackson 3.
format/src/test/resources/io/spine/format/given/v2/user-account.json Adds Jackson 2 JSON fixture for compatibility tests.
format/src/test/resources/io/spine/format/given/v2/user-account.yaml Adds Jackson 2 YAML fixture for compatibility tests.
docs/dependencies/pom.xml Refreshes generated dependency POM (now includes tools.jackson:* artifacts).
docs/dependencies/dependencies.md Refreshes generated dependency/license report output.
buildSrc/src/main/resources/dokka/styles/custom-styles.css Config sync (copyright year).
buildSrc/src/main/kotlin/write-manifest.gradle.kts Config sync (wording tweaks).
buildSrc/src/main/kotlin/uber-jar-module.gradle.kts Config sync (typo + task API usage).
buildSrc/src/main/kotlin/test-module.gradle.kts Config sync (copyright year).
buildSrc/src/main/kotlin/Strings.kt Config sync (doc wording).
buildSrc/src/main/kotlin/pmd-settings.gradle.kts Config sync (copyright year).
buildSrc/src/main/kotlin/module-testing.gradle.kts Config sync (KDoc wording).
buildSrc/src/main/kotlin/kmp-publish.gradle.kts Config sync (copyright year).
buildSrc/src/main/kotlin/kmp-module.gradle.kts Config sync (KDoc wording + suppression removal).
buildSrc/src/main/kotlin/io/spine/gradle/testing/Multiproject.kt Config sync (typo fix).
buildSrc/src/main/kotlin/io/spine/gradle/testing/Logging.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/TaskName.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/StringExtensions.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/RunGradle.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/RunBuild.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/SpineLicense.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ProjectMetadata.kt Refactors metadata retrieval helpers (config sync).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomXmlWriter.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/PomFormatting.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/ModuleDependency.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/MarkupExtensions.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/InceptionYear.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/pom/DependencyScope.kt Config sync (comment punctuation).
buildSrc/src/main/kotlin/io/spine/gradle/report/license/Template.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/license/Tasks.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/report/license/ProjectDependencies.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/license/MarkdownReportRenderer.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/license/LicenseReporter.kt Adjusts report paths + opts out of build cache for report task.
buildSrc/src/main/kotlin/io/spine/gradle/report/license/Configuration.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/KoverConfig.kt Removes unused import (config sync).
buildSrc/src/main/kotlin/io/spine/gradle/repo/RepoSlug.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/repo/Credentials.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/publish/StandardJavaPublicationHandler.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingRepos.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/publish/PublishingExts.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt Config sync (punctuation).
buildSrc/src/main/kotlin/io/spine/gradle/publish/ProtoExts.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudRepo.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/publish/CloudArtifactRegistry.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/Publish.kt Config sync (typo fix: NPM).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/task/IntegrationTest.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Protobuf.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/McJs.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/JsPlugins.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/plugin/Idea.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsExtension.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsEnvironment.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javascript/JsContext.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocTag.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/javadoc/JavadocConfig.kt Config sync (KDoc wording/formatting).
buildSrc/src/main/kotlin/io/spine/gradle/javadoc/ExcludeInternalDoclet.kt Config sync (hyphenation).
buildSrc/src/main/kotlin/io/spine/gradle/javadoc/Encoding.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/javac/Javac.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/javac/ErrorProne.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/java/Tasks.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPagesExtension.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/github/pages/UpdateGitHubPages.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/github/pages/Update.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/github/pages/AuthorEmail.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/git/UserInfo.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/git/Repository.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/git/Branch.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Publish.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/task/IntegrationTest.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/task/DartTasks.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/task/Build.kt Config sync (typo fixes).
buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/Protobuf.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/plugin/DartPlugins.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/DartExtension.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/DartEnvironment.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/dart/DartContext.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/gradle/ConfigTester.kt Config sync (KDoc wording/punctuation).
buildSrc/src/main/kotlin/io/spine/gradle/Clean.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/checkstyle/CheckStyleConfig.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/Build.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/gradle/base/Tasks.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/docs/MarkdownDocument.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/TestKitTruth.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/Testcontainers.kt Updates Testcontainers coordinates/version (config sync).
buildSrc/src/main/kotlin/io/spine/dependency/test/SystemLambda.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/OpenTest4J.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/Kover.kt Bumps Kover version constant.
buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/Hamcrest.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/test/AssertK.kt Config sync (KDoc punctuation).
buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt Updates local Validation dep constants.
buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt Updates ToolBase versions.
buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt Updates Time version.
buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/local/Spine.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/local/Reflect.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoTap.kt Config sync (comment wording).
buildSrc/src/main/kotlin/io/spine/dependency/local/ModelCompiler.kt Removes ModelCompiler dependency object.
buildSrc/src/main/kotlin/io/spine/dependency/local/Logging.kt Updates Logging version.
buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt Updates CoreJvm version.
buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt Updates compiler artifacts/versions + renames fat CLI coordinate.
buildSrc/src/main/kotlin/io/spine/dependency/local/Change.kt Updates Change version.
buildSrc/src/main/kotlin/io/spine/dependency/local/BaseTypes.kt Updates BaseTypes version.
buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt Updates Base versions.
buildSrc/src/main/kotlin/io/spine/dependency/lib/Slf4J.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/dependency/lib/Roaster.kt Removes outdated Java 11 note.
buildSrc/src/main/kotlin/io/spine/dependency/lib/Protobuf.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/dependency/lib/KotlinX.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/Klaxon.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaX.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaPoet.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaJwt.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/Jackson.kt Updates Jackson dependency object to Jackson 3 + documents annotations exception.
buildSrc/src/main/kotlin/io/spine/dependency/lib/Coroutines.kt Config sync (typo fix).
buildSrc/src/main/kotlin/io/spine/dependency/lib/BouncyCastle.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/Asm.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/io/spine/dependency/lib/AppEngine.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/lib/ApacheHttp.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/Serialization.kt Config sync (spacing fix).
buildSrc/src/main/kotlin/io/spine/dependency/kotlinx/KotlinX.kt Config sync (copyright year).
buildSrc/src/main/kotlin/io/spine/dependency/Dependency.kt Config sync (whitespace fix).
buildSrc/src/main/kotlin/io/spine/dependency/boms/BomsPlugin.kt Config sync (typo fix).
buildSrc/src/main/kotlin/io/spine/dependency/boms/Boms.kt Config sync (copyright year).
buildSrc/src/main/kotlin/DokkaExts.kt Config sync (KDoc wording).
buildSrc/src/main/kotlin/DocumentationSettings.kt Config sync (copyright year).
buildSrc/src/main/kotlin/detekt-code-analysis.gradle.kts Config sync (KDoc wording).
buildSrc/src/main/kotlin/DependencyResolution.kt Config sync (hyphenation).
buildSrc/src/main/kotlin/config-tester.gradle.kts Config sync (KDoc wording).
buildSrc/src/main/kotlin/BuildSettings.kt Config sync (copyright year).
buildSrc/src/main/kotlin/BuildExtensions.kt Adds helper to exclude JetBrains annotations from published deps.
buildSrc/build.gradle.kts Clarifies buildSrc Jackson 2 decoupling + bumps Kover version.
buildSrc/settings.gradle.kts Config sync (copyright year).
buildSrc/quality/checkstyle.xml Config sync (copyright year).
buildSrc/quality/checkstyle-suppressions.xml Config sync (copyright year).
.idea/live-templates/README.md Formatting tweak (IDE metadata).
.github/workflows/gradle-wrapper-validation.yml Removes wrapper validation workflow file.
.agents/tasks/bump-jackson.md Adds migration task log (agent metadata).
.agents/memory/MEMORY.md Adds link to new memory entry (agent metadata).
.agents/memory/feedback/test-class-name-filter.md Adds new memory note about test class name filtering (agent metadata).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread format/src/main/kotlin/io/spine/format/JacksonSupport.kt Outdated
@alexander-yevsyukov alexander-yevsyukov moved this from 🏗 In progress to In Review in v2.0 Aug 8, 2026
Requested by the Copilot review: multiple similarly named annotations
exist, so the example now states it means
`com.google.auto.service.AutoService` from Google Auto Service.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 8, 2026 00:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 146 out of 151 changed files in this pull request and generated no new comments.

Suppressed comments (1)

format/src/main/kotlin/io/spine/format/JacksonSupport.kt:58

  • In the KDoc instructions, [Format] is linked twice in a row (“extends [Format], nesting it under the [Format] class”). This is a minor readability issue and one of the links can be replaced with plain code formatting to avoid repetition.

Replace the second `[Format]` link with plain prose (flagged by both
the `review-docs` gate and the Copilot review), and de-duplicate the
"other ... other" phrasing in the `mapperBuilder` documentation —
the last two cosmetic items disclosed in the pull request description.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 8, 2026 00:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 146 out of 151 changed files in this pull request and generated no new comments.

@codecov

codecov Bot commented Aug 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.01%. Comparing base (7a05857) to head (0e3d9e0).

Additional details and impacted files
@@             Coverage Diff             @@
##           master     #955       +/-   ##
===========================================
+ Coverage        0   94.01%   +94.01%     
===========================================
  Files           0      194      +194     
  Lines           0     4177     +4177     
  Branches        0      345      +345     
===========================================
+ Hits            0     3927     +3927     
- Misses          0      149      +149     
- Partials        0      101      +101     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI review requested due to automatic review settings August 8, 2026 00:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 146 out of 151 changed files in this pull request and generated no new comments.

@alexander-yevsyukov
alexander-yevsyukov merged commit 233e336 into master Aug 9, 2026
10 checks passed
@alexander-yevsyukov
alexander-yevsyukov deleted the bump-jackson branch August 9, 2026 14:43
@github-project-automation github-project-automation Bot moved this from In Review to ✅ Done in v2.0 Aug 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants