)]}'
{
  "log": [
    {
      "commit": "236a8c9dcb7a7a1237e6b422229310cf81ffb1b1",
      "tree": "d6a71f0c14fab89a9166da0ab8680e667fd563f8",
      "parents": [
        "612aab08a1bf9b667d719e2e56bbfe3a2b21a2c7"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jul 30 07:51:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 07:51:22 2026 +0200"
      },
      "message": "Remove PathSelector include-based directory pre-filtering optimization\n\nForward-port of #12623 from maven-4.0.x to master.\n\nRemoves the unsafe include-based directory pre-filtering optimization\nfrom PathSelector.DirectoryPrefiltering. Using exclude filters for\ndirectory traversal is safe, but using include filters causes false\nnegatives because parent directories need to be traversed first.\n\nAuthor: Martin Desruisseaux (@desruisseaux)\nCloses #12624"
    },
    {
      "commit": "612aab08a1bf9b667d719e2e56bbfe3a2b21a2c7",
      "tree": "5e7b7c2ef8c24788a2b951fbf5860bed794f30b7",
      "parents": [
        "5b9e2e59e989a90aca056739a01068535b9dc9ce"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jul 30 02:43:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 02:43:41 2026 +0200"
      },
      "message": "Remove erroneous PathSelector optimization that skipped path relativization\n\nForward-port of #12621 from maven-4.0.x to master.\n\nThe optimization skipped path relativization when all include/exclude\npatterns started with \"**\". This produced false positives when the base\ndirectory path itself contained a segment matching the pattern (e.g.,\nbase \u003d \"something/target/test-classes\" with pattern \"**/test-classes/**\"\nwould match every file under the base directory).\n\nAdded a regression test for the exact false-positive scenario.\n\nOriginal fix by: Martin Desruisseaux (@desruisseaux)\n\nCloses #12622"
    },
    {
      "commit": "5b9e2e59e989a90aca056739a01068535b9dc9ce",
      "tree": "3d846699d59e27cd7e6eabe358e93a0642262b55",
      "parents": [
        "ace005b472e519f16da89eae40022f76119c225c"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 29 21:26:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 21:26:24 2026 +0200"
      },
      "message": "Add Apache license headers to address ATR concerns (#12613) (#12615)\n\nAdd missing Apache License headers to files flagged by ATR:\n- Java test files (MyMojoTest.java, App.java, AppTest.java)\n- Shell script (prepare.sh)\n- Config files (Jenkinsfile, .asf.yaml)\n- Service loader files (Processor, di.Inject)\n- Test pom/metadata XML files in inheritance-repo\n- Test placeholder files\n\nBinary .jar files and third-party license texts (EPL, CDDL, BSD)\nremain without headers as they cannot be modified.\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ace005b472e519f16da89eae40022f76119c225c",
      "tree": "a2f4c4ae9c4cde2467b04697fc457853a2b8e101",
      "parents": [
        "2f12ab72c974e551b50701e05d1fd4283fa8109d"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 29 15:58:22 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 29 20:32:38 2026 +0200"
      },
      "message": "mvnup: skip dedup inside plugin \u003cconfiguration\u003e elements\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "2f12ab72c974e551b50701e05d1fd4283fa8109d",
      "tree": "81a8f256f5d198eaeeef7c1b5ae9c5c812d1d9a8",
      "parents": [
        "286b463d09b1fecd5165ea132573a82c2c31f0d4"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 29 15:58:09 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 29 20:32:38 2026 +0200"
      },
      "message": "Use resource filtering for mng-12534 IT plugin mavenVersion\n\nMove the plugin POM to src/test/resources-filtered/ (which already\nhas \u003cfiltering\u003etrue\u003c/filtering\u003e in the core-it-suite build) and\nreplace the hardcoded version with ${maven-version}, defined in the\nITs parent POM.\n\nMaven resource filtering resolves the token at build time, so the\nversion always matches the Maven build under test — including during\nthe release process, where the release plugin bumps the version.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "286b463d09b1fecd5165ea132573a82c2c31f0d4",
      "tree": "1c29ed08fc6c7244457e193a32eaae8d099f33ff",
      "parents": [
        "6e8fa181d454fb2ca68968feffb65aa912d4f908"
      ],
      "author": {
        "name": "Elliotte Rusty Harold",
        "email": "elharo@users.noreply.github.com",
        "time": "Wed Jul 29 16:45:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 18:45:47 2026 +0200"
      },
      "message": "Fix #12583: Inverted file existence check in DefaultTransport.put()\n\nThe condition Files.isRegularFile(source) in DefaultTransport.put() was\ninverted — it threw when the file existed and silently accepted non-existent\nfiles, breaking putBytes() and putString() transitively. Added the missing\nnegation and a new DefaultTransportTest covering non-existent file rejection,\nvalid file acceptance, and the putBytes() delegation chain.\n\nCloses #12612"
    },
    {
      "commit": "6e8fa181d454fb2ca68968feffb65aa912d4f908",
      "tree": "b57126ae73a9e2e9fde2bac1c48be2b4d2443a84",
      "parents": [
        "506457a0f8843f33614bae724fd39ba844857be6"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jul 28 21:48:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 21:48:20 2026 +0200"
      },
      "message": "Bump Sisu to 1.1.0 and fix extension realm visibility for JSR330 filtering (#12554)\n\n* Bump Sisu to 1.1.0 and fix extension realm visibility for JSR330 filtering\n\nSisu 1.1.0 adds JSR330 bean visibility filtering based on ClassRealm\nhierarchy (jsr330ComponentVisibilityFollowsPlexusVisibility, on by default).\nWhen TCCL is an extension realm during lifecycle callbacks, Sisu\u0027s\nFilteredBeans calls RealmManager.computeVisibleNames() which traverses\nparent and import realms via BFS. Extension realms have plexus.core as\nparent but beans discovered in the container are sourced from the\nmaven.ext realm. Since extension realms had no import relationship\nto maven.ext, container-sourced beans were incorrectly filtered out.\n\nThis caused failures with extensions like Mimir that register lifecycle\nlisteners: when the listener\u0027s callback triggered a Sisu dynamic map\naccess (e.g., NameMapper resolution), the beans were invisible from\nthe extension\u0027s realm, resulting in \"Unknown NameMapper name\" errors.\n\nThe fix adds a reverse import from each extension realm to the container\nrealm (maven.ext), following the same pattern already used for the\nforward direction (maven.ext imports from extension realms). This\nmakes maven.ext reachable in Sisu\u0027s visibility BFS traversal, so\ncontainer-sourced beans remain visible regardless of TCCL context.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Add IT for GH-12522: non-extension plugin JSR330 component leak\n\nRegression test verifying that plugins NOT marked with\n\u003cextensions\u003etrue\u003c/extensions\u003e do not cause build failures when they\nship JSR330 components whose internal dependencies cannot be resolved\nin Maven\u0027s container. Uses tycho-bnd-plugin as the reproducer.\n\nWith Sisu 1.1.0\u0027s jsr330ComponentVisibilityFollowsPlexusVisibility,\nnon-extension plugin components are filtered out of container-realm\nJSR330 lookups, preventing the provisioning error.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Skip GH-12522 IT on JDK \u003c 21 (tycho-bnd-plugin 5.0.3 requires Java 21)\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "506457a0f8843f33614bae724fd39ba844857be6",
      "tree": "a82e417d17dae487e9ca49b8977d542ac569e0bb",
      "parents": [
        "58844d8171f98d49aa78957f811239e4fd387f13"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Tue Jul 28 00:15:30 2026 +0200"
      },
      "committer": {
        "name": "Hervé Boutemy",
        "email": "herve.boutemy@free.fr",
        "time": "Tue Jul 28 21:28:54 2026 +0200"
      },
      "message": "improve doc about deprecating plugin descriptor\u0027s requirement\n\n(cherry picked from commit 9cf85cf27ac05625d5395977be0e98169fa9b8b4)\n\n# Conflicts:\n#\tapi/maven-api-plugin/src/main/mdo/plugin.mdo\n"
    },
    {
      "commit": "58844d8171f98d49aa78957f811239e4fd387f13",
      "tree": "40c0db4e977c8c672b5db5c66bbd6a2ba7bc7390",
      "parents": [
        "f8c1b162c1a1be8671917e1f1316a0e08dbf3b83"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Tue Jul 28 21:42:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 18:12:47 2026 +0200"
      },
      "message": "[MNG-8768] Add executable() function for conditional profile activation based on PATH\n\n* [MNG-8768] Add executable() function for conditional profile activation based on PATH\n\nImplements MNG-8768 (GitHub #10115): adds an executable(name_or_path)\nfunction to Maven\u0027s condition-based profile activation DSL.\n\nThe function evaluates to true if the given executable name can be found\nin the system PATH, or if an absolute/relative path points directly to an\nexecutable file.\n\nUse-case (from the issue): auto-detect the presence of x86_64-linux-musl-gcc\nwhen building GraalVM native images with the native-maven-plugin, and\nconditionally add --static --libc\u003dmusl to the build options only when the\ncompiler wrapper is available on the current machine.\n\nExample pom.xml usage:\n  \u003cactivation\u003e\n    \u003ccondition\u003eexecutable(\u0027x86_64-linux-musl-gcc\u0027)\u003c/condition\u003e\n  \u003c/activation\u003e\n\nImplementation details:\n- ConditionFunctions.executable() delegates to new ExecutableFinder helper\n- ExecutableFinder splits the env.PATH system property and probes each\n  directory; on Windows it also tries .exe / .cmd / .bat / .com extensions\n- Absolute/relative paths (containing a path separator) are checked directly\n  without PATH traversal\n- PATH is sourced from ProfileActivationContext.getSystemProperty(\u0027env.PATH\u0027)\n  (Maven\u0027s normalised env var key), with a System.getenv(\u0027PATH\u0027) fallback\n\nTests:\n- 5 new end-to-end tests in ConditionProfileActivatorTest (MNG-8768)\n- 12 new unit tests in ExecutableFinderTest covering PATH search, Windows\n  extension probing, absolute paths, non-executable files, and empty PATH\n\n* Address review comments for executable() function\n\n- Add a warning in DefaultModelValidator if executable() condition is used, noting reproducibility issues\n- Add a Javadoc warning to ConditionFunctions.executable()\n- Remove System.getenv(\u0027PATH\u0027) fallback in ExecutableFinder\n- Fix OS checking to use ProfileActivationContext instead of System.getProperty\n- Convert Paths.get to Path.of\n- Remove dead code (candidateNames)\n- Update tests: remove fallback test, use @DisabledOnOs(OS.WINDOWS) for OS-specific test\n\n* Address second review: remove accidental file, fix Windows coverage, fix direct-path comment\n\n- Remove accidental your-database.db from repo root\n- Remove .replace(\u0027\\\\\u0027, \u0027/\u0027) from ConditionProfileActivatorTest.testExecutableWithAbsolutePath()\n- Fix isExecutableFile() comment: no longer claims caller always filters by extension\n- Direct paths on Windows now also probe .exe/.cmd/.bat/.com extensions\n- Add contextWithPathAndOs() test helper that sets os.name in context\n- Add 3 new Windows-simulated tests:\n  - findsExecutableWithWindowsExtensionInPath: PATH search finds my-tool.exe for \u0027my-tool\u0027\n  - findsExecutableWithWindowsExtensionByDirectPath: direct path probes .exe\n  - doesNotAppendExtensionOnNonWindows: confirms no extension probing on Linux\n\n* Address minor nit: deduplicate contextWithPath test helpers"
    },
    {
      "commit": "f8c1b162c1a1be8671917e1f1316a0e08dbf3b83",
      "tree": "47a5c65adde8286ad1e34133e56cdd02a232e889",
      "parents": [
        "6338672b15ff417c6dea7f64846ada316a9309ea"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Tue Jul 28 16:29:09 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 12:59:09 2026 +0200"
      },
      "message": "[MNG-11147] Fix BOM version inference for sibling modules in dependencyManagement\n\nVersion and groupId inference in transformFileToRaw was only applied to\ndirect dependencies but not to dependencies declared in\n\u003cdependencyManagement\u003e. This caused installed consumer BOMs to be\nmissing version tags for reactor sibling modules, making the BOM\nunusable by downstream consumers.\n\nExtract the inference loop into a reusable inferDependencies helper and\napply it to both \u003cdependencies\u003e and \u003cdependencyManagement\u003e.\n\nCloses #11147\n\nCo-authored-by: Hiteshsai007 \u003chiteshsainiki007@gmail.com\u003e"
    },
    {
      "commit": "6338672b15ff417c6dea7f64846ada316a9309ea",
      "tree": "bc04c771dd2eb087acb4711309b46c862dd33338",
      "parents": [
        "0003334f5c3fcd6035c9e2c5c29e3dba4c4ea9de"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Tue Jul 28 15:19:45 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:49:45 2026 +0200"
      },
      "message": "Convert paths for MSYS2 and jvm.config placeholders in bin/mvn (#12546)\n\n* Convert paths for MSYS2 and jvm.config placeholders in bin/mvn\n\nThe launcher already converted POSIX paths to their native Windows form\nfor Cygwin and MinGW (GH-7958), but a few paths still reached the JVM in\na mangled or mixed form:\n\n* uname(1) reports MSYS_NT-* for the MSYS2 shell, which did not match the\n  MINGW* pattern, so no conversion happened at all there. The MSYS2\n  argument conversion then rewrote the POSIX path into the mixed form\n  D:/a/... instead of D:\\a\\...\n\n* ${MAVEN_PROJECTBASEDIR} placeholders in .mvn/jvm.config were expanded\n  with the POSIX path, since JvmConfigParser was invoked before the\n  conversion took place. The base directory is now converted upfront and\n  both representations are kept: the POSIX one to locate jvm.config from\n  the shell, the native one for everything handed over to the JVM.\n\n* -Dlibrary.jline.path was built by appending /lib/jline-native to the\n  already converted MAVEN_HOME, producing C:\\maven/lib/jline-native. It\n  is now converted on its own.\n\nValues holding a path are printed with printf rather than echo, including\nthe debug logging: several POSIX shells (dash and the other Almquist\nderivatives commonly installed as /bin/sh) expand backslash escapes in\necho, so C:\\tmp\\build was emitted with a tab in place of \\t. The\nconversion is also guarded, so a missing cygpath(1) warns and falls back\nto POSIX paths rather than passing empty paths to the JVM.\n\nA shell test covering all of the above is added and wired into the build\nthrough exec-maven-plugin, so mvn verify runs it. It stubs uname, cygpath\nand java and runs the launcher with a PATH holding nothing but those\nstubs, so the Windows-only code paths are exercised identically on every\nplatform; keeping the ambient PATH would let the genuine cygpath(1) of an\nactual Cygwin/MSYS2 installation be picked up and the missing-cygpath\nfallback would never be exercised there.\n\nRelated to GH-12537\n\n* Fix #12537: normalize temp dir path in test-mvn-path-conversion.sh\n\nOn macOS the $TMPDIR variable ends with a trailing slash, so\nmktemp -d \"${TMPDIR}/mvn-path-conversion.XXXXXX\" produces a path\ncontaining a double slash (e.g. .../T//mvn-path-conversion.XNBzZw).\nThe pwd(1) calls inside the mvn launcher collapse the double slash,\ncausing all 22 path assertions to fail on macOS CI runners.\n\nResolve the work directory through cd/pwd right after creation so\nthe test\u0027s reference paths stay in sync with the launcher output.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Guillaume Nodet \u003cgnodet@gmail.com\u003e\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "0003334f5c3fcd6035c9e2c5c29e3dba4c4ea9de",
      "tree": "8f5439b07c0ef894adceadf21667dd435bc2c127",
      "parents": [
        "7a0e2210110cc83d8b9b73bff5394fce53f5d6fb"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jul 28 11:33:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:33:16 2026 +0200"
      },
      "message": "Fix #12534: Wire up @After annotation processing in Maven core\n\nMakes @After repeatable (@Afters container), defaults type() to PROJECT,\nand wires up annotation processing in BuildPlanExecutor so that mojos\nannotated with @After correctly declare ordering constraints. Includes\nunit test and integration test (mng-12534-after-annotation).\n\nCloses #12535"
    },
    {
      "commit": "7a0e2210110cc83d8b9b73bff5394fce53f5d6fb",
      "tree": "a3aafc70dfab1226ba85236ab2a90a943a1d0d59",
      "parents": [
        "0ead4b4c5caf62044021be6915570e0267247098"
      ],
      "author": {
        "name": "jmestwa-coder",
        "email": "jmestwa@gmail.com",
        "time": "Tue Jul 28 15:01:04 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:31:04 2026 +0200"
      },
      "message": "Fix #12427: Reject path-traversal segments in coordinate ids and versions\n\nCoordinate ids (groupId, artifactId) and versions equal to \u0027.\u0027 or \u0027..\u0027\npass character validation but become path-traversal segments in the\nlocal repository layout. Both the maven-impl and compat\nmaven-model-builder validators now reject these values in id checks,\nwildcard-id checks, and version checks. Tests added for both modules.\n\nCloses #12410"
    },
    {
      "commit": "0ead4b4c5caf62044021be6915570e0267247098",
      "tree": "3319ddf7d6826f6fd374bba6597c957938a71529",
      "parents": [
        "fb0e7bbae29a598cd4e8adbe65430fccc839137d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 11:01:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 11:01:07 2026 +0200"
      },
      "message": "Bump apache/maven-gh-actions-shared release-drafter workflow from 4 to 5\n\nUpdates the shared release-drafter workflow reference from v4 to v5.\nUnderlying change: release-drafter 6.4.0 → 7.6.0, removes unsupported\ninitial-commits-since option.\n\nCloses #12488"
    },
    {
      "commit": "fb0e7bbae29a598cd4e8adbe65430fccc839137d",
      "tree": "46c7eb283318f6ccc6f51183c8dec342acae0ced",
      "parents": [
        "88a793ab91d40f086a55430787c6f857a2138f22"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Tue Jul 28 13:07:06 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:37:06 2026 +0200"
      },
      "message": "[MNG-8425] Fix mvnenc init saving invalid master source configuration\n\nWhen the encryption wizard prompts for an editable value with a\ntemplate like env:$MVN_PASSWORD, the user input is now auto-prefixed\nwith the source prefix (env:, system-property:, etc.) if missing.\nAdds parameterized test covering 5 prefix scenarios.\n\nFixes #10202\nCloses #12418"
    },
    {
      "commit": "88a793ab91d40f086a55430787c6f857a2138f22",
      "tree": "b485fd55971f8354c324910766c305b708b5496a",
      "parents": [
        "6676d1b7bc00ad47a1961e8f9c78ab6317efd711"
      ],
      "author": {
        "name": "Arend von Reinersdorff",
        "email": "arend@arendvr.com",
        "time": "Tue Jul 28 08:21:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 08:21:55 2026 +0200"
      },
      "message": "Fix Javadoc about default value of consumer POM flattening\n\nCorrects the documentation for MAVEN_CONSUMER_POM_FLATTEN: the default\nis false (preserve dependency management), not true (flatten).\n\nCloses #12471"
    },
    {
      "commit": "6676d1b7bc00ad47a1961e8f9c78ab6317efd711",
      "tree": "23986129edabdde1e8e09701b4219ef4c28a3a39",
      "parents": [
        "82f438a2a1f395f2c24e5f6f3d0b58d6df4b5fb5"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jul 28 07:56:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 07:56:47 2026 +0200"
      },
      "message": "Fix #12531: filter NO_REPOSITORY sentinel from mapped exceptions in ArtifactResolverResult\n\nPlugins that resolve dependencies (cyclonedx-maven-plugin,\ncamel-spring-boot-generator) threw IllegalArgumentException because\nArtifactResult.NO_REPOSITORY sentinel leaked as a null key in the\nexceptions map exposed through ResultItem.getExceptions(). Filter out\nNO_REPOSITORY entries from the mapped exceptions while preserving all\nexceptions in a flat allExceptions list so isMissing() still considers\nthem. Also fixes vacuous-truth bug where an empty exception list was\ntreated as \"all exceptions are ArtifactNotFoundException\".\n\nCloses #12533"
    },
    {
      "commit": "82f438a2a1f395f2c24e5f6f3d0b58d6df4b5fb5",
      "tree": "77e0373849de397be83e93058f320e6dc36b35a5",
      "parents": [
        "8d0f7bc2a36f199b79a30c7676b0f00c2e9eb293"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jul 28 07:51:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 07:51:25 2026 +0200"
      },
      "message": "Fix #12530: add mvnup upgrade strategies for Maven 4 known compatibility issues\n\nAdd 4 new mvnup strategies addressing Maven 4 compatibility issues from\nthe maven4-testing project: update compiler-plugin min to 3.11.0 for\nErrorProne, detect and upgrade old 4.x alpha/beta/RC plugin versions,\nmigrate deprecated org.scala-tools:maven-scala-plugin to\nnet.alchim31.maven:scala-maven-plugin, and add DuplicateElementStrategy\nto remove duplicate POM elements rejected by Maven 4\u0027s stricter parser.\nRefactors PluginUpgradeStrategy to derive its map from the PLUGIN_UPGRADES\nlist instead of maintaining a separate hand-coded map.\n\nCloses #12532"
    },
    {
      "commit": "8d0f7bc2a36f199b79a30c7676b0f00c2e9eb293",
      "tree": "d6a58a5f62a879cdc445795c07b4ddffed1e8faa",
      "parents": [
        "2cbce406e8e1e51107c8186949bff9818c96b401"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 00:50:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 00:50:03 2026 +0200"
      },
      "message": "Bump ch.qos.logback:logback-classic from 1.5.38 to 1.6.0\n\nUpgrade logback-classic dependency to version 1.6.0, which removes\ndeprecated APIs and bumps SLF4J to 2.0.18.\n\nCloses #12525"
    },
    {
      "commit": "2cbce406e8e1e51107c8186949bff9818c96b401",
      "tree": "14a7cafa76b729ce337b19a24b1a365914f6b293",
      "parents": [
        "a3e576b6da99ed82c13d8f0c3629ac2ec148bc51"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jul 28 00:25:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 00:25:24 2026 +0200"
      },
      "message": "[MNG-8507] Reduce allocation pressure in model building pipeline\n\nForward port of f5426bf5fa35 (maven-4.0.x) to master.\n\nReduce allocation pressure in the Maven 4 immutable model building\npipeline, measured with JFR on Apache Camel (676 modules).\nOverall allocation reduction: ~49% (from ~4,000 MB to ~2,054 MB).\n\nKey optimizations:\n- DefaultModelInterpolator: skip interpolation callback for strings\n  without \u0027$\u0027 via anonymous MavenTransformer subclass override\n- DefaultModelInterpolator: share HashSet for cycle detection across\n  all strings in a model, avoiding ~550 allocations per module\n- DefaultInterpolator.unescape(): fast-path when no escape markers\n- DefaultModelValidator: hoist scope computation before dep loop\n- InternalSession.from(): instanceof fast-path before string concat\n- MavenProject.hashCode(): inline hash to avoid varargs Object[]\n- TypeRegistryAdapter: cache get() results in ConcurrentHashMap\n- PropertiesAsMap: eliminate Entry wrapper allocation, replace\n  stream().filter().count() with imperative loop\n- ReflectionValueExtractor: make accessor prefix list a static\n  constant instead of per-call Arrays.asList()\n- transformer.vm: add null-check in transform(String)\n\nCloses #12553"
    },
    {
      "commit": "a3e576b6da99ed82c13d8f0c3629ac2ec148bc51",
      "tree": "282583cf7e49bbc4a83b31b3cb5d80170f0d5fea",
      "parents": [
        "5703b7db075bc5cd7974e6bd7fa9ab2eba90818a"
      ],
      "author": {
        "name": "Jack Myers",
        "email": "jmyers@jackmyers.one",
        "time": "Tue Jul 28 02:18:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 20:18:04 2026 +0200"
      },
      "message": "Fix #12536: Handle Ctrl+C on Windows terminals (#12538)\n\nOn Windows, JLine handles Ctrl+C as the terminal\u0027s `INT` signal. Without\nan explicit handler, the standalone Maven JVM does not follow its normal\ninterrupt termination path and Maven\u0027s shutdown hooks do not run, which\ncan leave long-running child processes alive.\n\nThis change registers an `INT` handler for Windows terminals that exits\nwith status `130`. This triggers normal JVM shutdown and its registered\ncleanup hooks."
    },
    {
      "commit": "5703b7db075bc5cd7974e6bd7fa9ab2eba90818a",
      "tree": "e61b59c0e4066ed1f4dd7216d0d1518d9e9ddbc4",
      "parents": [
        "fde983239018e0e671262f86f9d1bd3f81910a5e"
      ],
      "author": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Mon Jul 27 19:42:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:42:14 2026 +0200"
      },
      "message": "Introduce validation control (#12520)\n\nEnables validation level choice in Maven Resolver validator.\n\nThis change should go to every Maven version having `MavenValidator` (3.10, 4.0 and 4.1).\n\nRelated: https://github.com/apache/maven-resolver/issues/2007"
    },
    {
      "commit": "fde983239018e0e671262f86f9d1bd3f81910a5e",
      "tree": "18bc419482d57d71d8b8ce4f473464c199b9d4e4",
      "parents": [
        "b646a7a38e920f7590e7b25fb43b5756d8bf2b4d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 09:31:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 09:31:17 2026 +0200"
      },
      "message": "Bump resolverVersion from 2.0.21-SNAPSHOT to 2.0.21 (#12543)\n\nBumps `resolverVersion` from 2.0.21-SNAPSHOT to 2.0.21.\n\nUpdates `org.apache.maven.resolver:maven-resolver-api` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-spi` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-impl` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-util` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-named-locks` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-connector-basic` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-transport-file` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-transport-apache` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-transport-jdk` from 2.0.21-SNAPSHOT to 2.0.21\n\nUpdates `org.apache.maven.resolver:maven-resolver-transport-wagon` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\nUpdates `org.apache.maven.resolver:maven-resolver-tools` from 2.0.21-SNAPSHOT to 2.0.21\n- [Release notes](https://github.com/apache/maven-resolver/releases)\n- [Commits](https://github.com/apache/maven-resolver/commits/maven-resolver-2.0.21)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.resolver:maven-resolver-api\n  dependency-version: 2.0.21\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-spi\n  dependency-version: 2.0.21\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-impl\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-util\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-named-locks\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-connector-basic\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-transport-file\n  dependency-version: 2.0.21\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-transport-apache\n  dependency-version: 2.0.21\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-transport-jdk\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-transport-wagon\n  dependency-version: 2.0.21\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven.resolver:maven-resolver-tools\n  dependency-version: 2.0.21\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b646a7a38e920f7590e7b25fb43b5756d8bf2b4d",
      "tree": "d40b3899930aed56d1392eb2ad83c63e1465371d",
      "parents": [
        "828e528f7d779b01be91d704ad2ff11a21f9c80a"
      ],
      "author": {
        "name": "Elliotte Rusty Harold",
        "email": "elharo@users.noreply.github.com",
        "time": "Sat Jul 25 18:37:58 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 18:37:58 2026 +0000"
      },
      "message": "Add test for prefixed Maven elements (#10971)\n\n* Add test for prefixed Maven elements"
    },
    {
      "commit": "828e528f7d779b01be91d704ad2ff11a21f9c80a",
      "tree": "2fca18e75f85d9606c89ed26dd476167467bd1a5",
      "parents": [
        "85f02613b616bba103c09aae330349ee21287ac5"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jul 24 08:54:08 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 08:54:08 2026 +0200"
      },
      "message": "Fix #12507: preserve unresolved ${...} in CLI -D values (Maven 3 semantics) (#12523)\n\n* Add failing IT for #12507 (CLI ${...} param wipe)\n\nMavenITgh12507CliParamNestedInterpolationTest shows that ${user.dir}\nand ${project.build.directory} inside a -D-supplied plugin parameter\nvalue are replaced with the empty string at CLI parse time\n(BaseParser.populateUserProperties interpolates user-specified\nproperties with defaultsToEmpty\u003dtrue against a paths-only callback),\nwhile Maven 3 resolves such expressions at mojo configuration time.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12507: dont wipe unresolved ${...} in -D values\n\nBaseParser.populateUserProperties interpolated user-specified\nproperties with defaultsToEmpty\u003dtrue against a paths-only callback,\nsilently replacing every expression it could not resolve (system\nproperties, project.* references) with the empty string. Pass\ndefaultsToEmpty\u003dfalse so unresolved placeholders stay literal and are\nevaluated later with full session/project context by the plugin\nparameter expression evaluator -- restoring Maven 3 semantics for\nvalues like -DaltDeploymentRepository\u003did::file://${project.build.directory}/x.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\n* Update gh-11978 IT to expect Maven 3 semantics for unknown placeholders\n\nThe previous assertion expected unknown ${...} in CLI -D values to be\nemptied, but that was an unintended side effect of #2480 (which only\nmeant to add session.topDirectory interpolation). Maven 3 leaves\nunknown placeholders literal — update the assertion to match.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Gerd Aschemann \u003cascheman@apache.org\u003e\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "85f02613b616bba103c09aae330349ee21287ac5",
      "tree": "3bc58b0bb7ddabcc644e124680d991606e0d489d",
      "parents": [
        "3ba3c0e8a7a87d5d4ccdf6062508f20e58ae78d4"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jul 23 20:19:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 20:19:04 2026 +0200"
      },
      "message": "Add cross-thread deadlock regression test for #12472\n\nAdd three regression tests for the AbstractRequestCache deadlock that\ncaused Maven 4.0.0-rc-5 to hang on 24 out of 966 tested Apache projects.\n\n- testConcurrentBatchRequestsWithSharedKeyDoNotDeadlock: concurrent batch\n  requests() with overlapping keys through an equals-based cache\n- testConcurrentBatchRequestsWithMutatingSharedKeyDoNotDeadlock: variant\n  where equals()/hashCode() mutate during resolution, mirroring mutable\n  RequestTrace data — verified to deadlock on pre-fix code (by @ascheman)\n- testSequentialBatchRequestsWithSharedKeyReuseResult: sequential calls\n  with shared keys correctly reuse cached results\n\nCloses #12478"
    },
    {
      "commit": "3ba3c0e8a7a87d5d4ccdf6062508f20e58ae78d4",
      "tree": "b044e7968a6784f8953dfc4d579d119d07f0108c",
      "parents": [
        "a2aed7241f6a2ac633cb7a27d3856ae17ff1dc62"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Wed Jul 22 15:46:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 15:46:22 2026 +0200"
      },
      "message": "Use maven-it-plugin-expression instead of effective POM string matching in MNG-11133 test (#12502)\n\nReplace help:effective-pom + Files.readString/String.contains with the\nconventional maven-it-plugin-expression approach using\nverifier.loadProperties(), which is more robust against\nwhitespace/formatting changes.\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a2aed7241f6a2ac633cb7a27d3856ae17ff1dc62",
      "tree": "b6af8ab39fd38329e7226bec1830a87feeb948b8",
      "parents": [
        "97dd0c66e7855ab71514ffdb5d7b35fe1c9bb910"
      ],
      "author": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Tue Jul 21 17:26:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 17:26:34 2026 +0200"
      },
      "message": "Deps: Bump to Resolver 2.0.21 (#12509)\n\nAnd add more validation to MavenValidator."
    },
    {
      "commit": "97dd0c66e7855ab71514ffdb5d7b35fe1c9bb910",
      "tree": "51e093c1d142c93e2982509df9f4216e5f20027e",
      "parents": [
        "4ba3291ca4928bcd4e898b239ece580ec1babc7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 01:03:12 2026 +0000"
      },
      "committer": {
        "name": "Slawomir Jaranowski",
        "email": "s.jaranowski@gmail.com",
        "time": "Tue Jul 21 08:02:20 2026 +0200"
      },
      "message": "Bump actions/checkout from 7.0.0 to 7.0.1\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "4ba3291ca4928bcd4e898b239ece580ec1babc7d",
      "tree": "53e2b700d8017ed8079c782a9471371afa552fb2",
      "parents": [
        "67a94a1d926ac20e8c563cdbd24c449e5c4aa1e8"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Mon Jul 20 09:44:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 09:44:38 2026 +0200"
      },
      "message": "fix: mvnup: widen exact Maven version pins to allow Maven 4 (#12505)\n\nProjects like Apache Flink pin their Maven version to an exact version\nusing ranges like [3.8.6,3.8.6] (both bounds equal, both inclusive).\nThe existing MAVEN4_EXCLUSIVE_UPPER_BOUND pattern only matched ranges\nwith an exclusive upper bound at 4.x (e.g. [3.8.8,4)), so exact pins\nand ranges with an upper bound below 4 were silently skipped.\n\nAdd a new UPPER_BOUND_BELOW_MAVEN4 pattern that catches any version\nrange whose upper bound has a major version less than 4. This covers:\n- Exact version pins: [3.8.6,3.8.6] -\u003e [3.8.6,5)\n- Sub-4 upper bounds: [3.8.0,3.9) -\u003e [3.8.0,5)\n- Unbounded lower ranges: (,3.9] -\u003e (,5)\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "67a94a1d926ac20e8c563cdbd24c449e5c4aa1e8",
      "tree": "f6a4cac35b0e549e1baeb342a8b49627191a88c3",
      "parents": [
        "671031e6c1d6bd2302f8898513c4c14adac4171b"
      ],
      "author": {
        "name": "Matt Van Horn",
        "email": "mvanhorn@users.noreply.github.com",
        "time": "Sun Jul 19 10:32:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 19:32:21 2026 +0200"
      },
      "message": "Avoid IllegalStateException on duplicate profile ids in DefaultModelBuilder (#12419)\n\nSave/restore profile activations positionally instead of keyed by profile id, so POMs with duplicate profile ids (e.g. javafx \u003c\u003d20) no longer crash dependency collection. Duplicate-id diagnostics remain with the validator.\n\nFixes #10209"
    },
    {
      "commit": "671031e6c1d6bd2302f8898513c4c14adac4171b",
      "tree": "933246acd45ccae6f913dba914511363c37b5a0e",
      "parents": [
        "73b8fcdd800009205436c70191ae6f50e79e5303"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Fri Jul 17 16:42:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 13:12:35 2026 +0200"
      },
      "message": "[MNG-8432] Integration test for mixin-based property and dependency management inheritance\n\n* Integration test for MNG-8432 using mixins\n\n* Use maven-it-plugin-expression instead of effective POM string matching\n\nReplace help:effective-pom + Files.readString/String.contains with the\nconventional maven-it-plugin-expression approach using\nverifier.loadProperties(), which is more robust against\nwhitespace/formatting changes.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Guillaume Nodet \u003cgnodet@gmail.com\u003e\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "73b8fcdd800009205436c70191ae6f50e79e5303",
      "tree": "ea855a392606a165e28e4ee9d285cbf8eadfbab8",
      "parents": [
        "986e610e0407d9aed8f4a78d927da7e16a2440b7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 07:20:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 07:20:24 2026 +0200"
      },
      "message": "Bump apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml (#12487)\n\nBumps [apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml](https://github.com/apache/maven-gh-actions-shared) from 4 to 5.\n- [Commits](https://github.com/apache/maven-gh-actions-shared/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "986e610e0407d9aed8f4a78d927da7e16a2440b7",
      "tree": "6e5f4ec560c608dca1b488e0f41a338ce66811c5",
      "parents": [
        "2c70cd606050b6c5b87b205660392919308352c3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 17 07:19:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 07:19:05 2026 +0200"
      },
      "message": "Bump actions/setup-java from 5.5.0 to 5.6.0 (#12498)\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.5.0 to 5.6.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/0f481fcb613427c0f801b606911222b5b6f3083a...03ad4de0992f5dab5e18fcb136590ce7c4a0ac95)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2c70cd606050b6c5b87b205660392919308352c3",
      "tree": "a537a67a2106e7cea7f795d1d1e563f02c0f4e5c",
      "parents": [
        "7aa3c8a37b091a5a86d3dae3a7d99ce910fd6caa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 14 01:03:06 2026 +0000"
      },
      "committer": {
        "name": "Slawomir Jaranowski",
        "email": "s.jaranowski@gmail.com",
        "time": "Fri Jul 17 00:05:34 2026 +0200"
      },
      "message": "Bump apache/maven-gh-actions-shared/.github/workflows/stale.yml\n\nBumps [apache/maven-gh-actions-shared/.github/workflows/stale.yml](https://github.com/apache/maven-gh-actions-shared) from 4 to 5.\n- [Commits](https://github.com/apache/maven-gh-actions-shared/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: apache/maven-gh-actions-shared/.github/workflows/stale.yml\n  dependency-version: \u00275\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "7aa3c8a37b091a5a86d3dae3a7d99ce910fd6caa",
      "tree": "b2855be1418930190cdda74f73e3f576b9237fae",
      "parents": [
        "09b2dfc9151030e026a993f234c8e9c507c2d198"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 13 19:04:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 19:04:52 2026 +0200"
      },
      "message": "Bump org.junit:junit-bom from 6.1.1 to 6.1.2 (#12477)\n\nBumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 6.1.1 to 6.1.2.\n- [Release notes](https://github.com/junit-team/junit-framework/releases)\n- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.1...r6.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: org.junit:junit-bom\n  dependency-version: 6.1.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "09b2dfc9151030e026a993f234c8e9c507c2d198",
      "tree": "faad3e420d1d6183bcbbf84c440fc2abfb1c5795",
      "parents": [
        "c6de104bff92fc0c4572813bac82935470441dc4"
      ],
      "author": {
        "name": "Slawomir Jaranowski",
        "email": "s.jaranowski@gmail.com",
        "time": "Sun Jul 12 15:17:45 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 15:17:45 2026 +0200"
      },
      "message": "[MNG-5913] Allow defining aliases for existing server configurations in settings.xml (#2333)\n\n* [MNG-5913] Allow defining aliases for existing server configurations in settings.xml\n\nAdd the next tag aliases to the server in settings.xml\n\nAdditional server will be created in memory by SettingsBuilder,\nso the generated configuration should be transparent to other\nas Settings#getServers() will return complete list."
    },
    {
      "commit": "c6de104bff92fc0c4572813bac82935470441dc4",
      "tree": "d44b62ddcbee6cc7e21dee73771750eabe8bbd25",
      "parents": [
        "5c1357ef05160bf7648a7e5ac2c3302985d8ee9f"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sat Jul 11 18:48:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 18:48:37 2026 +0200"
      },
      "message": "Fix #12445: Fix deadlock in AbstractRequestCache when resolving parent POMs (#12446)\n\n* Fix #12445: Fix deadlock in AbstractRequestCache when resolving parent POMs\n\nReplace the wait/notify pattern in AbstractRequestCache.requests() with\ndirect value setting via CachingSupplier.complete(). The old pattern\nstored a wait-based individualSupplier in CachingSupplier instances\ncached across calls. When a re-entrant requests() call (e.g., parent\nPOM resolution during artifact resolution) retrieved a CachingSupplier\nfrom the cache, it would invoke the outer call\u0027s individualSupplier,\nwhich waited on a HashMap that would never be notified — deadlock.\n\nThe fix:\n- Add CachingSupplier.complete() to set values without invoking the supplier\n- Pass a single-item fallback supplier to doCache() so newly created\n  CachingSuppliers can independently resolve requests in re-entrant scenarios\n- After batch resolution, directly set results via complete()\n- Remove the synchronized wait/notify on HashMap entirely\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12445: Prevent duplicate concurrent resolutions via wait/notifyAll coordination\n\nAdd ThreadLocal re-entrancy detection and CachingSupplier.setBatchResolving()\nso that concurrent threads wait for an in-progress batch result (via\nObject.wait/notifyAll) instead of resolving the same request independently,\nwhile same-thread re-entrant calls still use the fallback supplier to\navoid deadlock. Also fix CachingTestRequestCache to use ConcurrentHashMap,\nclean up duplicate javadoc, and add concurrent resolution test.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12445: Use IdentityHashMap for reqToIndex to handle unstable hashCode\n\nResolverRequest.hashCode() can change during batch resolution because\nRequestTrace includes mutable ModelBuilderRequest data (identified in\nPR #12166). Since reqToIndex always uses the same object references\nfor put and get, IdentityHashMap is safe and avoids missed lookups\nthat would cause redundant individual resolutions.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12445: Add test for batch resolution with unstable hashCode\n\nVerify that batch results are correctly delivered via complete() even\nwhen request hashCode() changes during resolution (simulating\nResolverRequest with mutable RequestTrace/ModelBuilderRequest data).\nThe IdentityHashMap-based reqToIndex ensures lookups succeed by\nreference identity regardless of hashCode mutations.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12445: Address Copilot review — consistent error handling and safe unblocking\n\n- catch(Throwable) now falls through to the collection loop and produces\n  a proper BatchRequestException with per-request results, consistent\n  with the MavenExecutionException path.\n- setBatchResolving(false) now calls notifyAll() to unblock any threads\n  still waiting in apply() when complete() was never called (e.g., batch\n  supplier returned fewer results than expected).\n- Add test for partial batch result edge case.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "5c1357ef05160bf7648a7e5ac2c3302985d8ee9f",
      "tree": "787c76c8b068483ee5d6073bac5af6fb5b0706b3",
      "parents": [
        "794866cb40e793b0ef0db67b4a78149c5dfbd4da"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sat Jul 11 18:48:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 18:48:34 2026 +0200"
      },
      "message": "Fix #12430: mvnup upgrade strategies and compatibility improvements (#12454)\n\n* Fix #12430: Add HTTP-to-HTTPS repository URL upgrade strategy to mvnup\n\nSince Maven 3.8.1+, HTTP repositories are blocked by the\nmaven-default-http-blocker mirror. This adds a RepositoryHttpsUpgradeStrategy\nthat automatically converts http:// repository URLs to https:// in POM files.\n\nWell-known repositories (Apache snapshots/releases, Maven Central variants)\nare mapped to their canonical HTTPS equivalents. All other http:// URLs get\na generic scheme upgrade.\n\nHandles repositories, pluginRepositories, distributionManagement (both\nrepository and snapshotRepository), and profile-scoped repositories.\n\nIncludes 27 tests covering well-known URL normalization, generic http-\u003ehttps\nconversion, all POM sections, profile-scoped repos, and edge cases.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12430: Add EnforcerVersionRangeStrategy and fix dependency dedup last-wins\n\nAdd EnforcerVersionRangeStrategy that widens requireMavenVersion ranges\nexcluding Maven 4 (e.g. [3.8.8,4) → [3.8.8,5)) in the maven-enforcer-plugin.\nHandles top-level and per-execution configurations, pluginManagement, and\nprofile-scoped declarations.\n\nFix CompatibilityFixStrategy dependency/plugin deduplication to use last-wins\nsemantics (matching Maven 3 runtime behavior) instead of first-wins. Update\nlog messages to include the kept version.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12429: Add quarkus-maven-plugin upgrade support to mvnup\n\nAdd PluginUpgrade entries for quarkus-maven-plugin (both io.quarkus\nand io.quarkus.platform groupIds) with minimum version 3.26.0.\nWhen the plugin version references the same property as a Quarkus BOM,\nthe strategy decouples it by introducing a separate quarkus-plugin.version\nproperty. After upgrading, emits a warning if the platform BOM version\nis significantly older than the plugin version.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12431: Silently ignore unrecognized CLI options from .mvn/maven.config\n\nmvnup inherits the Maven launcher\u0027s argument handling, which appends\noptions from .mvn/maven.config. That file often contains build flags\nlike -ntp, -U, or -T that mvnup does not recognize, causing a\nParseException before any upgrades are applied.\n\nOverride CLIManager.parse() to catch UnrecognizedOptionException and\nretry after removing the offending option, so mvnup works in projects\nwith a .mvn/maven.config file.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12432: Warn about gmavenplus-plugin Maven 4 incompatibility\n\ngmavenplus-plugin (all versions up to 4.1.1) calls mutating methods\non immutable lists returned by the Maven 4 API, causing\nUnsupportedOperationException on goals like removeStubs.\n\nAdd a warning-only check to CompatibilityFixStrategy that detects\nknown incompatible plugins and emits a warning with a link to the\nupstream issue tracker. The check does not modify the POM.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12433: Warn about third-party repository prefix filtering\n\nMaven 4\u0027s prefix-based artifact filtering may block resolution from\nrepositories that do not publish a prefixes.txt file. When Maven 4\nauto-generates an incomplete prefix list, legitimate artifacts are\nrejected with ArtifactFilteredOutException.\n\nAdd a warning for non-Maven-Central repositories detected in POMs,\nadvising users to check prefix configuration if builds fail.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12434: Warn about property-interpolated module paths\n\nMaven 4 validates module paths during POM parsing, before property\ninterpolation occurs. Paths like \u003cmodule\u003espark-${spark.version}\u003c/module\u003e\nare rejected because the literal string (with the unresolved\nexpression) does not correspond to an existing directory.\n\nAdd a warning for module/subproject elements containing ${...}\nexpressions, both at root level and inside profiles.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12435: Warn about CI-friendly ${revision} missing dependency versions\n\nIn CI-friendly projects using ${revision}, ${sha1}, or ${changelist}\nas the parent version, child modules with versionless dependencies\nmay fail with \u0027dependencies.dependency.version is missing\u0027 because\nMaven 4 validates dependency completeness before fully resolving the\nparent\u0027s dependencyManagement chain.\n\nAdd a warning that detects this pattern: a parent with a CI-friendly\nversion expression and dependencies without explicit \u003cversion\u003e elements.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Revert #12433: Remove incorrect prefix filtering warning\n\nMaven 4\u0027s prefix filtering defaults to permissive behavior when a\nrepository has no prefixes.txt — artifacts are allowed through, not\nblocked. The warning was based on a misunderstanding of the default\nnoInputOutcome\u003dtrue setting. The actual issue is narrower: only\nauto-discovered prefix files with incomplete content can cause false\nnegatives, and Maven already provides per-repository disable options\nand helpful hints in ArtifactFilteredOutException messages.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Address review feedback: fix option-arg stripping and inherited property guard\n\n- CLI option stripping: also remove trailing argument values for\n  options like \"-T 4\" (two tokens) to prevent the value from being\n  treated as a spurious goal.\n- BOM property decoupling: skip when the shared property is not\n  declared in the current POM (inherited from parent), since we\n  cannot resolve its actual value and introducing a new property\n  could downgrade an already-sufficient inherited version.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12432: Convert gmavenplus-plugin to auto-upgrade and soften version gap warning\n\n- Move gmavenplus-plugin from KNOWN_INCOMPATIBLE_PLUGINS (permanent warning)\n  to PluginUpgrade with minimum version 4.2.0. The Maven 4 incompatibility\n  was fixed in groovy/GMavenPlus#328 (released in 4.2.0), and the Maven-side\n  fix landed in MNG-8662.\n- Soften the Quarkus version gap warning: remove the unsubstantiated claim\n  about binary incompatibility at 3.32.0 and replace with general version\n  alignment advice.\n- Fix wrong Quarkus upstream reference in PR description (#46889 → #37627).\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix mvnup comment formatting: place override comments on their own line\n\nWhen mvnup inserts \"Override version inherited from parent\" comments\nbefore plugin elements, the comment was placed on the same line as\nthe preceding \u003c/plugin\u003e closing tag, causing POM formatting violations\nin projects that enforce XML formatting (e.g. via spotless).\n\nThe fix sets precedingWhitespace on the Comment node to match the\nplugin element\u0027s indentation, ensuring the comment appears on its\nown line.\n\nFixes gnodet/maven4-testing#23134\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Upgrade DomTrip to 1.6.0 and use Editor.insertCommentBefore API\n\nReplace the manual precedingWhitespace() workaround with the new\nEditor.insertCommentBefore() method added in DomTrip 1.6.0\n(maveniverse/domtrip#254), which handles whitespace automatically.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12430: Skip quarkus-maven-plugin upgrade for Quarkus 2.x projects\n\nDetect the Quarkus platform version before upgrading quarkus-maven-plugin.\nProjects using Quarkus 2.x (or 1.x) get their plugin upgrade skipped to\nprevent NoSuchMethodError and build failures from the 2.x→3.x jump.\n\nDetection checks dependencyManagement for quarkus-bom (resolving property\nreferences), then falls back to quarkus.platform.version / quarkus.version\n/ quarkus-plugin.version properties. When the version cannot be determined,\na warning is emitted.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix #12455: Add ResourceFilteringStrategy to prevent MalformedInputException on binary files\n\nMaven 4 strictly decodes filtered resources as UTF-8, causing\nMalformedInputException when binary files (.xlsx, .docx, etc.) are\npresent in resource directories with \u003cfiltering\u003etrue\u003c/filtering\u003e.\n\nThis strategy scans all \u003cresource\u003e and \u003ctestResource\u003e blocks. When\nfiltering is enabled and the maven-resources-plugin does not already\ndeclare \u003cnonFilteredFileExtensions\u003e, adds a comprehensive list of 23\nbinary file extensions (office docs, archives, fonts, executables,\nkeystores) to pluginManagement. If a partial config exists, merges\nthe missing extensions.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Extract DeduplicateDependenciesStrategy from CompatibilityFixStrategy\n\nMaven 4 rejects duplicate dependency/plugin declarations that Maven 3\nsilently accepted. Extract the deduplication logic into a standalone\nstrategy for clarity and independent control.\n\nThe new strategy scans \u003cdependencies\u003e, \u003cdependencyManagement\u003e, and\n\u003cplugins\u003e/\u003cpluginManagement\u003e sections (including profiles) and removes\nduplicates using last-wins semantics matching Maven 3\u0027s runtime\nbehavior. The key is groupId:artifactId:type:classifier for\ndependencies and groupId:artifactId for plugins.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Address review feedback: fix Javadoc and expand binary extensions\n\n- DeduplicateDependenciesStrategy: clarify last-wins is intentional,\n  not matching Maven 3\u0027s first-wins dependency resolution\n- EnforcerVersionRangeStrategy: document regex matches any 4.x upper\n  bound, not just 4/4.0/4.0.0\n- ResourceFilteringStrategy: add 10 missing binary extensions (png,\n  jpg, jpeg, gif, bmp, tiff, mp3, mp4, p12, pfx) and soften\n  \"comprehensive\" wording to \"common\"\n- RepositoryHttpsUpgradeStrategy: fix misleading LinkedHashMap comment\n  about prefix length ordering\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Revert unrecognized option retry loop in mvnup (see #12464)\n\nThe retry loop silently swallowed unknown CLI options, masking user\nerrors. The root cause is that the mvn launcher passes $MAVEN_ARGS\nto mvnup unconditionally — that should be fixed in the shell script\ninstead (tracked in #12464).\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "794866cb40e793b0ef0db67b4a78149c5dfbd4da",
      "tree": "30658b5d61dcb7c8bc2d3c77090dc3cb0c621307",
      "parents": [
        "03975900cb9ecc0171756ce9acae520606d1a9a0"
      ],
      "author": {
        "name": "Slawomir Jaranowski",
        "email": "s.jaranowski@gmail.com",
        "time": "Sat Jul 11 18:34:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 18:34:31 2026 +0200"
      },
      "message": "In failed build limit reactor summary to only failed modules (#12330)\n\n* In failed build limit reactor summary to only failed modules\n\nWhen build fail in multimodule project we need scroll many lines to see whats is wrong\n\nbased on: https://github.com/apache/maven/pull/11977"
    },
    {
      "commit": "03975900cb9ecc0171756ce9acae520606d1a9a0",
      "tree": "18e4708103bccd098bea5d76ae217752a4d01269",
      "parents": [
        "e4cbc02cef36f3a9bad5f7940250db1d709e5aab"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sat Jul 11 17:07:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 17:07:29 2026 +0200"
      },
      "message": "Fix #12464: Skip MAVEN_ARGS for non-default main classes (--up, --enc, --shell) (#12465)\n\nWhen MAVEN_MAIN_CLASS is not the default MavenCling (i.e., when using\n--up, --enc, or --shell), skip prepending $MAVEN_ARGS to the command\nline. MAVEN_ARGS may contain build-specific flags like -ntp, -T4, -U\nthat are not recognized by MavenUpCling, MavenEncCling, or\nMavenShellCling.\n\nThe handle_args function already sets MAVEN_MAIN_CLASS for these\nsub-commands — use that to gate MAVEN_ARGS inclusion.\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "e4cbc02cef36f3a9bad5f7940250db1d709e5aab",
      "tree": "ba1007dae8ebeaa222ce96f650343a6e23b895ed",
      "parents": [
        "ecf3d6d8cbf67d33300e6e4ace613a049b0c4a8b"
      ],
      "author": {
        "name": "Elliotte Rusty Harold",
        "email": "elharo@users.noreply.github.com",
        "time": "Fri Jul 10 18:52:53 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 18:52:53 2026 -0500"
      },
      "message": "Remove dangling javadoc comments (#12463)\n\n* Remove dangling javadoc comments\n\n* spotless"
    },
    {
      "commit": "ecf3d6d8cbf67d33300e6e4ace613a049b0c4a8b",
      "tree": "556fa0376b6afd67606fc657f3c9fe519730751a",
      "parents": [
        "47b81eb449a6feeaaa9a8aaebe40ee6f1a104c45"
      ],
      "author": {
        "name": "Elliotte Rusty Harold",
        "email": "elharo@ibiblio.org",
        "time": "Fri Jul 10 08:37:16 2026 -0500"
      },
      "committer": {
        "name": "Elliotte Rusty Harold",
        "email": "elharo@ibiblio.org",
        "time": "Fri Jul 10 08:37:16 2026 -0500"
      },
      "message": "in --\u003e at (but really check if direct pushes to master are now blocked)\n"
    },
    {
      "commit": "47b81eb449a6feeaaa9a8aaebe40ee6f1a104c45",
      "tree": "d2658eb5e24eedd4c5e7f16d503fa2940f744622",
      "parents": [
        "af74c4e5723f7c9162f3075aeb7526a6e587347b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 10 14:43:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 14:43:35 2026 +0200"
      },
      "message": "Bump actions/setup-java from 5.4.0 to 5.5.0 (#12436)\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.4.0 to 5.5.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/1bcf9fb12cf4aa7d266a90ae39939e61372fe520...0f481fcb613427c0f801b606911222b5b6f3083a)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "af74c4e5723f7c9162f3075aeb7526a6e587347b",
      "tree": "9fc535a826282a7aa8921beb57d837425e24341d",
      "parents": [
        "f359ffc91761961eada4938f7a3f4f30a75fc7df"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 10 14:43:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 14:43:05 2026 +0200"
      },
      "message": "Bump domtripVersion from 1.5.2 to 1.6.0 (#12451)\n\nBumps `domtripVersion` from 1.5.2 to 1.6.0.\n\nUpdates `eu.maveniverse.maven.domtrip:domtrip-core` from 1.5.2 to 1.6.0\n- [Release notes](https://github.com/maveniverse/domtrip/releases)\n- [Commits](https://github.com/maveniverse/domtrip/compare/1.5.2...1.6.0)\n\nUpdates `eu.maveniverse.maven.domtrip:domtrip-maven` from 1.5.2 to 1.6.0\n- [Release notes](https://github.com/maveniverse/domtrip/releases)\n- [Commits](https://github.com/maveniverse/domtrip/compare/1.5.2...1.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: eu.maveniverse.maven.domtrip:domtrip-core\n  dependency-version: 1.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: eu.maveniverse.maven.domtrip:domtrip-maven\n  dependency-version: 1.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f359ffc91761961eada4938f7a3f4f30a75fc7df",
      "tree": "5971389534af174d988a44a2d2b59fdf7211fd35",
      "parents": [
        "ab6a71056f9b780d3fab783c61e2b97b0592933f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 10 09:26:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 09:26:16 2026 +0200"
      },
      "message": "Bump ch.qos.logback:logback-classic from 1.5.37 to 1.5.38 (#12457)\n\nBumps [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) from 1.5.37 to 1.5.38.\n- [Release notes](https://github.com/qos-ch/logback/releases)\n- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.37...v_1.5.38)\n\n---\nupdated-dependencies:\n- dependency-name: ch.qos.logback:logback-classic\n  dependency-version: 1.5.38\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ab6a71056f9b780d3fab783c61e2b97b0592933f",
      "tree": "dfe21bfbd64c47c49977b47795cb67df8a952136",
      "parents": [
        "73edcd48ea2c00a323b5db66fe26bfd00d050ff6"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Fri Jul 10 00:59:04 2026 +0200"
      },
      "committer": {
        "name": "Hervé Boutemy",
        "email": "herve.boutemy@free.fr",
        "time": "Fri Jul 10 01:00:43 2026 +0200"
      },
      "message": "download_path_suffix\u003dmaven-{{MAJOR_VERSION}}/*\n"
    },
    {
      "commit": "73edcd48ea2c00a323b5db66fe26bfd00d050ff6",
      "tree": "f955095bd3dc79d5006432f9503567ac756cf03c",
      "parents": [
        "7e1ae7cb4473a23d57de158a8e0c1e3a4931fd6c"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Thu Jul 09 06:34:39 2026 +0200"
      },
      "committer": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Thu Jul 09 06:34:39 2026 +0200"
      },
      "message": "fix download_path_suffix\n"
    },
    {
      "commit": "7e1ae7cb4473a23d57de158a8e0c1e3a4931fd6c",
      "tree": "703ad56b2622d565efab1cc50f5aff581023961d",
      "parents": [
        "0a83dca7888fb250b15cd4ab02cd8dd529b90ab3"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Wed Jul 08 09:20:57 2026 +0200"
      },
      "committer": {
        "name": "Hervé Boutemy",
        "email": "herve.boutemy@free.fr",
        "time": "Wed Jul 08 23:38:33 2026 +0200"
      },
      "message": "configure push-to-atr profile for source+binaries in apache-maven subproject\n"
    },
    {
      "commit": "0a83dca7888fb250b15cd4ab02cd8dd529b90ab3",
      "tree": "de95b941f5c2bf4d63e70c93ad3c04ee38d1afe4",
      "parents": [
        "0ba53377fd3376b503ff68a678a6d669fd4bdbcc"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Wed Jul 08 08:02:15 2026 +0200"
      },
      "committer": {
        "name": "Hervé Boutemy",
        "email": "herve.boutemy@free.fr",
        "time": "Wed Jul 08 23:38:21 2026 +0200"
      },
      "message": "configure ATR project\n"
    },
    {
      "commit": "0ba53377fd3376b503ff68a678a6d669fd4bdbcc",
      "tree": "a8a97ccd921eeb80111d680f411bf470227839d0",
      "parents": [
        "6b42b0799c90af97163cdda489779ab2461108fa"
      ],
      "author": {
        "name": "Gerd Aschemann",
        "email": "gerd@aschemann.net",
        "time": "Tue Jul 07 18:19:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 18:19:36 2026 +0200"
      },
      "message": "[#12336] Add DefaultLookupTest for lookupOptional (#12384)\n\nThe NPE fix for DefaultLookup.lookupOptional (#12336) — switching\nOptional.of to Optional.ofNullable so a null component lookup returns an\nempty Optional instead of throwing NullPointerException — shipped without\na regression test.\n\nAdd DefaultLookupTest in maven-core covering both lookupOptional overloads\nacross four scenarios: null component -\u003e empty Optional (the guarded NPE\ncase), present component -\u003e value, ComponentLookupException caused by\nNoSuchElementException -\u003e empty, and any other cause -\u003e rethrown as\nLookupException.\n\nCo-authored-by: Gerd Aschemann \u003cascheman@apache.org\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6b42b0799c90af97163cdda489779ab2461108fa",
      "tree": "49af51fdcc484bc69bca644ab6b0efbf17142393",
      "parents": [
        "a8b08beaaa63a52f504b1ff43c7dabf221659de2"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 13:46:52 2026 +0200"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Tue Jul 07 17:16:27 2026 +0200"
      },
      "message": "Add maven-dependency-analyzer + maven-shared-io to shared libraries\n\nPer @elharo\u0027s follow-up review: adds maven-dependency-analyzer (bytecode\nused-vs-declared analysis engine) and maven-shared-io (low-activity shared IO\nhelpers) to the §2 shared-libraries block; updates the branch-target count.\n\nGenerated-by: Claude Code (Claude Opus 4.8)\n"
    },
    {
      "commit": "a8b08beaaa63a52f504b1ff43c7dabf221659de2",
      "tree": "79bf4f3972325c983b5fb24a0130bb6b20accc88",
      "parents": [
        "66cccae57766545125abd5effd98219f0c896145"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 12:41:52 2026 +0200"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Tue Jul 07 17:16:27 2026 +0200"
      },
      "message": "Add war/ear plugins + shared libraries to the §2 component table\n\nPer @elharo\u0027s review the §2 table wasn\u0027t exhaustive. Adds maven-war-plugin and\nmaven-ear-plugin (packaging plugins, same class as assembly) plus a shared-\nlibraries block (maven-filtering, maven-shared-utils, maven-archiver) that sit\non the build/release path and inherit the same code-execution / supply-chain\nsurface. Renumbers the split-plugin rows and updates the branch-target count.\n\nGenerated-by: Claude Code (Claude Opus 4.8)\n"
    },
    {
      "commit": "66cccae57766545125abd5effd98219f0c896145",
      "tree": "a5af7d904f4f7bc9039d17b596733ada2f12f58b",
      "parents": [
        "dff7c7e088276cee1d1361a2c3b96ada2caf6f8b"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 04 15:29:19 2026 +0200"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Tue Jul 07 17:16:27 2026 +0200"
      },
      "message": "Use the full Apache license header on the scaffold files; drop .ratignore\n\napache-rat 0.13 (still used by some PMC repos) does not recognise the short\nSPDX identifier, and newer RAT flags the .ratignore file itself. Switching the\ngenerated THREAT_MODEL.md / SECURITY.md / AGENTS.md to the full AL-2.0 header\n(HTML comment) makes them pass the license check on every RAT version, so the\n.ratignore exemption is no longer needed.\n\nGenerated-by: Claude Code\n"
    },
    {
      "commit": "dff7c7e088276cee1d1361a2c3b96ada2caf6f8b",
      "tree": "cf30883e06f7d165d3a37f86f2f71a53e6cfb756",
      "parents": [
        "616b913e1def62900f668c5ae46d7d42b4a32ba7"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 04 14:03:21 2026 +0200"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Tue Jul 07 17:16:27 2026 +0200"
      },
      "message": "Add a draft security threat model (THREAT_MODEL.md) + SECURITY.md + discoverability wiring\n\nGenerated-by: Claude Code\n"
    },
    {
      "commit": "616b913e1def62900f668c5ae46d7d42b4a32ba7",
      "tree": "9f3c555a6e0e1cda6bc1836c4cde05b7e1a745b5",
      "parents": [
        "923106abde67d83279bfb4cdf24f45fa92960113"
      ],
      "author": {
        "name": "Matthias Bünger",
        "email": "Bukama@users.noreply.github.com",
        "time": "Sun Jul 05 16:16:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 16:16:29 2026 +0200"
      },
      "message": "Update to Resolver 2.0.20 (#12423)"
    },
    {
      "commit": "923106abde67d83279bfb4cdf24f45fa92960113",
      "tree": "5b28d06c95e9cd340549fde5e97a02fcbfed683d",
      "parents": [
        "e02d80041fd7fe47bbe7818e60ca767cea839cda"
      ],
      "author": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Sun Jul 05 14:56:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 14:56:28 2026 +0200"
      },
      "message": "Bugfix: use GAV and not GAPV in source labels for profiles (#12406)\n\nThis introduces no behaviour change between Maven 3 and 4, merely the labels for \"source\" of profiles got different.\n\nFixes #12405"
    },
    {
      "commit": "e02d80041fd7fe47bbe7818e60ca767cea839cda",
      "tree": "35c1812ff57dc145bb7d3365b22c5c4f930cdac2",
      "parents": [
        "6f4644329fd2fb625ea2412239e049ff0446f600"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jul 03 15:50:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 15:50:12 2026 +0200"
      },
      "message": "Fix Spotless config in its/core-it-suite to enforce formatting rules (#12324)\n\n- Fix Spotless config to enforce formatting rules on IT pom files\n- Remove unnecessary combine.children\u003d\"append\" and use property for version\n- Use property for maven-shared-resources version\n- Apply Spotless formatting to NIO2-migrated IT files\n- Apply Spotless formatting to gh-12303 IT resource pom files"
    },
    {
      "commit": "6f4644329fd2fb625ea2412239e049ff0446f600",
      "tree": "5f5afcdbbc59461e14252990be8350bd80c90afa",
      "parents": [
        "c48ad2012cdfcef53894a41c409c6c8cf4298496"
      ],
      "author": {
        "name": "B V HITESH SAI",
        "email": "hiteshsaibv.24cs@saividya.ac.in",
        "time": "Fri Jul 03 14:44:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 11:14:08 2026 +0200"
      },
      "message": "[#11449] Fix Mockito agent: use late binding @{} interpolation and extend to failsafe plugin (#12369)\n\n* [MNG-11449] Fix Mockito agent: use late binding @{} interpolation and extend to failsafe plugin\n\nThe mockito profile activated by dependency:properties used Maven property\ninterpolation (\\) which resolves at POM parse time - before the\ndependency:properties goal runs and sets the org.mockito:mockito-core:jar\nproperty. This caused the javaagent path to remain unresolved.\n\nFix: use Surefire/Failsafe late-binding property interpolation (@{...})\nwhich resolves the property at test execution time, after dependency:properties\nhas already set it.\n\nAlso:\n- Restore @{jacocoArgLine} placeholder (was dropped in previous attempt)\n- Extend the profile to cover maven-failsafe-plugin as well\n\nFixes: https://issues.apache.org/jira/browse/MNG-11449\n\n* [MNG-11449] Fix Mockito agent profile collision with JaCoCo profile\n\nWhen both jacoco and mockito profiles were active, the jacoco profile\u0027s surefire configuration overrode the mockito profile\u0027s surefire pluginManagement configuration. This caused the mockito javaagent to be silently dropped for unit tests.\n\nFix: Refactor the surefire and failsafe argLine to be composed dynamically via properties:\n- Define argLine.xmx (default: -Xmx256m) and argLine.mockito (default: empty) in the root POM properties.\n- Update default pluginManagement configuration for surefire/failsafe to: \\ @{jacocoArgLine} \\\n- Modify the mockito profile to only set argLine.mockito property to the mockito javaagent.\n- Modify the jacoco profile to only override argLine.xmx property to -Xmx1G and remove the direct surefire argLine override.\n\nThis ensures both profiles can be active simultaneously without overriding each other\u0027s configurations."
    },
    {
      "commit": "c48ad2012cdfcef53894a41c409c6c8cf4298496",
      "tree": "95765da199b864e03d4d4108f71f2430438d8b26",
      "parents": [
        "4f62c0825686fcb176994cd9a0b78102e1b7194b"
      ],
      "author": {
        "name": "Stefan Oehme",
        "email": "st.oehme@gmail.com",
        "time": "Fri Jul 03 10:33:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 10:33:58 2026 +0200"
      },
      "message": "Make LookupContext#closeables thread safe (#12411)\n\nThis collection is modified by multiple threads, e.g. the FastTerminal\nsetup thread calling context.closeables.add(out::flush). This can result\nin closeables being lost and can make subsequent builds with the embedded\nrunner fail.\n\nSigned-off-by: Stefan Oehme \u003cst.oehme@gmail.com\u003e"
    },
    {
      "commit": "4f62c0825686fcb176994cd9a0b78102e1b7194b",
      "tree": "85e298afd7644b794523b0a95178f0f72ee269d9",
      "parents": [
        "da0bb4c709d1fae4a9ffb58f3959dabc08ca6494"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 03 10:13:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 10:13:18 2026 +0200"
      },
      "message": "Bump net.bytebuddy:byte-buddy from 1.18.10 to 1.18.11 (#12412)\n\nBumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.18.10 to 1.18.11.\n- [Release notes](https://github.com/raphw/byte-buddy/releases)\n- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)\n- [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.18.10...byte-buddy-1.18.11)\n\n---\nupdated-dependencies:\n- dependency-name: net.bytebuddy:byte-buddy\n  dependency-version: 1.18.11\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "da0bb4c709d1fae4a9ffb58f3959dabc08ca6494",
      "tree": "d62f41a97c14a46d3f43adf7207ab4df63f961d0",
      "parents": [
        "f4eae55109b026ec09d4128f56aec15d39141d33"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 02 16:05:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 16:05:04 2026 +0200"
      },
      "message": "Bump jlineVersion from 4.2.1 to 4.3.1 (#12407)\n\nBumps `jlineVersion` from 4.2.1 to 4.3.1.\n\nUpdates `org.jline:jline-reader` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-style` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-builtins` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-console` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-console-ui` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-terminal` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-terminal-ffm` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-terminal-jni` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jline-native` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\nUpdates `org.jline:jansi-core` from 4.2.1 to 4.3.1\n- [Release notes](https://github.com/jline/jline3/releases)\n- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.jline:jline-reader\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-style\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-builtins\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-console\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-console-ui\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-terminal\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-terminal-ffm\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-terminal-jni\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jline-native\n  dependency-version: 4.3.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: org.jline:jansi-core\n  dependency-version: 4.3.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f4eae55109b026ec09d4128f56aec15d39141d33",
      "tree": "aa13a75666a46a69d3581e59ea6c881c534abc49",
      "parents": [
        "49865f242b422cc950b9c0416dd7c2cc907c8a78"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 30 19:16:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 19:16:23 2026 +0200"
      },
      "message": "Bump net.sourceforge.pmd:pmd-core from 7.25.0 to 7.26.0 (#12403)\n\nBumps [net.sourceforge.pmd:pmd-core](https://github.com/pmd/pmd) from 7.25.0 to 7.26.0.\n- [Release notes](https://github.com/pmd/pmd/releases)\n- [Commits](https://github.com/pmd/pmd/compare/pmd_releases/7.25.0...pmd_releases/7.26.0)\n\n---\nupdated-dependencies:\n- dependency-name: net.sourceforge.pmd:pmd-core\n  dependency-version: 7.26.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "49865f242b422cc950b9c0416dd7c2cc907c8a78",
      "tree": "3e4753b3f7e881956c9106b7a8fbd666f3c8febd",
      "parents": [
        "ef837a2b9cc8d0a1a3710d06e3c7a481301ab2c4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 01:03:35 2026 +0000"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Mon Jun 29 19:18:30 2026 +0200"
      },
      "message": "Bump actions/cache/save from 6.0.0 to 6.1.0\n\nBumps [actions/cache/save](https://github.com/actions/cache) from 6.0.0 to 6.1.0.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/2c8a9bd7457de244a408f35966fab2fb45fda9c8...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache/save\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ef837a2b9cc8d0a1a3710d06e3c7a481301ab2c4",
      "tree": "fd62f2499b482dc29148015722f1541b849c901f",
      "parents": [
        "d0093f63c4f6af542749b3d006d87cde9454cea4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 01:03:32 2026 +0000"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Mon Jun 29 19:18:16 2026 +0200"
      },
      "message": "Bump actions/cache/restore from 6.0.0 to 6.1.0\n\nBumps [actions/cache/restore](https://github.com/actions/cache) from 6.0.0 to 6.1.0.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/2c8a9bd7457de244a408f35966fab2fb45fda9c8...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache/restore\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d0093f63c4f6af542749b3d006d87cde9454cea4",
      "tree": "c984d9dc8b7451972d5997846b70d6649127b32a",
      "parents": [
        "f564ce4fe26c5c3fd2d2c0949ea1c490f60ea0df"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 18:03:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 18:03:23 2026 +0200"
      },
      "message": "Bump org.junit:junit-bom from 6.1.0 to 6.1.1 (#12388)\n\nBumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 6.1.0 to 6.1.1.\n- [Release notes](https://github.com/junit-team/junit-framework/releases)\n- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.junit:junit-bom\n  dependency-version: 6.1.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f564ce4fe26c5c3fd2d2c0949ea1c490f60ea0df",
      "tree": "496ac008056628941022b21a3866ba1aa109404a",
      "parents": [
        "974021de564f5760f282305fb4a3520db1328ac0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 18:03:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 18:03:07 2026 +0200"
      },
      "message": "Bump org.apache.maven:maven-parent from 48 to 49 (#12389)\n\nBumps [org.apache.maven:maven-parent](https://github.com/apache/maven-parent) from 48 to 49.\n- [Release notes](https://github.com/apache/maven-parent/releases)\n- [Commits](https://github.com/apache/maven-parent/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven:maven-parent\n  dependency-version: \u002749\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "974021de564f5760f282305fb4a3520db1328ac0",
      "tree": "8a97ceb69957b02d895e33688b8b47a7949433c1",
      "parents": [
        "b6d28d66c5d70af21b96af7509731801c61fa6cf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 17:29:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 17:29:48 2026 +0200"
      },
      "message": "Bump ch.qos.logback:logback-classic from 1.5.36 to 1.5.37 (#12394)\n\nBumps [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) from 1.5.36 to 1.5.37.\n- [Release notes](https://github.com/qos-ch/logback/releases)\n- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.36...v_1.5.37)\n\n---\nupdated-dependencies:\n- dependency-name: ch.qos.logback:logback-classic\n  dependency-version: 1.5.37\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b6d28d66c5d70af21b96af7509731801c61fa6cf",
      "tree": "bb03ba472a869986ff2cf37bc50350fd276c7d27",
      "parents": [
        "549cd76aa81aad958e0cb0f9f14d3388f6314431"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 17:28:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 17:28:32 2026 +0200"
      },
      "message": "Bump org.apache:apache from 38 to 39 (#12391)\n\nBumps [org.apache:apache](https://github.com/apache/maven-apache-parent) from 38 to 39.\n- [Release notes](https://github.com/apache/maven-apache-parent/releases)\n- [Commits](https://github.com/apache/maven-apache-parent/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache:apache\n  dependency-version: \u002739\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "549cd76aa81aad958e0cb0f9f14d3388f6314431",
      "tree": "2c9d00832e72de9bd5d2c63416376b85129a6d12",
      "parents": [
        "b6eab2ad39877a78a91a5e7333e202564728fa7a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 26 01:04:42 2026 +0000"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Sun Jun 28 14:13:09 2026 +0200"
      },
      "message": "Bump ch.qos.logback:logback-classic from 1.5.35 to 1.5.36\n\nBumps [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) from 1.5.35 to 1.5.36.\n- [Release notes](https://github.com/qos-ch/logback/releases)\n- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.35...v_1.5.36)\n\n---\nupdated-dependencies:\n- dependency-name: ch.qos.logback:logback-classic\n  dependency-version: 1.5.36\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b6eab2ad39877a78a91a5e7333e202564728fa7a",
      "tree": "5e9be76d90c3d1c7f65323a16c0e1fa8414eb472",
      "parents": [
        "d260f0d52e29c5f97bcac720e2c30b82ce779455"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 26 01:02:55 2026 +0000"
      },
      "committer": {
        "name": "Sylwester Lachiewicz",
        "email": "slachiewicz@apache.org",
        "time": "Sun Jun 28 13:43:17 2026 +0200"
      },
      "message": "Bump actions/setup-java from 5.3.0 to 5.4.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.3.0 to 5.4.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/ad2b38190b15e4d6bdf0c97fb4fca8412226d287...1bcf9fb12cf4aa7d266a90ae39939e61372fe520)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d260f0d52e29c5f97bcac720e2c30b82ce779455",
      "tree": "48779dd960407189b2ad441ca314f64727555d60",
      "parents": [
        "da392652e0b687eebdb28dfe7e72f89b05bdc0e7"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 05:42:18 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:08 2026 +0200"
      },
      "message": "Guard JUL bridge installation with isInstalled() check\n\nAvoid redundantly removing handlers and reinstalling the\nSLF4JBridgeHandler on every activateLogging() call, which matters\nin embedded/resident-mode scenarios where Maven is invoked multiple\ntimes in the same JVM.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "da392652e0b687eebdb28dfe7e72f89b05bdc0e7",
      "tree": "fd263bd92211853f8ec83827d16a08c86fa8f677",
      "parents": [
        "684a3fd122aeeb921c4bb9dbbcb6a344c201ed55"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jun 23 07:17:58 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:08 2026 +0200"
      },
      "message": "[#11683] Install JUL-to-SLF4J bridge to route java.util.logging through Maven logging\n\nAdds the jul-to-slf4j bridge so that libraries using java.util.logging\n(JUL) have their log output routed through SLF4J and Maven\u0027s logging\nsystem, instead of writing directly to stderr.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "684a3fd122aeeb921c4bb9dbbcb6a344c201ed55",
      "tree": "1dde64d46d3642c86a75f96e5e1735db0081853f",
      "parents": [
        "081740dfc4b27f92c942daf310f21e87bb75061d"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 26 16:55:11 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:02 2026 +0200"
      },
      "message": "Fix Spotless formatting: place exception arg on same line as message string (#12380)\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "081740dfc4b27f92c942daf310f21e87bb75061d",
      "tree": "d47021b11a472379addb7bb2398bad08ec5da1c8",
      "parents": [
        "7b8cc3239e597573581e1140e6e61f8d32d20cc7"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 26 06:16:56 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:02 2026 +0200"
      },
      "message": "Fix Spotless formatting: merge split string literal\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7b8cc3239e597573581e1140e6e61f8d32d20cc7",
      "tree": "3440dff990c4321221c8242e4483c0804a39596d",
      "parents": [
        "d821aeff3d44b81c74771d0bdb61ba516d84e3b8"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 26 06:12:52 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:02 2026 +0200"
      },
      "message": "Fix Spotless formatting violation in DefaultModelBuilder\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d821aeff3d44b81c74771d0bdb61ba516d84e3b8",
      "tree": "82bdb42bb41bcb5b55c3d0c24da44e7fb30bfd17",
      "parents": [
        "7ffc6d57dfb3d0a6af8532bb83d7eaae277ef31b"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jun 23 15:27:07 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:02 2026 +0200"
      },
      "message": "Fix IT compilation: adapt to master\u0027s NIO2 Path API\n\nThe IT was copied from maven-4.0.x but master\u0027s\nAbstractMavenIntegrationTestCase was migrated to NIO2 (no version\nrange constructor, extractResources returns Path).\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7ffc6d57dfb3d0a6af8532bb83d7eaae277ef31b",
      "tree": "910a216a41cd1e79b03581cec5d7914428ba1264",
      "parents": [
        "60dc6342b4042488583763df1ae41fcdfbac48d1"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jun 23 15:04:33 2026 +0200"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sun Jun 28 01:23:02 2026 +0200"
      },
      "message": "[#12303] Fix CI-friendly ${revision} not interpolated for non-build POM reads\n\nPort of #12322 to master.\n\nIn doReadFileModel(), the CI-friendly version interpolation was only\nperformed inside the isBuildRequest() block. When plugins like\nmaven-remote-resources-plugin resolve the project\u0027s own POM through\nthe non-build code path, ${revision} was left uninterpolated, causing\n\"Invalid Version Range Request\" errors.\n\nAdd an else branch that performs CI-friendly version interpolation\nfor non-build requests as well.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "60dc6342b4042488583763df1ae41fcdfbac48d1",
      "tree": "c22bf4dc02d37d477902ae8211d97caaa31266b7",
      "parents": [
        "a28f4e3851df9fa83ddd1027c65b0c27581eea2a"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 26 09:55:21 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Sat Jun 27 11:42:27 2026 +0200"
      },
      "message": "Fix mvn.cmd jvm.config read failing silently on Windows CI\n\nReplace \u0027for /f\u0027 with \u0027set /p\u0027 + input redirect to read the\nJvmConfigParser temp file. \u0027for /f\u0027 silently produces no output\nwhen the file is briefly locked by Windows Defender real-time\nscanning, leaving JVM_CONFIG_MAVEN_OPTS empty and causing\nMavenITmng4559 tests to fail intermittently on Windows CI runners.\n\n\u0027set /p \u003cfile\u0027 uses a transient input-redirect open with different\nsharing flags, making it far less susceptible to lock contention.\nIf the file IS locked, it emits a visible error to stderr rather\nthan failing silently. A single retry with a brief delay is added\nas a safety net.\n\nDirect stdout capture (\u0027for /f ... in (`command`)\u0027) was tried\npreviously (343b518a) and reverted (7685323d) because cmd.exe\u0027s\nchild shell interprets special characters (pipes, ampersands) in\nthe captured output, breaking jvm.config values like\n-Dhttp.nonProxyHosts\u003dde|*.de.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "a28f4e3851df9fa83ddd1027c65b0c27581eea2a",
      "tree": "0df785c41ece8da0b95b4d373835901ee0a91a7d",
      "parents": [
        "99a624d1f16a538361f6fe88fb55527726458412"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 25 22:41:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:41:44 2026 +0200"
      },
      "message": "Bump ch.qos.logback:logback-classic from 1.5.34 to 1.5.35 (#12363)\n\nBumps [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) from 1.5.34 to 1.5.35.\n- [Release notes](https://github.com/qos-ch/logback/releases)\n- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.34...v_1.5.35)\n\n---\nupdated-dependencies:\n- dependency-name: ch.qos.logback:logback-classic\n  dependency-version: 1.5.35\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "99a624d1f16a538361f6fe88fb55527726458412",
      "tree": "99fca08a00cfcaf1f6fd4e016b50467ea9af9e96",
      "parents": [
        "d7334261f2e339f98963021c8f00386af853db94"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 22:39:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:39:00 2026 +0200"
      },
      "message": "Forward-port #11985: remove redundant required MDO attrs + add extension coordinate validation (#11979) (#12346)\n\n* Forward-port #11985: remove redundant required MDO attrs + add extension coordinate validation (#11979)\n\n- Remove \u003crequired\u003etrue\u003c/required\u003e from 13 metadata/defaulted fields in maven.mdo\n  (forward-port of PR #11985 from maven-3.10.x)\n- Update Model.name description to document artifactId fallback\n- Add WARNING-level validation for missing extension groupId/artifactId\n- Add unit tests for extension coordinate validation and minimal POM validation\n\n* Address Copilot review comments (port from #12347)\n\n- Fix \u003cname\u003e field description in maven.mdo to not claim the model field\n  defaults to artifactId (the fallback is a runtime behavior in\n  MavenProject#getName(), not a model-level default)\n\nNote: unlike the 4.0.x branch, the test POM resources minimal-with-parent.xml\nand minimal-without-parent.xml are actually referenced by tests in\nimpl/maven-impl on master, so they are kept.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "d7334261f2e339f98963021c8f00386af853db94",
      "tree": "d205db4eb16ab361f065f6bbe59b2ca56261ff21",
      "parents": [
        "549065b07dd17119be45293fe301826f47738527"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 20:02:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 20:02:51 2026 +0200"
      },
      "message": "Add mvnup SourceStrategy for migrating to \u003csource\u003e elements (#12355)\n\n* Add mvnup SourceStrategy for migrating to \u003csource\u003e elements\n\nAdds a new mvnup upgrade strategy that migrates legacy source\nconfiguration to Maven 4.1.0+ \u003csource\u003e elements. Handles four\nmigration phases:\n\n- Compiler properties (maven.compiler.release, source/target)\n  to \u003csource\u003e\u003ctargetVersion\u003e\n- Compiler plugin configuration (\u003crelease\u003e, \u003csource\u003e/\u003ctarget\u003e)\n  to \u003csource\u003e\u003ctargetVersion\u003e\n- Custom source/test directories to \u003csource\u003e\u003cdirectory\u003e\n- Resource/testResource sections to \u003csource\u003e with lang\u003dresources\n\nApplies when --model-version is 4.1.0+ or --all is set.\nRuns at @Priority(20), after all other strategies.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Use domtrip path() API in SourceStrategy tests\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Fix review issues in SourceStrategy\n\n- Check groupId in findCompilerPlugin (not just artifactId)\n- Clean up compiler plugin config when properties already provide\n  targetVersion (previously left stale release/source/target elements)\n- Clean up empty pluginManagement after plugin removal\n- Clean up empty build element after all children removed\n- Add test for pluginManagement compiler plugin migration\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Extract copyPatternList to deduplicate includes/excludes handling\n\nAddress review feedback from desruisseaux: extract shared logic\nfrom copyIncludesExcludes into a static copyPatternList method.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review comments on SourceStrategy (port from #12357)\n\n- Reuse existing main/java \u003csource\u003e element when adding targetVersion\n  instead of always creating a new one (avoids duplicate source elements)\n- Only remove compiler plugin config (release/source/target) when values\n  match the migrated property value (preserves intentional overrides)\n- Add tests for both edge cases\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "549065b07dd17119be45293fe301826f47738527",
      "tree": "627f6d68791f822e2a65f025a720cad99ffcbc71",
      "parents": [
        "10ba35b7063c528a61a3b85db2c4eeb2c99fc854"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 15:18:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 15:18:05 2026 +0200"
      },
      "message": "[#12353] Add jaxb2-maven-plugin to mvnup plugin upgrade list (#12354)\n\njaxb2-maven-plugin versions before 3.2.0 depend on jaxb-parent:3.0.0\nwhich contains `\u003cXlint:all /\u003e` — an element with an undeclared namespace\nprefix. Maven 4\u0027s namespace-aware StAX parser rejects this invalid XML,\ncausing transitive dependencies (jaxb-core, jaxb-impl) to be lost from\nthe plugin classrealm, resulting in ClassNotFoundException at runtime.\n\njaxb-parent:3.0.2 (used by jaxb2-maven-plugin 3.2.0+) fixed this by\nusing `\u003ccompilerArgument\u003e-Xlint:all\u003c/compilerArgument\u003e` instead.\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "10ba35b7063c528a61a3b85db2c4eeb2c99fc854",
      "tree": "77505daeefe8203bde83a99aa2b8b9a3d764818f",
      "parents": [
        "71c41f9270920d6f68583ab9285b267d5bc850fb"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 15:17:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 15:17:40 2026 +0200"
      },
      "message": "Fix mvnup spurious pluginManagement injection for remote parent plugins (#12350)\n\n* [#11606] Fix mvnup spurious pluginManagement injection for plugins inherited from remote parent POM\n\nWhen a project inherits from a remote parent POM, plugins declared only\nin the remote parent\u0027s build/plugins or pluginManagement should not have\nlocal pluginManagement entries injected by mvnup. The project does not\ncontrol the remote parent, so overriding its plugin versions locally is\nspurious.\n\nThe fix collects all plugin keys declared in local POMs (build/plugins\nand build/pluginManagement/plugins) and skips plugins in the effective\nmodel analysis that are not locally declared — they come from remote\nparents that the project does not control.\n\nPlugins that ARE declared locally (even without a version, inheriting\nfrom a remote parent\u0027s pluginManagement) are still eligible for\npluginManagement injection, since the project explicitly uses them.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Override remote parent plugins with comment instead of skipping\n\nInstead of skipping plugins inherited from remote parent POMs,\nmvnup now adds pluginManagement overrides with a comment\n\"Override version inherited from parent\". This ensures Maven 4\nincompatible plugin versions get upgraded even when they come\nfrom a parent POM the project does not control.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "71c41f9270920d6f68583ab9285b267d5bc850fb",
      "tree": "096c89b09471e5c4aee53509b5db66a21ed04f66",
      "parents": [
        "6f73f5b8333837ff93aa0a535d5c84fef267bb26"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 25 15:17:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 15:17:25 2026 +0200"
      },
      "message": "[MNG-8650] Fix MAVEN_ARGS backslash stripping on Windows (#12348)\n\nMove $MAVEN_ARGS out of the eval\u0027d cmd string so that eval\ndoes not re-parse its value and strip backslashes.  The variable\nreference is now single-quoted (\u0027$MAVEN_ARGS\u0027) on the eval line,\nmatching the existing treatment of \"$@\" from PR #11983.\n\nCloses #11487\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6f73f5b8333837ff93aa0a535d5c84fef267bb26",
      "tree": "09bd5f5d3824c88a01a96c78b82d4732c9d8f563",
      "parents": [
        "37697451169e72137983ac50371fa6d4e851d62b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 25 11:45:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 11:45:03 2026 +0200"
      },
      "message": "Bump sisuVersion from 1.0.0 to 1.0.1 (#12365)\n\nBumps `sisuVersion` from 1.0.0 to 1.0.1.\n\nUpdates `org.eclipse.sisu:org.eclipse.sisu.plexus` from 1.0.0 to 1.0.1\n- [Release notes](https://github.com/eclipse-sisu/sisu-project/releases)\n- [Changelog](https://github.com/eclipse-sisu/sisu-project/blob/main/RELEASE.md)\n- [Commits](https://github.com/eclipse-sisu/sisu-project/compare/releases/1.0.0...releases/1.0.1)\n\nUpdates `org.eclipse.sisu:org.eclipse.sisu.inject` from 1.0.0 to 1.0.1\n- [Release notes](https://github.com/eclipse-sisu/sisu-project/releases)\n- [Changelog](https://github.com/eclipse-sisu/sisu-project/blob/main/RELEASE.md)\n- [Commits](https://github.com/eclipse-sisu/sisu-project/compare/releases/1.0.0...releases/1.0.1)\n\nUpdates `org.eclipse.sisu:sisu-maven-plugin` from 1.0.0 to 1.0.1\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.sisu:org.eclipse.sisu.plexus\n  dependency-version: 1.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.sisu:org.eclipse.sisu.inject\n  dependency-version: 1.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.sisu:sisu-maven-plugin\n  dependency-version: 1.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "37697451169e72137983ac50371fa6d4e851d62b",
      "tree": "effc0b8c628822d449356ab52c8a2dd38046dc15",
      "parents": [
        "8ba0519eb4b43c0931b4c6dbf95e14da2c724b42"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 25 06:31:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 06:31:52 2026 +0200"
      },
      "message": "Bump actions/cache from 5.0.5 to 6.0.0 (#12358)\n\nBumps [actions/cache](https://github.com/actions/cache) from 5.0.5 to 6.0.0.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...2c8a9bd7457de244a408f35966fab2fb45fda9c8)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: 6.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8ba0519eb4b43c0931b4c6dbf95e14da2c724b42",
      "tree": "c1b57a9d2e94fdbb59fcc45c814567054825d107",
      "parents": [
        "6cbe5e2ff37064a1b1036b5b59b7cae4dc9ecd75"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jun 23 06:25:30 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Tue Jun 23 15:18:56 2026 +0200"
      },
      "message": "Port #11908: Do not force metadata download for plugin prefix resolution (#11905)\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "6cbe5e2ff37064a1b1036b5b59b7cae4dc9ecd75",
      "tree": "6a46a8c7e59074271bae50a79eb3d64075df1e4d",
      "parents": [
        "ffd7baa041ad66e9bc4e6b746a2f080a84dec433"
      ],
      "author": {
        "name": "Hervé Boutemy",
        "email": "hboutemy@apache.org",
        "time": "Tue Jun 23 07:36:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 07:36:59 2026 +0200"
      },
      "message": "[#12331] Fix clean/site lifecycle bindings executing after pom.xml goals\n\nFix goal bindings in pom.xml being executed before lifecycle bindings\nfor the clean and site lifecycles (regression vs Maven 3).\n\nLifecycles.plugin() creates executions for built-in clean and site\nlifecycle bindings (e.g. default-clean) without setting a priority,\nso they defaulted to 0 — the same as user-defined executions from\npom.xml. Add .priority(-1) to make them consistent with how default\nlifecycle packaging bindings work in DefaultPackagingRegistry."
    },
    {
      "commit": "ffd7baa041ad66e9bc4e6b746a2f080a84dec433",
      "tree": "d942b38c8afe1d62d050191bfcf90d46d533fa02",
      "parents": [
        "712b5c0791ae0374e2f38fa9959162b5210b2bc7"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Mon Jun 22 23:33:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 23:33:54 2026 +0200"
      },
      "message": "Switch default resolver transport from JDK/methanol to Apache HttpClient (#12338)\n\n* Switch default resolver transport from JDK/methanol to Apache HttpClient\n\nThe JDK HTTP transport (backed by methanol) has proven flaky on\nWindows CI due to race conditions in the gzip/inflater code path.\nSwitch the default transport to Apache HttpClient for better stability\nwhile keeping JDK transport available via -Dmaven.resolver.transport\u003djdk.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Remove JDK/methanol transport from the distribution bundle\n\nPer review feedback: remove maven-resolver-transport-jdk from\napache-maven/pom.xml entirely so it is no longer shipped. Also\nremove the testResolverTransportJdk integration test since the\nJAR is no longer bundled.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Revert unnecessary priority overrides — auto selection suffices\n\nSince JDK transport is no longer bundled, the auto selection\nnaturally picks Apache as the highest-priority remaining transport.\nNo need to explicitly force priorities in the default case.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "712b5c0791ae0374e2f38fa9959162b5210b2bc7",
      "tree": "550b8bec613b33715f2c2a893fd34453d3a7dc2d",
      "parents": [
        "c1de26776af18e095171885601df3f50a2473f8b"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Mon Jun 22 20:10:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 20:10:22 2026 +0200"
      },
      "message": "Fix NPE in DefaultLookup.lookupOptional() when container returns null (#12336)\n\nPlexusContainer.lookup() can return null instead of throwing\nComponentLookupException. Using Optional.of(null) causes a\nNullPointerException. Use Optional.ofNullable() instead so that\na null lookup result is correctly represented as Optional.empty().\n\nThis fixes maven-jdeprscan-plugin integration tests (list-default,\nlist-forremoval) which fail on Maven 4.0.x because\nDefaultToolchainManager.retrieveContext() calls\nlookupOptional(Project.class) and the container returns null.\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c1de26776af18e095171885601df3f50a2473f8b",
      "tree": "3d10cccf788e5d3696265e161b61d2c72054576a",
      "parents": [
        "f0bf691110e0588fc57de8b16d617728636b63e0"
      ],
      "author": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Mon Jun 22 09:43:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:43:14 2026 +0200"
      },
      "message": "Forward port Maven 3.10.0 PluginDependenciesResolver changes (#12329)\n\nAlso, restore binary compatibility that was broken in 4-beta-2.\n\nThis PR aligns PluginDependenciesResolver with changes happened in Maven 3.10.x, and also restores binary incompatibility happened in DefaultPluginDependenciesResolver that used to be injected directly."
    },
    {
      "commit": "f0bf691110e0588fc57de8b16d617728636b63e0",
      "tree": "01c573f7d18812591732404a01bcfb8d652fd318",
      "parents": [
        "bfc30f1fa89741fdafdfa26725b5e0795a619708"
      ],
      "author": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Fri Jun 19 16:04:35 2026 +0200"
      },
      "committer": {
        "name": "Tamas Cservenak",
        "email": "tamas@cservenak.net",
        "time": "Fri Jun 19 16:04:35 2026 +0200"
      },
      "message": "Quickfix for bfc30f1fa89741fdafdfa26725b5e0795a619708\n"
    },
    {
      "commit": "bfc30f1fa89741fdafdfa26725b5e0795a619708",
      "tree": "9e74e390860e2afc2b8153031d3ef56efe9a1f62",
      "parents": [
        "4ff22094bd645ef4fea671524fa8c81eb30e847b"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 19 11:03:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 11:03:53 2026 +0200"
      },
      "message": "Migrate integration tests to NIO2 Path API (#11364)\n\nMigrate Maven Integration Tests from java.io.File to NIO2\njava.nio.file.Path API, making Path-based methods the primary API\nwhile maintaining familiar method names.\n\nInfrastructure:\n- Verifier: Path-based overloads, NIO2 file operations, custom\n  deleteDirectoryRecursively using Files.walk(), InvalidPathException\n  fallback to File API for Windows trailing-space paths\n- AbstractMavenIntegrationTestCase: extractResources() returns Path,\n  strips leading \u0027/\u0027 for correct Path.resolve() behavior\n- ItUtils: centralized FileUtils wrappers (copyDirectoryStructure,\n  deleteDirectory, createFile, lastModified)\n- HttpServer: source(Path) overload for file-based serving\n\nTest migration:\n- 735+ integration test files migrated to Path-based API\n- File -\u003e Path, new File(dir, sub) -\u003e dir.resolve(sub)\n- getAbsolutePath() -\u003e toString(), FileReader -\u003e Files.newBufferedReader\n- Files.deleteIfExists() where old File.delete() was lenient\n- Platform-specific fixes: Windows drive-relative paths (File.separator\n  prefix for subpath), Unix Path.subpath() skip\n\nNew tests:\n- VerifierNIO2Test, NIO2MigrationVerificationTest,\n  AbstractMavenIntegrationTestCaseNIO2Test\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "4ff22094bd645ef4fea671524fa8c81eb30e847b",
      "tree": "dff6741b4053f076fbfe47a63b0c23169f66da82",
      "parents": [
        "6ab51ab1cabf9b2f3404ee488495705c413dd10e"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 19 11:00:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 11:00:54 2026 +0200"
      },
      "message": "[#12301] Fix StackOverflowError with internal parent and CI-friendly revision (#12323)\n\n* [#12301] Fix StackOverflowError with internal parent and CI-friendly revision\n\nRe-forward-port the GH-12301 fix from maven-4.0.x to master, using\nThreadLocal\u003cSet\u003cPath\u003e\u003e instead of the shared ConcurrentHashMap.newKeySet()\nthat caused a race condition with PhasingExecutor parallel model loading.\n\nThe original forward-port (#12317) used a shared set to track which POM files\nwere being read by doReadFileModel(). This prevented the StackOverflowError\nfrom GH-12301, but caused false cycle detection when parallel threads in\nloadFilePom() read the same model simultaneously — breaking\nConsumerPomBuilderTest.testSimpleConsumer.\n\nThe fix uses ThreadLocal so each thread tracks only its own call stack,\npreventing actual recursive cycles within the same thread without blocking\nlegitimate parallel reads across threads.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Refactor: pass activeModelReads through call stack instead of ThreadLocal\n\nReplace ThreadLocal\u003cSet\u003cPath\u003e\u003e with a stack-passed Set\u003cPath\u003e parameter\nthreaded through readFileModel() → doReadFileModel() → getEnhancedProperties().\nEach readFileModel() entry point creates a fresh HashSet, avoiding any\nshared mutable state between concurrent model-loading threads.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "6ab51ab1cabf9b2f3404ee488495705c413dd10e",
      "tree": "94bfcf7059059d9f4cecb33d038f6dba1d416412",
      "parents": [
        "5b6c91b5315ff69ddebd9d1a647ecba015949494"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jun 19 10:57:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 10:57:11 2026 +0200"
      },
      "message": "Bump actions/checkout from 6.0.3 to 7.0.0 (#12318)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5b6c91b5315ff69ddebd9d1a647ecba015949494",
      "tree": "85205ee4357dc848804e75cc90f95a7834b59241",
      "parents": [
        "ca189d5502009d52b05f13282c031d0dbd1cb370"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 19 09:55:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 09:55:02 2026 +0200"
      },
      "message": "Sync DefaultTypeProvider and dependency-types docs across impl and compat (#12134)\n\n* Sync DefaultTypeProvider and dependency-types.apt across impl and compat\n\nThe two DefaultTypeProvider copies (impl/maven-impl and\ncompat/maven-resolver-provider) had drifted out of sync:\n- fatjar type was missing from the impl provider\n- test-java-source type was missing from the compat provider\n- CLASSPATH_PROCESSOR and MODULAR_PROCESSOR ordering was inconsistent\n\nBoth dependency-types.apt files also had copy-paste errors from the\ntest-jar row (bogus \"tests\" classifier on modular-jar, classpath-jar,\nand fatjar) and were missing fatjar\u0027s includesDependencies\u003dtrue flag.\nAdded the missing processor types and test-java-source to both docs.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Add APT consistency tests for DefaultTypeProvider in impl and compat\n\nValidates dependency-types.apt against DefaultTypeProvider, checking\nclassifier, extension, language, path types, and includesDependencies.\nAlso verifies all provider types are documented. Mirrors the existing\nArtifactHandlerTest pattern.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ca189d5502009d52b05f13282c031d0dbd1cb370",
      "tree": "2ddd0bd3885412ab198d64de4251c2c7cd845070",
      "parents": [
        "c4c7d2ed5b902fbebe78108af29291ecde541ecc"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 19 05:29:40 2026 +0000"
      },
      "committer": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Fri Jun 19 05:29:40 2026 +0000"
      },
      "message": "Revert \"[#12301] Fix StackOverflowError with internal parent and CI-friendly revision (#12317)\"\n\nThis reverts commit c4c7d2ed5b902fbebe78108af29291ecde541ecc.\n"
    },
    {
      "commit": "c4c7d2ed5b902fbebe78108af29291ecde541ecc",
      "tree": "0e7e4435734ed37be338a258aae93d138f269bc9",
      "parents": [
        "273842316214d39060726e96752dc1641fedef82"
      ],
      "author": {
        "name": "Guillaume Nodet",
        "email": "gnodet@gmail.com",
        "time": "Thu Jun 18 23:47:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 23:47:39 2026 +0200"
      },
      "message": "[#12301] Fix StackOverflowError with internal parent and CI-friendly revision (#12317)"
    },
    {
      "commit": "273842316214d39060726e96752dc1641fedef82",
      "tree": "2ddd0bd3885412ab198d64de4251c2c7cd845070",
      "parents": [
        "22f9a0ee086a464f2bfa757ecd0a32053f3d1e8d"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Jun 19 01:32:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 19:32:29 2026 +0200"
      },
      "message": "Update copyright year in NOTICE file (#12300)"
    }
  ],
  "next": "22f9a0ee086a464f2bfa757ecd0a32053f3d1e8d"
}
