)]}'
{
  "log": [
    {
      "commit": "c18fa17913644074a83063cbf3e3b655f7144794",
      "tree": "97f12e08d80c013ba407ac525f86e1fe815d5066",
      "parents": [
        "585ecaf45a863ccb66d2c4a42821d4f5f4ff1f2d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 07 03:56:36 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu May 07 23:01:42 2026 +0100"
      },
      "message": "Bump jetty.version from 12.1.8 to 12.1.9\n\nBumps `jetty.version` from 12.1.8 to 12.1.9.\n\nUpdates `org.eclipse.jetty:jetty-server` from 12.1.8 to 12.1.9\n\nUpdates `org.eclipse.jetty.ee10:jetty-ee10-webapp` from 12.1.8 to 12.1.9\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.jetty:jetty-server\n  dependency-version: 12.1.9\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-webapp\n  dependency-version: 12.1.9\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "585ecaf45a863ccb66d2c4a42821d4f5f4ff1f2d",
      "tree": "f4b8ce126c3e287946f426fd5f8b25ba7baa721e",
      "parents": [
        "ad1d2461f74288b9728051305119bddde0181181"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 27 03:53:52 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Apr 27 05:27:17 2026 +0100"
      },
      "message": "Bump commons-codec:commons-codec from 1.21.0 to 1.22.0\n\nBumps [commons-codec:commons-codec](https://github.com/apache/commons-codec) from 1.21.0 to 1.22.0.\n- [Changelog](https://github.com/apache/commons-codec/blob/master/RELEASE-NOTES.txt)\n- [Commits](https://github.com/apache/commons-codec/compare/rel/commons-codec-1.21.0...rel/commons-codec-1.22.0)\n\n---\nupdated-dependencies:\n- dependency-name: commons-codec:commons-codec\n  dependency-version: 1.22.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ad1d2461f74288b9728051305119bddde0181181",
      "tree": "d4603024c3af8d6eaebfaa49f9d4ce89dfc0e8c4",
      "parents": [
        "0e7a2b65db51ddc8f1f7c32b4d919ba98a97fdce"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 24 03:54:47 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Apr 25 23:06:30 2026 +0100"
      },
      "message": "Bump commons-io:commons-io from 2.21.0 to 2.22.0\n\nBumps commons-io:commons-io from 2.21.0 to 2.22.0.\n\n---\nupdated-dependencies:\n- dependency-name: commons-io:commons-io\n  dependency-version: 2.22.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": "0e7a2b65db51ddc8f1f7c32b4d919ba98a97fdce",
      "tree": "ffdcdb0b503b4fc10e63ac4095c6af17c0a734b7",
      "parents": [
        "8594bf2407b87dca93210dc2e3b9963a79e097d8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 03:53:32 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Apr 20 22:31:58 2026 +0100"
      },
      "message": "Bump spring.version from 7.0.6 to 7.0.7\n\nBumps `spring.version` from 7.0.6 to 7.0.7.\n\nUpdates `org.springframework:spring-core` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-context` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-beans` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-web` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-aop` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-oxm` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-test` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\nUpdates `org.springframework:spring-expression` from 7.0.6 to 7.0.7\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.6...v7.0.7)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework:spring-core\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-context\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-beans\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-web\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-aop\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-oxm\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-test\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-expression\n  dependency-version: 7.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8594bf2407b87dca93210dc2e3b9963a79e097d8",
      "tree": "823ff5e22fa96b5b6d2aed2ebfc3bb7e6e6f25aa",
      "parents": [
        "bbe189cc4ba36f1264cd05a145f6ead77e763e61"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 03:54:37 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Apr 20 22:31:36 2026 +0100"
      },
      "message": "Bump jaxen:jaxen from 2.0.0 to 2.0.1\n\nBumps [jaxen:jaxen](https://github.com/jaxen-xpath/jaxen) from 2.0.0 to 2.0.1.\n- [Release notes](https://github.com/jaxen-xpath/jaxen/releases)\n- [Commits](https://github.com/jaxen-xpath/jaxen/compare/v2.0.0...v2.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: jaxen:jaxen\n  dependency-version: 2.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": "bbe189cc4ba36f1264cd05a145f6ead77e763e61",
      "tree": "729f2e37d6964bc2a1cb9c7833b00f448ac14b52",
      "parents": [
        "c0a88840a5128748091bf1bc6c9f9813fdb61d02"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 20 03:54:17 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Apr 20 22:31:14 2026 +0100"
      },
      "message": "Bump maven.version from 3.9.14 to 3.9.15\n\nBumps `maven.version` from 3.9.14 to 3.9.15.\n\nUpdates `org.apache.maven:maven-plugin-api` from 3.9.14 to 3.9.15\n- [Release notes](https://github.com/apache/maven/releases)\n- [Commits](https://github.com/apache/maven/compare/maven-3.9.14...maven-3.9.15)\n\nUpdates `org.apache.maven:maven-core` from 3.9.14 to 3.9.15\n\nUpdates `org.apache.maven:maven-artifact` from 3.9.14 to 3.9.15\n\nUpdates `org.apache.maven:maven-model` from 3.9.14 to 3.9.15\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven:maven-plugin-api\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-core\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-artifact\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-model\n  dependency-version: 3.9.15\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c0a88840a5128748091bf1bc6c9f9813fdb61d02",
      "tree": "a5ac3525f8de133f31288add35a5eca170ea788d",
      "parents": [
        "64da5e599d5cd9ed34060c7286109b0860f10f17"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Apr 19 14:44:57 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Apr 19 14:57:47 2026 +0100"
      },
      "message": "Migrate detect-cycles from enforcer-maven-plugin to decycle-maven-plugin\n\nReplace com.github.veithen.phos:enforcer-maven-plugin detect-cycles goal\nwith de.obqo.decycle:decycle-maven-plugin:check (v1.2.6) across 9 modules.\n\nKeep the phos enforcer-maven-plugin in axiom-api solely for the\nenforce-layering goal, which has no decycle equivalent.\n\nUse \u003cignoredDependency\u003e instead of \u003cdependency\u003e inside \u003cignoring\u003e blocks\nto work around a known tidy-maven-plugin bug (#7).\n"
    },
    {
      "commit": "64da5e599d5cd9ed34060c7286109b0860f10f17",
      "tree": "7952c395a3ee2b26f5531d9b943f42d4fcf68a86",
      "parents": [
        "6f472daf43e358d334ca98f16c41018a04b5409e"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Apr 19 12:58:57 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Apr 19 12:58:57 2026 +0100"
      },
      "message": "Update enforcer-maven-plugin to 0.5.0-SNAPSHOT\n\nReplace the single `enforce` goal with the new `detect-cycles` and\n`enforce-layering` goals. The `enforce-layering` goal is only used in\naxiom-api, which is the only module that configures layering rules.\n"
    },
    {
      "commit": "6f472daf43e358d334ca98f16c41018a04b5409e",
      "tree": "89af1a6a5d5b71d9c506af9155505d86e4baaaaa",
      "parents": [
        "3730f5050ccb478e4bddcc9651abad87f226846e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 03:54:25 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Apr 15 22:42:06 2026 +0100"
      },
      "message": "Bump com.google.guava:guava from 33.5.0-jre to 33.6.0-jre\n\nBumps [com.google.guava:guava](https://github.com/google/guava) from 33.5.0-jre to 33.6.0-jre.\n- [Release notes](https://github.com/google/guava/releases)\n- [Commits](https://github.com/google/guava/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.guava:guava\n  dependency-version: 33.6.0-jre\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3730f5050ccb478e4bddcc9651abad87f226846e",
      "tree": "3497dc2c8e5cad59966b05be4961b0a800292925",
      "parents": [
        "d2905c1e4692b8b803a6e39d54a412325e875bf9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 03:53:18 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Apr 13 15:54:40 2026 +0100"
      },
      "message": "Bump com.github.veithen.maven:xjc-maven-plugin from 0.2.0 to 0.2.1\n\nBumps [com.github.veithen.maven:xjc-maven-plugin](https://github.com/veithen/xjc-maven-plugin) from 0.2.0 to 0.2.1.\n- [Commits](https://github.com/veithen/xjc-maven-plugin/compare/0.2.0...0.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.veithen.maven:xjc-maven-plugin\n  dependency-version: 0.2.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": "d2905c1e4692b8b803a6e39d54a412325e875bf9",
      "tree": "0d4d2cdad98c4afcd9a954d56b98395cc9feae06",
      "parents": [
        "c5a5b66217a24d1a080da00f83c54f54f600be4e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 08 03:54:42 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Apr 08 22:54:37 2026 +0100"
      },
      "message": "Bump com.google.errorprone:error_prone_annotations from 2.48.0 to 2.49.0\n\nBumps [com.google.errorprone:error_prone_annotations](https://github.com/google/error-prone) from 2.48.0 to 2.49.0.\n- [Release notes](https://github.com/google/error-prone/releases)\n- [Commits](https://github.com/google/error-prone/compare/v2.48.0...v2.49.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.errorprone:error_prone_annotations\n  dependency-version: 2.49.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": "c5a5b66217a24d1a080da00f83c54f54f600be4e",
      "tree": "451694d6486213292e98860abd9fcd5902cf5d52",
      "parents": [
        "e74a28578abecf588247a4b77e63381cad5ed3d6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 01 03:54:02 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Apr 03 18:26:54 2026 +0100"
      },
      "message": "Bump org.codehaus.woodstox:stax2-api from 4.2.2 to 4.3.0\n\nBumps [org.codehaus.woodstox:stax2-api](https://github.com/FasterXML/stax2-api) from 4.2.2 to 4.3.0.\n- [Commits](https://github.com/FasterXML/stax2-api/compare/stax2-api-4.2.2...stax2-api-4.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.woodstox:stax2-api\n  dependency-version: 4.3.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": "e74a28578abecf588247a4b77e63381cad5ed3d6",
      "tree": "05323bbfa5bf99c6fac189d1376098b85b79bc77",
      "parents": [
        "09d5bbf70c8b3231e756f42fde932c091ec42732"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 05:58:50 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Apr 03 18:11:16 2026 +0100"
      },
      "message": "Bump jetty.version from 12.1.7 to 12.1.8\n\nBumps `jetty.version` from 12.1.7 to 12.1.8.\n\nUpdates `org.eclipse.jetty:jetty-server` from 12.1.7 to 12.1.8\n\nUpdates `org.eclipse.jetty.ee10:jetty-ee10-webapp` from 12.1.7 to 12.1.8\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.jetty:jetty-server\n  dependency-version: 12.1.8\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-webapp\n  dependency-version: 12.1.8\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "09d5bbf70c8b3231e756f42fde932c091ec42732",
      "tree": "27bec5db2044ddeb21bacc29c40b22f2172f54ec",
      "parents": [
        "87d6b242cb6f841e3a5fdeb529d608abf7d8c977"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 16:40:59 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 30 20:27:53 2026 +0100"
      },
      "message": "Bump groovy.version from 5.0.4 to 5.0.5\n\nBumps `groovy.version` from 5.0.4 to 5.0.5.\n\nUpdates `org.apache.groovy:groovy` from 5.0.4 to 5.0.5\n- [Commits](https://github.com/apache/groovy/commits)\n\nUpdates `org.apache.groovy:groovy-ant` from 5.0.4 to 5.0.5\n- [Commits](https://github.com/apache/groovy/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.groovy:groovy\n  dependency-version: 5.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.groovy:groovy-ant\n  dependency-version: 5.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "87d6b242cb6f841e3a5fdeb529d608abf7d8c977",
      "tree": "013ddb3a5cca9cefdb2aadac0b4cc184d467e421",
      "parents": [
        "139f1814d2259a4e784e381531a10740653143a5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 03:54:29 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 30 17:39:58 2026 +0100"
      },
      "message": "Bump log4j.version from 2.25.3 to 2.25.4\n\nBumps `log4j.version` from 2.25.3 to 2.25.4.\n\nUpdates `org.apache.logging.log4j:log4j-bom` from 2.25.3 to 2.25.4\n- [Release notes](https://github.com/apache/logging-log4j2/releases)\n- [Changelog](https://github.com/apache/logging-log4j2/blob/2.x/RELEASE-NOTES.adoc)\n- [Commits](https://github.com/apache/logging-log4j2/compare/rel/2.25.3...rel/2.25.4)\n\nUpdates `org.apache.logging.log4j:log4j-core` from 2.25.3 to 2.25.4\n\nUpdates `org.apache.logging.log4j:log4j-api` from 2.25.3 to 2.25.4\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.logging.log4j:log4j-bom\n  dependency-version: 2.25.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.logging.log4j:log4j-core\n  dependency-version: 2.25.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.logging.log4j:log4j-api\n  dependency-version: 2.25.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "139f1814d2259a4e784e381531a10740653143a5",
      "tree": "436f1886f0643fe25d07859d2e26b447da4317ab",
      "parents": [
        "9eb9d015802460a5b219e09fa9516fe96bf3e40f"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 22:00:56 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 22:00:56 2026 +0100"
      },
      "message": "Add helper methods to LabelBinding for common single-label cases\n\nAdd simpleString, simpleBoolean and simpleInt factory methods to\nLabelBinding that create a binding for a single label with a value\ncomputed from the fan-out value. Each method has a two-argument form\n(label name + function) and a one-argument identity form for when the\nfan-out value is already the label value.\n\nMigrate all existing call sites to use the new helpers and update the\nmatrix-testsuite README accordingly.\n"
    },
    {
      "commit": "9eb9d015802460a5b219e09fa9516fe96bf3e40f",
      "tree": "9147f7032a23439dbfc6e513f3bca0d5c1aefe15",
      "parents": [
        "7bc986bbbf967430bfafb810823816695fabbf69"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 11:35:27 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 11:35:27 2026 +0100"
      },
      "message": "Rename \"test parameter\" to \"label\" in matrix test framework\n\nThe values registered via the Dimension interface are only used for\ndisplay names and filtering, not by the tests themselves. Rename the\nconcept from \"test parameter\" to \"label\" to better reflect this:\n\n- Rename TestParameterTarget to LabelTarget\n- Rename ParameterBinding to LabelBinding\n- Rename addTestParameter(s) methods to addLabel(s)\n- Update all lambda parameter names (params -\u003e labels, p -\u003e l)\n- Update related variable and field names throughout\n"
    },
    {
      "commit": "7bc986bbbf967430bfafb810823816695fabbf69",
      "tree": "a69dcbcf507497ccfddf60111a0f8f3808a7a7d9",
      "parents": [
        "b6f2dd17f259cfae2aea70e939732f4e2b86dd95"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 09:10:38 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 09:10:38 2026 +0100"
      },
      "message": "Rename W3CTestNode to DOMTestNode\n"
    },
    {
      "commit": "b6f2dd17f259cfae2aea70e939732f4e2b86dd95",
      "tree": "5a361703d6a9d0fdc9a162f03a32eda4eb978672",
      "parents": [
        "3a03e36a69037737265c3dc594eb9ca7a9c55e35"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 09:02:56 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 09:02:56 2026 +0100"
      },
      "message": "Remove the old matrix test suite framework\n"
    },
    {
      "commit": "3a03e36a69037737265c3dc594eb9ca7a9c55e35",
      "tree": "ce07e94d74257f9e201d2263eba47933f7297c3e",
      "parents": [
        "3dc5e7ed6ee4284a1833af132017937363227462"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 08:49:41 2026 +0100"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 08:49:41 2026 +0100"
      },
      "message": "Migrate the W3C DOM tests to the new matrix test framework\n"
    },
    {
      "commit": "3dc5e7ed6ee4284a1833af132017937363227462",
      "tree": "970e51ec3e8330377c868f788cb9c2746baf6b57",
      "parents": [
        "372768c7985225ff083783e02b351839a7c0bb35"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 00:20:45 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 29 00:20:45 2026 +0000"
      },
      "message": "Exclude by ID only when using W3CDOMTestSuiteBuilder\n\nThe test class is just an implementation detail and shouldn\u0027t be used in\nthe exclude rules.\n"
    },
    {
      "commit": "372768c7985225ff083783e02b351839a7c0bb35",
      "tree": "ddc265e7bdc5fae1f86a72e50d04a66d6d6283fd",
      "parents": [
        "a76e6b85f717c4573edf35f5c929e99225c06341"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:53:10 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:53:10 2026 +0000"
      },
      "message": "Fix the ImmutableList type used by ParentNode\n"
    },
    {
      "commit": "a76e6b85f717c4573edf35f5c929e99225c06341",
      "tree": "4d1d663e7914faebc88df6f31d8829c77fbfdae5",
      "parents": [
        "f589b1403ab651b151faccc5163262750feab922"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:51:33 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:51:33 2026 +0000"
      },
      "message": "Enable creation of subclasses of MatrixTestNode outside of the org.apache.axiom.testutils.suite package\n"
    },
    {
      "commit": "f589b1403ab651b151faccc5163262750feab922",
      "tree": "9367dba62e4a777e42f58a83b6176f8700971083",
      "parents": [
        "850ea5ecd196d7428a25e05fc7885e38a9dc148a"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:15:27 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 23:17:17 2026 +0000"
      },
      "message": "Change return type of suite factory methods to MatrixTestNode\n"
    },
    {
      "commit": "850ea5ecd196d7428a25e05fc7885e38a9dc148a",
      "tree": "a7678bad604363015b2280d750ce4862e55e3bf6",
      "parents": [
        "9e9191591782fd01160f818f759dec5fcf988d01"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 12:05:47 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 12:05:47 2026 +0000"
      },
      "message": "Remove dead code\n\nmutationCount is never actually updated.\n"
    },
    {
      "commit": "9e9191591782fd01160f818f759dec5fcf988d01",
      "tree": "c17965ea6d0b93ef6ba1e067f743a7f908b9e0d6",
      "parents": [
        "4007902206d5801a52573ab98934dd9227c37282"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 11:56:57 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 28 11:56:57 2026 +0000"
      },
      "message": "Modernize W3CDOMTestSuiteBuilder\n"
    },
    {
      "commit": "4007902206d5801a52573ab98934dd9227c37282",
      "tree": "71b482500de2957b9ac9021a17cd320b6bc6bf7a",
      "parents": [
        "5d9ff63a35ec3c35f9096bf4ddfef06cb65b802a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 26 03:53:48 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 26 08:03:37 2026 +0000"
      },
      "message": "Bump biz.aQute.bnd:biz.aQute.bndlib from 7.2.1 to 7.2.3\n\nBumps [biz.aQute.bnd:biz.aQute.bndlib](https://github.com/bndtools/bnd) from 7.2.1 to 7.2.3.\n- [Release notes](https://github.com/bndtools/bnd/releases)\n- [Commits](https://github.com/bndtools/bnd/compare/7.2.1...7.2.3)\n\n---\nupdated-dependencies:\n- dependency-name: biz.aQute.bnd:biz.aQute.bndlib\n  dependency-version: 7.2.3\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5d9ff63a35ec3c35f9096bf4ddfef06cb65b802a",
      "tree": "e562419892ed0f5941ba09a2b7a010ded71db703",
      "parents": [
        "c500dd42d12b3a92bc1f7bef2f7b0df41dd1fc37"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 26 08:02:47 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 26 08:02:47 2026 +0000"
      },
      "message": "Migrate OMTestSuiteBuilder to the new matrix test framework\n"
    },
    {
      "commit": "c500dd42d12b3a92bc1f7bef2f7b0df41dd1fc37",
      "tree": "fad9953de107a44386d5e1daa11d0c16a78e2b12",
      "parents": [
        "0f3126e225ddf63d5e9aa2b5fd466e74a5a6cd66"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 24 00:01:20 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 24 00:01:20 2026 +0000"
      },
      "message": "Remove dead addTestParameter() calls from SOAP test classes\n\nThe SOAP suite was already migrated to the MatrixTestNode framework, but\nthe leaf test class constructors still contained addTestParameter() calls\non \u0027this\u0027. These are dead code since the new framework uses\nParameterBinding lambdas in SOAPTestSuite instead.\n"
    },
    {
      "commit": "0f3126e225ddf63d5e9aa2b5fd466e74a5a6cd66",
      "tree": "517908599291952cac2c9b2f04f6cfbe280509d3",
      "parents": [
        "ec5a64fd15dc7c90ce767488ab53ed9762e4c3bc"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 23 22:58:52 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 23 22:58:52 2026 +0000"
      },
      "message": "Implement a better way to deal with null values in SOAPTestSuite\n"
    },
    {
      "commit": "ec5a64fd15dc7c90ce767488ab53ed9762e4c3bc",
      "tree": "bfe9761bf80db33d2c312e0d937969dd109cf7df",
      "parents": [
        "41d519081bb3700db3b7042aeacb186f9d7bfb18"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 23 21:19:43 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 23 21:19:43 2026 +0000"
      },
      "message": "Replace exclude() call with if statement for large.xml in TestGetXMLStreamReader\n"
    },
    {
      "commit": "41d519081bb3700db3b7042aeacb186f9d7bfb18",
      "tree": "1ae828f69ff004de35407efc01adb8feed0b2a0d",
      "parents": [
        "2791b4a87ccee91e95f3dfdca41a5820d8ea173a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 03:53:30 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 23 21:14:05 2026 +0000"
      },
      "message": "Bump org.apache.rat:apache-rat-plugin from 0.17 to 0.18\n\nBumps org.apache.rat:apache-rat-plugin from 0.17 to 0.18.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.rat:apache-rat-plugin\n  dependency-version: \u00270.18\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2791b4a87ccee91e95f3dfdca41a5820d8ea173a",
      "tree": "a1ca3d99a80528c951692ed0ba378bc33cf7fc9b",
      "parents": [
        "c1ec8b21a8485c58d14eccb6ce2b4f24aef93839"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 22:08:03 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 22:08:03 2026 +0000"
      },
      "message": "Use for loops in OMTestSuiteBuilder to avoid duplicate test instantiations\n"
    },
    {
      "commit": "c1ec8b21a8485c58d14eccb6ce2b4f24aef93839",
      "tree": "58c0bc23d7186062317eb9513acec0650fc4e73d",
      "parents": [
        "f0b3e9ef6392c04b7d331cd3791cc6fb28806228"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:27:06 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:27:06 2026 +0000"
      },
      "message": "Replace old-style for loops by modern alternatives in OMTestSuiteBuilder\n"
    },
    {
      "commit": "f0b3e9ef6392c04b7d331cd3791cc6fb28806228",
      "tree": "22402fcab1f748cfd33c8b8fc8d7778d9c723828",
      "parents": [
        "a3987d8071fb3de19bc6ecbda891b9e082c9cc9a"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:21:51 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:21:51 2026 +0000"
      },
      "message": "Introduce Params record for element TestSerialization test parameters\n"
    },
    {
      "commit": "a3987d8071fb3de19bc6ecbda891b9e082c9cc9a",
      "tree": "593d61767eb49e0b8559b87671bcad15579768ac",
      "parents": [
        "7da843953ae1ea25d9440204aa78e6e60ea63edc"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:09:34 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 20:09:34 2026 +0000"
      },
      "message": "Introduce Params record for document TestDigest test parameters\n"
    },
    {
      "commit": "7da843953ae1ea25d9440204aa78e6e60ea63edc",
      "tree": "c3122808c965e44cc09478328154eb2e5e76827e",
      "parents": [
        "fbb50f92494f6a493452a2f62e1d8dfe9f588923"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 12:58:23 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 12:58:23 2026 +0000"
      },
      "message": "Add Binding.singleton() helper and use it across the codebase\n\nAdd a static helper method Binding.singleton(Key\u003cT\u003e) that creates a Binding\nwhich calls binder.bind(key).toInstance(value). This covers the most common\nbinding pattern used in FanOutNode declarations and eliminates repetitive\nlambda boilerplate.\n\nReplace all eligible (binder, value) -\u003e binder.bind(...).toInstance(value)\nlambdas with Binding.singleton(Key.get(...)) calls across 14 test suite\nfiles.\n\nUpdate README.md and migration.md to document the new helper and use it in\ncode examples.\n"
    },
    {
      "commit": "fbb50f92494f6a493452a2f62e1d8dfe9f588923",
      "tree": "02985d523d3c03cfcdbd541aa16a450c5f7535fb",
      "parents": [
        "e7fb77d140df730d359190f201d53b5502da2b5f"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 10:34:58 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 10:34:58 2026 +0000"
      },
      "message": "Migrate SOAPTestSuiteBuilder to matrix test framework\n\nReplace SOAPTestSuiteBuilder with SOAPTestSuite using the new\nMatrixTestNode-based framework. Test parameters are now injected\nvia Guice (@Inject constructors with @Named qualifiers) instead of\nbeing passed explicitly to constructors.\n\n- Add SOAPTestSuite with FanOutNode/ConditionalNode/InjectorNode tree\n- Delete SOAPTestSuiteBuilder\n- Convert ~150 SOAP test classes to use @Inject constructors\n- Use @Named annotations for disambiguating same-type bindings\n- Remove addTestParameter calls (handled by FanOutNode callbacks)\n"
    },
    {
      "commit": "e7fb77d140df730d359190f201d53b5502da2b5f",
      "tree": "7bf843b6020666976b9258900bc79a8378d05ba6",
      "parents": [
        "db8efcfaf2ebe5fa8954eee1fbe5dcbf4560d38b"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 10:06:55 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 22 10:06:55 2026 +0000"
      },
      "message": "Change ParameterBinding.addTestParameters to take injector, value, and params in that order\n"
    },
    {
      "commit": "db8efcfaf2ebe5fa8954eee1fbe5dcbf4560d38b",
      "tree": "f8f95232108c61526e90e6a6b3b16d2fcc6ecdea",
      "parents": [
        "3a689d320706dfc6d787d3c9165a55880eff59df"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 18:17:54 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 18:17:54 2026 +0000"
      },
      "message": "Generalize FanOutNode to derive values from the parent injector\n\nAdd a new constructor that accepts Function\u003cInjector, ? extends Iterable\u003cT\u003e\u003e\nso values can be computed lazily from the parent injector at tree-expansion\ntime. The existing ImmutableList\u003cT\u003e constructor is kept as a convenience\ndelegate for backward compatibility.\n"
    },
    {
      "commit": "3a689d320706dfc6d787d3c9165a55880eff59df",
      "tree": "e81070aadb30b0e78ce7c89b21c9d4f92fa87876",
      "parents": [
        "19a1b0d4be1e0c62488987ac5bcb66ebe7019162"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 15:11:48 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 15:11:48 2026 +0000"
      },
      "message": "Migrate SOAPDOMTestSuiteBuilder to MatrixTestNode framework\n"
    },
    {
      "commit": "19a1b0d4be1e0c62488987ac5bcb66ebe7019162",
      "tree": "bb60117f72895a39e296fb5f7ad1b82edfa9fc9e",
      "parents": [
        "f81768c25693a1f9baa8447b3e7616ae3819f0b8"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:51:19 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:51:19 2026 +0000"
      },
      "message": "Document constructor injection as alternative in migration guide\n\nAdd a \u0027Constructor injection as an alternative to field injection\u0027 section\nto the Tips and lessons learned. This covers cases where the base test case\nclass stores dependencies in final fields set by the constructor, making\nfield injection impractical. Examples are drawn from the blob module\n(WritableBlobTestCase hierarchy).\n"
    },
    {
      "commit": "f81768c25693a1f9baa8447b3e7616ae3819f0b8",
      "tree": "18d38c5064510fe66b186912a6233213ea3930a9",
      "parents": [
        "c259c5812fe33a84cb7d22b2fa78374d63ddfff1"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:46:57 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:46:57 2026 +0000"
      },
      "message": "Refactor TestSetNamespace: extract Params lists to static fields\n\nMove the inline construction of Params instances for both\nattribute.TestSetNamespace and element.TestSetNamespace out of\nOMTestSuiteBuilder.addTests() into static ImmutableList\u003cParams\u003e PARAMS\nfields on the respective TestSetNamespace classes. The builder now\nsimply iterates these lists.\n"
    },
    {
      "commit": "c259c5812fe33a84cb7d22b2fa78374d63ddfff1",
      "tree": "6c561671b0a8fb615cb272251bc4c14b2a5128dc",
      "parents": [
        "be273eba31c7320551a2991197aa2be15f14b137"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:01:35 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 21 11:01:35 2026 +0000"
      },
      "message": "Refactor SetNamespace tests to use records for test parameters\n\nAdd a Params interface to SetNamespaceTestCase declaring accessors for\nthe 6 common test parameters. Each TestSetNamespace subclass (attribute\nand element) defines a nested Params record implementing this interface,\nwith additional subclass-specific fields (declare/owner for attribute,\ndeclare for element).\n\nThis replaces long positional constructor parameter lists with\nself-documenting record types.\n"
    },
    {
      "commit": "be273eba31c7320551a2991197aa2be15f14b137",
      "tree": "fb2cefe023b3fc8ad6df2b6d569972b70912759c",
      "parents": [
        "adff74f7e50db621074c53d724e6222ff995b18f"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 23:33:31 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 23:33:31 2026 +0000"
      },
      "message": "Add tips on primitive type injection with @Named to migration guide\n"
    },
    {
      "commit": "adff74f7e50db621074c53d724e6222ff995b18f",
      "tree": "bd344fe836116eacc5491091fd480c844f97d99a",
      "parents": [
        "bc74d46e13d49bf75f982187016de1421cf71b64"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 23:22:00 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 23:22:00 2026 +0000"
      },
      "message": "Migrate dom-testsuite to matrix test suite framework\n\nReplace DOMTestSuiteBuilder with DOMTestSuite using the new matrix test\nsuite API (InjectorNode, FanOutNode, ParentNode, MatrixTest). Test cases\nnow use Guice @Inject fields instead of constructor parameters, and\nconsumers use JUnit 5 @TestFactory methods.\n"
    },
    {
      "commit": "bc74d46e13d49bf75f982187016de1421cf71b64",
      "tree": "6c8be9830dd0a13892665b9fc0df70eb3e39bf77",
      "parents": [
        "06812f60795e7a2d02f5c096fd0c0af92b2f6f83"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 21:57:03 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 21:57:03 2026 +0000"
      },
      "message": "Replace old-style for loops with enhanced for loops in DOMTestSuiteBuilder\n"
    },
    {
      "commit": "06812f60795e7a2d02f5c096fd0c0af92b2f6f83",
      "tree": "84cc4c6c68604fcb8b7a630be7dd865152bdbb68",
      "parents": [
        "00cabee8b9b2b578d9f17dd870964a16177dc7c1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 20 03:52:56 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 20 21:51:37 2026 +0000"
      },
      "message": "Bump jaxws-rt.version from 4.0.3 to 4.0.4\n\nBumps `jaxws-rt.version` from 4.0.3 to 4.0.4.\n\nUpdates `com.sun.xml.ws:jaxws-rt` from 4.0.3 to 4.0.4\n\nUpdates `com.sun.xml.ws:jaxws-maven-plugin` from 4.0.3 to 4.0.4\n- [Release notes](https://github.com/eclipse-ee4j/metro-jax-ws/releases)\n- [Commits](https://github.com/eclipse-ee4j/metro-jax-ws/compare/4.0.3...4.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: com.sun.xml.ws:jaxws-rt\n  dependency-version: 4.0.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: com.sun.xml.ws:jaxws-maven-plugin\n  dependency-version: 4.0.4\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "00cabee8b9b2b578d9f17dd870964a16177dc7c1",
      "tree": "b10c28950dea509f84e78d813e34d07cb3211bb5",
      "parents": [
        "8f4956ae671d80c7d09d8377df86a185131bc1df"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 23:28:17 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 23:28:17 2026 +0000"
      },
      "message": "Migrate WritableBlobTestSuiteBuilder to MatrixTestNode framework\n\nReplace WritableBlobTestSuiteBuilder with a declarative WritableBlobTestSuite\nfactory using InjectorNode, FanOutNode, ConditionalNode, and MatrixTest.\n\n- WritableBlobTestCase: extends TestCase instead of MatrixTestCase\n- SizeSensitiveWritableBlobTestCase: remove addTestParameter\n- Simple test classes: add @Inject to constructors\n- State-parameterized test classes: add @Inject, remove addTestParameters\n- Size-sensitive test classes: add @Inject and @Named(\"size\")\n- Consumer classes: replace JUnit 3 suite() with JUnit 5 @TestFactory\n- pom.xml: replace junit/junit-vintage-engine with junit-jupiter/guice\n- Delete WritableBlobTestSuiteBuilder\n"
    },
    {
      "commit": "8f4956ae671d80c7d09d8377df86a185131bc1df",
      "tree": "add4d04765d27af8b021c5f1169d9e3833362fd0",
      "parents": [
        "9920686091fe29e844e597f614ca512a50c51469"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 22:55:03 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 22:55:03 2026 +0000"
      },
      "message": "Add ConditionalNode to conditionally include subtrees based on injector state\n"
    },
    {
      "commit": "9920686091fe29e844e597f614ca512a50c51469",
      "tree": "171a874c330883e0d0602b6694dd7b1c69c3a6b6",
      "parents": [
        "4cc69b822852cb87f05e9aac5bdda2708dc35d92"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 22:10:14 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 22:10:14 2026 +0000"
      },
      "message": "Update matrix-testsuite docs to match actual FanOutNode API\n\nReplace references to non-existent ParameterFanOutNode, DimensionFanOutNode,\nand AbstractFanOutNode with FanOutNode, which is the single concrete fan-out\nclass. Update code examples to use the actual FanOutNode constructor signature\n(ImmutableList, Binding, ParameterBinding, child) and remove incorrect @Named\nannotations from injection sites.\n"
    },
    {
      "commit": "4cc69b822852cb87f05e9aac5bdda2708dc35d92",
      "tree": "1786af6883a23560e962a22d9af609f3e1dc5017",
      "parents": [
        "3abaefc3c2534d04e57924a31ed251ce455f8e23"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 21:37:51 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 19 21:37:51 2026 +0000"
      },
      "message": "Remove empty statements\n"
    },
    {
      "commit": "3abaefc3c2534d04e57924a31ed251ce455f8e23",
      "tree": "797e77f68e12eab7f51f43243c1c226210bf54f8",
      "parents": [
        "dbf020385b48422c6e8489b0a70e24dd9c62ead6"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 18 22:26:55 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 18 22:26:55 2026 +0000"
      },
      "message": "Add ADR for Guava usage policy\n"
    },
    {
      "commit": "dbf020385b48422c6e8489b0a70e24dd9c62ead6",
      "tree": "9c07fdc33b93be284e381975efc35a5e5dcecea9",
      "parents": [
        "a3900bab21d189879e9e494ac78eb804a747b3fc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Mar 18 03:52:46 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 18 21:40:38 2026 +0000"
      },
      "message": "Bump springws.version from 5.0.0 to 5.0.1\n\nBumps `springws.version` from 5.0.0 to 5.0.1.\n\nUpdates `org.springframework.ws:spring-ws-core` from 5.0.0 to 5.0.1\n- [Release notes](https://github.com/spring-projects/spring-ws/releases)\n- [Commits](https://github.com/spring-projects/spring-ws/compare/v5.0.0...v5.0.1)\n\nUpdates `org.springframework.ws:spring-ws-security` from 5.0.0 to 5.0.1\n- [Release notes](https://github.com/spring-projects/spring-ws/releases)\n- [Commits](https://github.com/spring-projects/spring-ws/compare/v5.0.0...v5.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework.ws:spring-ws-core\n  dependency-version: 5.0.1\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework.ws:spring-ws-security\n  dependency-version: 5.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": "a3900bab21d189879e9e494ac78eb804a747b3fc",
      "tree": "1c9b7d99c861eb8105a668f50fdbe9cfb4aa15e5",
      "parents": [
        "cb69a676b84885864eaf8186b7a56611c2aea891"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 17 23:02:55 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 17 23:02:55 2026 +0000"
      },
      "message": "Add release note for #771\n"
    },
    {
      "commit": "cb69a676b84885864eaf8186b7a56611c2aea891",
      "tree": "f8593927335039f73329c2cc6b9e62bb9b215315",
      "parents": [
        "9cf9b4c1ba2389c7ae857f95e196e4643aea90dd"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 17 22:20:12 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 22:20:12 2026 +0000"
      },
      "message": "AXIOM-529: Update source repository in DOAP file"
    },
    {
      "commit": "9cf9b4c1ba2389c7ae857f95e196e4643aea90dd",
      "tree": "3103edc4f11d022d8dc1b0f1a1a478fa6d907fc1",
      "parents": [
        "ec5aac44191a5de519f4302c926f41bbfb3542d6"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 17 22:06:02 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 17 22:06:02 2026 +0000"
      },
      "message": "Migrate DialectTestSuite to the new matrix test suite framework\n"
    },
    {
      "commit": "ec5aac44191a5de519f4302c926f41bbfb3542d6",
      "tree": "c2384099e1cc5b8fb97a39cbdf83872434d9a87d",
      "parents": [
        "8b6cf14689b5cc5726912b77b590131256137acf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 03:54:31 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 16 21:14:37 2026 +0000"
      },
      "message": "Bump spring.version from 7.0.5 to 7.0.6\n\nBumps `spring.version` from 7.0.5 to 7.0.6.\n\nUpdates `org.springframework:spring-core` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-context` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-beans` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-web` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-aop` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-oxm` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-test` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\nUpdates `org.springframework:spring-expression` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/spring-projects/spring-framework/releases)\n- [Commits](https://github.com/spring-projects/spring-framework/compare/v7.0.5...v7.0.6)\n\n---\nupdated-dependencies:\n- dependency-name: org.springframework:spring-core\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-context\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-beans\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-web\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-aop\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-oxm\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-test\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.springframework:spring-expression\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8b6cf14689b5cc5726912b77b590131256137acf",
      "tree": "c102fe2045fd9c5ed2236f84ef0f5d31c8f27d06",
      "parents": [
        "161c904017d7d01131eb9eacdc0136c022a5743a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 03:53:39 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 16 21:13:31 2026 +0000"
      },
      "message": "Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0\n\nBumps org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.commons:commons-lang3\n  dependency-version: 3.20.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": "161c904017d7d01131eb9eacdc0136c022a5743a",
      "tree": "f006b5e0c8528e25fe35da07b08a82853dd5fe9e",
      "parents": [
        "f2df19002f250457cfa7f9ed8490c57a09b0ddb7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 16 03:53:31 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Mon Mar 16 21:12:51 2026 +0000"
      },
      "message": "Bump org.jboss.arquillian.junit:arquillian-junit-container\n\nBumps org.jboss.arquillian.junit:arquillian-junit-container from 1.10.0.Final to 1.10.1.Final.\n\n---\nupdated-dependencies:\n- dependency-name: org.jboss.arquillian.junit:arquillian-junit-container\n  dependency-version: 1.10.1.Final\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "f2df19002f250457cfa7f9ed8490c57a09b0ddb7",
      "tree": "8449784045116000f55c5de069dd8d12b7a27193",
      "parents": [
        "369194c3bd1f59fd3924f36d72a1e80eb36efe4e"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 22:10:04 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 22:10:04 2026 +0000"
      },
      "message": "Unify DimensionFanOutNode and ParameterFanOutNode\n"
    },
    {
      "commit": "369194c3bd1f59fd3924f36d72a1e80eb36efe4e",
      "tree": "c732bdde9c9fe3124761f6b8f32f86409edaa394",
      "parents": [
        "61427f74238e4bfa08cb3716ce19c281a56316be"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:30:49 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:30:49 2026 +0000"
      },
      "message": "Remove unnecessary binding annotations\n"
    },
    {
      "commit": "61427f74238e4bfa08cb3716ce19c281a56316be",
      "tree": "4ce4ccc47bd21de1c7ea796ebca5bb3c16dd5b03",
      "parents": [
        "5053e6f6770ad41816bc3805d7d10e0cd84650f1"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:08:53 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:08:53 2026 +0000"
      },
      "message": "Remove unnecessary type argument\n"
    },
    {
      "commit": "5053e6f6770ad41816bc3805d7d10e0cd84650f1",
      "tree": "25e417f4890f971b82c66597640304fb7d19362b",
      "parents": [
        "81ae1fe830507797d2f6ea2c339924a03af3118b"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:05:27 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 21:05:36 2026 +0000"
      },
      "message": "Make the bindings used by DimensionFanOutNode and ParameterFanOutNode configurable\n"
    },
    {
      "commit": "81ae1fe830507797d2f6ea2c339924a03af3118b",
      "tree": "1408d93cf4b8326687f9f7a1de914eaa084091a4",
      "parents": [
        "c89b2893d981ad8ebd52505986b15fb2eac30ec4"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 20:42:16 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 20:42:16 2026 +0000"
      },
      "message": "Fix build failure\n"
    },
    {
      "commit": "c89b2893d981ad8ebd52505986b15fb2eac30ec4",
      "tree": "87f752a4fce8a8fa119b2df8f44b6e39c7efd3f1",
      "parents": [
        "9cc7622198fee7b849a0a59eb2dcf01240f17cd6"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 19:10:58 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 19:10:58 2026 +0000"
      },
      "message": "Make AbstractFanOutNode more flexible\n"
    },
    {
      "commit": "9cc7622198fee7b849a0a59eb2dcf01240f17cd6",
      "tree": "f43d32e0c655bba355f4bb2c73ff47bf4960cc9f",
      "parents": [
        "6c6f30fc8469dfe6e1d50d56192795e277e89ca4"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 18:54:48 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 18:54:48 2026 +0000"
      },
      "message": "Simplify Guice module creation\n"
    },
    {
      "commit": "6c6f30fc8469dfe6e1d50d56192795e277e89ca4",
      "tree": "7b832264c9edd7c9762189105df7cb08abdac8a9",
      "parents": [
        "5ca1e9691a95e14db414fa5db4ca52e4c74d01c8"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 15:53:41 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 15 15:53:41 2026 +0000"
      },
      "message": "Fix old style for loops\n"
    },
    {
      "commit": "5ca1e9691a95e14db414fa5db4ca52e4c74d01c8",
      "tree": "0ef393dfed2b2532be6b4720b78d2c083d02ad6e",
      "parents": [
        "19cead0cd6b4d716aee43991cf430113a9bd1041"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 14:53:18 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 14:53:18 2026 +0000"
      },
      "message": "Replace try/fail/catch pattern with AssertJ assertThatThrownBy in axiom-testsuite\n"
    },
    {
      "commit": "19cead0cd6b4d716aee43991cf430113a9bd1041",
      "tree": "1c430142da4a3d5513ca3c1e3042b705f293708b",
      "parents": [
        "b0271b39dead8b81fdd361b293a25b947be5c4bb"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 14:24:01 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 14:24:01 2026 +0000"
      },
      "message": "Replace assertConsumed with AssertJ assertion on getFirstOMChild\n\nReplace the custom assertConsumed helper in AxiomTestCase with idiomatic\nAssertJ assertThatThrownBy assertions that verify getFirstOMChild throws\nNodeUnavailableException on consumed nodes.\n\nRemove assertConsumed and its unused imports from AxiomTestCase.\n"
    },
    {
      "commit": "b0271b39dead8b81fdd361b293a25b947be5c4bb",
      "tree": "177944c9c79110f49fdb458721d5eb7be2d9c56e",
      "parents": [
        "4965809e554d59b89d8f81a178a40a5f0ea37ca2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Mar 14 11:23:03 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 13:36:20 2026 +0000"
      },
      "message": "Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0\n\nBumps org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.commons:commons-lang3\n  dependency-version: 3.18.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "4965809e554d59b89d8f81a178a40a5f0ea37ca2",
      "tree": "4866f5506f1730959d4682fdd08cfc2df8e22ebc",
      "parents": [
        "18594e4738a0b13d0b1339a51213c1fb30862e3a"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 12:31:48 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 12:31:48 2026 +0000"
      },
      "message": "Add SelectorNode and use it to simplify SpringWSTestSuite\n\nIntroduce SelectorNode, a MatrixTestNode subclass that conditionally\ndelegates to its child based on a parameter value, removing the parameter\nbefore delegation. Use it in SpringWSTestSuite to move the MTOM test\ninside the SOAP version fan-out with a SOAP 1.2 selector, eliminating\nthe separate InjectorNode with a hardcoded SOAPSpec binding.\n"
    },
    {
      "commit": "18594e4738a0b13d0b1339a51213c1fb30862e3a",
      "tree": "6c0f91f3cc0aa43010177b49e1c482edf0a7025d",
      "parents": [
        "5599b76f07a7d05660216fd395eb191813ca262c"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 11:21:57 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 11:21:57 2026 +0000"
      },
      "message": "Use StringUtils.countMatches and AssertJ in TestDeclareDefaultNamespace1/2\n"
    },
    {
      "commit": "5599b76f07a7d05660216fd395eb191813ca262c",
      "tree": "0c76ed2eb9d72c7f06319ac9dc70445a8554a636",
      "parents": [
        "392975082eb470b50a0a86497b3b14589bac33b2"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 09:35:37 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 09:35:37 2026 +0000"
      },
      "message": "Replace getChildrenCount helper with plain AssertJ assertions\n"
    },
    {
      "commit": "392975082eb470b50a0a86497b3b14589bac33b2",
      "tree": "e06aca2bbace57ae2ac21e2afc7b10b247c1c8b4",
      "parents": [
        "9f2bff75cf85cae235f789e69787fe572a56ec4e"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 08:53:13 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 08:53:13 2026 +0000"
      },
      "message": "Migrate axiom-testsuite from Google Truth to AssertJ\n"
    },
    {
      "commit": "9f2bff75cf85cae235f789e69787fe572a56ec4e",
      "tree": "f221d2c9b8ec16a755439135d1c825d386f8fef6",
      "parents": [
        "85fbf193ca0a8222a0581030ef4e153d7cf60b66"
      ],
      "author": {
        "name": "ckaaber",
        "email": "christian_kaaber@hotmail.com",
        "time": "Sat Mar 14 09:24:45 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 14 08:24:45 2026 +0000"
      },
      "message": " Fix namespace prefix bug in _setAttributeValue() (#771)\n\nWhen setting an attribute with a QName that has a namespace,\nAxiomElementMixin._setAttributeValue() incorrectly used\nqname.getLocalPart() as the namespace prefix instead of\nqname.getPrefix(). This caused redundant namespace declarations\nlike xmlns:mustUnderstand\u003d\"...\" on SOAP headers.\n\nThe fix changes line 420 from:\n  new OMNamespaceImpl(qname.getNamespaceURI(), qname.getLocalPart())\nto:\n  new OMNamespaceImpl(qname.getNamespaceURI(), qname.getPrefix())\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Christian Kaaber \u003ccka@edora.dk\u003e"
    },
    {
      "commit": "85fbf193ca0a8222a0581030ef4e153d7cf60b66",
      "tree": "d1650552d4347edf5dab5b163265b263d9bd3a34",
      "parents": [
        "9ecd50189271930e8432bdde3b656a241bf0c929"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 12 03:53:35 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 08:18:07 2026 +0000"
      },
      "message": "Bump org.mockito:mockito-core from 5.22.0 to 5.23.0\n\nBumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0.\n- [Release notes](https://github.com/mockito/mockito/releases)\n- [Commits](https://github.com/mockito/mockito/compare/v5.22.0...v5.23.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.mockito:mockito-core\n  dependency-version: 5.23.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9ecd50189271930e8432bdde3b656a241bf0c929",
      "tree": "68e0541d41647732a969a7156051c15bebc63279",
      "parents": [
        "a115bdc4325e8872293444e1dd682f81932cfbc6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 13 03:52:54 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sat Mar 14 08:14:03 2026 +0000"
      },
      "message": "Bump maven.version from 3.9.13 to 3.9.14\n\nBumps `maven.version` from 3.9.13 to 3.9.14.\n\nUpdates `org.apache.maven:maven-plugin-api` from 3.9.13 to 3.9.14\n- [Release notes](https://github.com/apache/maven/releases)\n- [Commits](https://github.com/apache/maven/compare/maven-3.9.13...maven-3.9.14)\n\nUpdates `org.apache.maven:maven-core` from 3.9.13 to 3.9.14\n\nUpdates `org.apache.maven:maven-artifact` from 3.9.13 to 3.9.14\n\nUpdates `org.apache.maven:maven-model` from 3.9.13 to 3.9.14\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven:maven-plugin-api\n  dependency-version: 3.9.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-core\n  dependency-version: 3.9.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-artifact\n  dependency-version: 3.9.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-model\n  dependency-version: 3.9.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a115bdc4325e8872293444e1dd682f81932cfbc6",
      "tree": "2fc842d1b061926b67f631a3e47a44b64bc9b9a3",
      "parents": [
        "589126a653a43608e74ca26486d6e93bbff81d0a"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 23:09:45 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 23:09:45 2026 +0000"
      },
      "message": "Migrate spring-ws-tests to JUnit 5 and AssertJ\n"
    },
    {
      "commit": "589126a653a43608e74ca26486d6e93bbff81d0a",
      "tree": "8d7c4fdb3f5d9cb8ca68fd9980b223df6211d663",
      "parents": [
        "266f7c03b5335a3df128d8965e3e6e274efc406e"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 23:03:32 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 23:03:32 2026 +0000"
      },
      "message": "Migrate spring-ws-testsuite from MatrixTestSuiteBuilder to MatrixTestNode\n"
    },
    {
      "commit": "266f7c03b5335a3df128d8965e3e6e274efc406e",
      "tree": "101a005e4e3f115e2da5956c57e70fc1012f4924",
      "parents": [
        "4065199feaab4897b719ff03f90a9314745fade2"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 22:18:00 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Fri Mar 13 22:18:00 2026 +0000"
      },
      "message": "Refactor MatrixTestNode hierarchy: single-child fan-out/injector nodes, concrete ParentNode\n\nAbstractFanOutNode and InjectorNode now extend MatrixTestNode directly and\nhold exactly one child node. ParentNode becomes a final concrete class that\ngroups a list of children without injecting anything or adding parameters.\nA varargs constructor is provided for convenience.\n\nAll call sites and documentation (README.md, migration.md) updated\naccordingly.\n"
    },
    {
      "commit": "4065199feaab4897b719ff03f90a9314745fade2",
      "tree": "da83e78529a303af69a8cdd3c6076ae119a94e9e",
      "parents": [
        "0a8a6ca7e79ac0dbc28d616bb021ae18743a0ba0"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 12 23:41:26 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Thu Mar 12 23:41:26 2026 +0000"
      },
      "message": "Refactor SpringWSTestSuiteBuilder to build ScenarioConfig list and inline addScenarioTests\n"
    },
    {
      "commit": "0a8a6ca7e79ac0dbc28d616bb021ae18743a0ba0",
      "tree": "578a31c78c41b32fc10f10c653b5809ce3e08a29",
      "parents": [
        "06a96b58724203483079a869d3a7bd8cba52b772"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 23:12:02 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 23:12:02 2026 +0000"
      },
      "message": "Refactor SpringWSTestSuiteBuilder to use a loop over SOAPSpec instances\n"
    },
    {
      "commit": "06a96b58724203483079a869d3a7bd8cba52b772",
      "tree": "881889956ad3c31975ab7e29a9888769aad4a9a6",
      "parents": [
        "27595ae9c59318c1d53f83df4d844b3dacfdd439"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 23:02:21 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 23:02:21 2026 +0000"
      },
      "message": "Refactor ScenarioConfig to implement Dimension interface\n"
    },
    {
      "commit": "27595ae9c59318c1d53f83df4d844b3dacfdd439",
      "tree": "a3f5948fe702448b299aee3fe89dcfb4f0c8fcc8",
      "parents": [
        "4ba0dace1c0b7fb3fc3e391fee9ac5703c99d43d"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 22:43:26 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Wed Mar 11 22:43:26 2026 +0000"
      },
      "message": "Migrate CompareTest to the new matrix test suite framework\n"
    },
    {
      "commit": "4ba0dace1c0b7fb3fc3e391fee9ac5703c99d43d",
      "tree": "818311676846ddbe12aadfb29df5503d41511301",
      "parents": [
        "3e48b5bb6fa45fe5cab385d497450c4d93cfd935"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 09 03:52:55 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 10 22:38:12 2026 +0000"
      },
      "message": "Bump maven.version from 3.9.12 to 3.9.13\n\nBumps `maven.version` from 3.9.12 to 3.9.13.\n\nUpdates `org.apache.maven:maven-plugin-api` from 3.9.12 to 3.9.13\n- [Release notes](https://github.com/apache/maven/releases)\n- [Commits](https://github.com/apache/maven/compare/maven-3.9.12...maven-3.9.13)\n\nUpdates `org.apache.maven:maven-core` from 3.9.12 to 3.9.13\n\nUpdates `org.apache.maven:maven-artifact` from 3.9.12 to 3.9.13\n\nUpdates `org.apache.maven:maven-model` from 3.9.12 to 3.9.13\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven:maven-plugin-api\n  dependency-version: 3.9.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-core\n  dependency-version: 3.9.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-artifact\n  dependency-version: 3.9.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.maven:maven-model\n  dependency-version: 3.9.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3e48b5bb6fa45fe5cab385d497450c4d93cfd935",
      "tree": "07916366342d1045ace259d825db396034d0f995",
      "parents": [
        "86c1a641c0fef0a6142d661f492c60b61e3d525b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 09 03:53:44 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 10 22:37:46 2026 +0000"
      },
      "message": "Bump commons-logging:commons-logging from 1.3.5 to 1.3.6\n\nBumps [commons-logging:commons-logging](https://github.com/apache/commons-logging) from 1.3.5 to 1.3.6.\n- [Changelog](https://github.com/apache/commons-logging/blob/master/RELEASE-NOTES.txt)\n- [Commits](https://github.com/apache/commons-logging/compare/rel/commons-logging-1.3.5...rel/commons-logging-1.3.6)\n\n---\nupdated-dependencies:\n- dependency-name: commons-logging:commons-logging\n  dependency-version: 1.3.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "86c1a641c0fef0a6142d661f492c60b61e3d525b",
      "tree": "aa44beff7787b9b8f730fd5579606fbeb0996278",
      "parents": [
        "396e51cd5e7f7187a29ec3a48195522504b5aee1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 03:53:32 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Tue Mar 10 22:37:24 2026 +0000"
      },
      "message": "Bump org.eclipse.platform:org.eclipse.osgi from 3.24.0 to 3.24.100\n\nBumps [org.eclipse.platform:org.eclipse.osgi](https://github.com/eclipse-equinox/equinox) from 3.24.0 to 3.24.100.\n- [Commits](https://github.com/eclipse-equinox/equinox/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.platform:org.eclipse.osgi\n  dependency-version: 3.24.100\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "396e51cd5e7f7187a29ec3a48195522504b5aee1",
      "tree": "96f3e088bcec5976025d0566c771cd5c86e586e3",
      "parents": [
        "1bad1bd2416f0a47bf19f80b4e8c4c7be3e0c78d"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 23:11:03 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 23:11:03 2026 +0000"
      },
      "message": "Migrate StreamSourceToOMResultTest to the new matrix test framework\n"
    },
    {
      "commit": "1bad1bd2416f0a47bf19f80b4e8c4c7be3e0c78d",
      "tree": "00c91a9926a69217e84de5e978c3783fd9406a2c",
      "parents": [
        "a41c7c2904f815822f38033ba9a6776e9049983f"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 18:28:28 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 18:28:28 2026 +0000"
      },
      "message": "Migrate OMDOMTestSuiteBuilder to new matrix test framework\n\nReplace OMDOMTestSuiteBuilder (JUnit 3 MatrixTestSuiteBuilder) with\nOMDOMTestSuite using InjectorNode/ParameterFanOutNode/MatrixTest and\nGuice dependency injection.\n\n- Create OMDOMTestSuite with static create(DOMMetaFactory) method\n- Create OMDOMTestCase base class with @Inject DOMMetaFactory field\n- Update all 28 omdom test cases to extend OMDOMTestCase, removing\n  constructors and DOMMetaFactory casts\n- Migrate OMDOMImplementationTest to JUnit 5 @TestFactory\n- Add junit-jupiter dependency to axiom-dom\n- Delete OMDOMTestSuiteBuilder\n"
    },
    {
      "commit": "a41c7c2904f815822f38033ba9a6776e9049983f",
      "tree": "e5d6547a2c100f79c4c1e7aca7ef575a22de2b95",
      "parents": [
        "afe297c154d950ac778e216cf74d1cf1f2caf25d"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 13:19:59 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 13:19:59 2026 +0000"
      },
      "message": "Migrate XMLReaderTestSuiteBuilder to MatrixTestNode framework\n\n- Replace XMLReaderTestSuiteBuilder with XMLReaderTestSuite factory using\n  InjectorNode and ParameterFanOutNode\n- Convert TestGetSetFeature from MatrixTestCase to TestCase with @Inject fields\n- Convert ValidationTest and AbstractXMLReaderTest consumers from JUnit 3\n  static suite() to JUnit 5 @TestFactory\n- Add junit-jupiter and guice test dependencies to axiom-api\n- Delete old XMLReaderTestSuiteBuilder class\n"
    },
    {
      "commit": "afe297c154d950ac778e216cf74d1cf1f2caf25d",
      "tree": "0416dd447965437d659b8b8722738a43b51ff505",
      "parents": [
        "380f8f64723e69e9702f6875bf8eace417f8236e"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 12:17:29 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 12:17:29 2026 +0000"
      },
      "message": "Migrate core-streams tests from JUnit 4 to JUnit 5 and from Google Truth to AssertJ\n"
    },
    {
      "commit": "380f8f64723e69e9702f6875bf8eace417f8236e",
      "tree": "15c622ed62b4ade80361d33e7605f6f865bc0ddf",
      "parents": [
        "d148a78159206e0b7535c20496a479f29c88b4a6"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 12:10:31 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 12:10:31 2026 +0000"
      },
      "message": "Migrate StAXPivotTransformerTest to MatrixTestNode (JUnit 5)\n"
    },
    {
      "commit": "d148a78159206e0b7535c20496a479f29c88b4a6",
      "tree": "20572463a9dd68b5f9ca76cdabd9bde131ef1a3e",
      "parents": [
        "f55207d708abfca7d4af93c4beedca275e2d7c86"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:45:53 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:45:53 2026 +0000"
      },
      "message": "Migrate SerializerConformanceTest to MatrixTestNode framework\n\nSplit the self-contained SerializerConformanceTest into:\n- SerializerConformanceTestCase: extends TestCase, uses @Inject for XMLSample\n- SerializerConformanceTest: JUnit 5 @TestFactory with ParameterFanOutNode\n\nAdded junit-jupiter, guice, and multiton dependencies to core-streams pom.xml.\n\nUpdated migration.md: suite class must be named *Test (not *TestSuite) so that\nMaven Surefire discovers it.\n"
    },
    {
      "commit": "f55207d708abfca7d4af93c4beedca275e2d7c86",
      "tree": "510984ef82600af0809b3d2d011c585fba68df8d",
      "parents": [
        "b63ff4731a392d594fc425b29d55af4fbae8786c"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:18:22 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:18:22 2026 +0000"
      },
      "message": "Fix self-contained test migration guide: non-static @TestFactory, two-class split, *TestSuite naming\n\n- @TestFactory method must not be static (JUnit 5 requirement)\n- Split single class into *TestCase (test logic) and *TestSuite (JUnit 5 consumer)\n- Use *TestSuite suffix (not *Test) for the consumer class so Maven Surefire\n  doesn\u0027t run it as a JUnit 3/4 test\n- Use *TestCase suffix for the test logic class for the same reason\n- Updated intro, steps, code examples, and checklist accordingly\n"
    },
    {
      "commit": "b63ff4731a392d594fc425b29d55af4fbae8786c",
      "tree": "dd68da7f8c91404f23c7463fa4eb8b8a5c111e2a",
      "parents": [
        "25df5a0f7e444c56d9fe86fdb2f15610467e5c99"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:02:34 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 11:02:34 2026 +0000"
      },
      "message": "Rename @TestFactory methods to tests() by convention\n\nUpdate all @TestFactory methods to use the conventional name \u0027tests\u0027 and\ncall this out explicitly in the migration guide.\n"
    },
    {
      "commit": "25df5a0f7e444c56d9fe86fdb2f15610467e5c99",
      "tree": "b5986adb2e6a4d3be28b7fde4c98623d6b8f8534",
      "parents": [
        "6accf741db9df705d3c5c40f056b6ddeda49582d"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:29:51 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:31:51 2026 +0000"
      },
      "message": "Migrate components/blob from Truth to AssertJ\n"
    },
    {
      "commit": "6accf741db9df705d3c5c40f056b6ddeda49582d",
      "tree": "6017f1cd3fed08f8bbba2108c09d04d15692f58b",
      "parents": [
        "fa21c8056c77553791c9fd55a4f6f153adaa9de4"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:18:57 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:18:57 2026 +0000"
      },
      "message": "Upgrade wss4j-tests to WSS4J 4.0.1\n\nMigrate from the legacy org.apache.ws.security:wss4j:1.6.19 to\norg.apache.wss4j:wss4j-ws-security-dom:4.0.1. This includes:\n\n- Updated Maven dependency coordinates and version\n- Migrated Java imports and API usage to the new WSS4J 4.x API\n- Updated crypto.properties to use new property prefix\n- Replaced deprecated DSA/DES key algorithms with RSA/AES\n"
    },
    {
      "commit": "fa21c8056c77553791c9fd55a4f6f153adaa9de4",
      "tree": "b416b44f52649a5a83811302420ee58b29e99997",
      "parents": [
        "bc85f7d332c623f67abf7d7c264f67a12614e3e7"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:01:33 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 10:01:33 2026 +0000"
      },
      "message": "Migrate wss4j-tests from JUnit 4/Truth to JUnit 5/AssertJ\n"
    },
    {
      "commit": "bc85f7d332c623f67abf7d7c264f67a12614e3e7",
      "tree": "583471ffd323386a50bffd4b83bdd9d9879199eb",
      "parents": [
        "bd00384348700089bd8f1591e96832f7b61bb89d"
      ],
      "author": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 09:57:30 2026 +0000"
      },
      "committer": {
        "name": "Andreas Veithen-Knowles",
        "email": "andreas.veithen@gmail.com",
        "time": "Sun Mar 08 09:57:30 2026 +0000"
      },
      "message": "Enable test case that is now passing\n"
    }
  ],
  "next": "bd00384348700089bd8f1591e96832f7b61bb89d"
}
