)]}'
{
  "log": [
    {
      "commit": "286739e356c69badf698f0f735b30607bec4f25e",
      "tree": "32e99fcd20483fd18d1d717ec785d4b58ac5ea17",
      "parents": [
        "7fffa89cbdf10eabc466c3053bf9e7bee29a9876"
      ],
      "author": {
        "name": "kevan Jahanshahi",
        "email": "kevan@jahia.com",
        "time": "Thu Nov 12 09:14:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 12 09:14:27 2026 +0100"
      },
      "message": "FELIX-6812 Follow-up: escape the pid in the service.pid filter (#563)\n\n* FELIX-6812 Follow-up: escape the pid in the service.pid filter\n\nFELIX-6812 replaced getConfiguration(pid, \"?\") with a listConfigurations call,\nand it builds the filter by concatenating the pid. A pid is not a filter-safe\nvalue, and the class already escapes one in findExistingConfiguration.\n\nA pid holding an asterisk builds a substring filter. listConfigurations then\nreturns configurations the event was not about, and ConfigInstaller writes the\nfirst of them back to that other configuration\u0027s file. A pid holding a\nparenthesis throws InvalidSyntaxException instead, which the catch reports as a\nfailure to save, so the configuration is never written back.\n\nescapeFilterValue left the backslash alone, although the OSGi filter grammar\nreserves it. A pid holding a backslash therefore stayed ambiguous after the\nescaping. The backslash is escaped first, or the escapes added after it would be\nescaped a second time.\n\nThe method now matches literals rather than patterns. It compiled four patterns\nper call, and FELIX-6812 moved it from findExistingConfiguration, called once per\nfile install, to doConfigurationEvent, called for every configuration event.\n\nTwo tests raise CM_UPDATED for a pid holding an asterisk and for a pid holding a\nbackslash, and each one fails when its escape is removed.\n\n* FELIX-6812 Follow-up: the two tests the change left green and empty\n\nFELIX-6812 moved the CM_UPDATED path from getConfiguration to listConfigurations,\nand two tests kept the expectations of the older call. Neither test calls\nEasyMock.verify, so an expectation nothing consumes fails nothing.\n\ntestUseExistingConfigAndObserveCMDeleted expects listConfigurations for any\nargument and answers null. The handler then returns before it reads anything, so\nthe test asserts nothing at all while it passes. It now expects the filter the\nhandler builds and answers with a configuration.\n\ntestUseExistingConfigWithFileinstallFilenameAndObserveCMDeleted still expects\ngetConfiguration and update. The CM_UPDATED path writes the file and calls no\nmethod on the configuration, and getConfiguration is reachable from setConfig\nonly, which this test never calls.\n\nBoth tests verify their mocks now, which is what makes an expectation\nload-bearing. The dead expectations go, and the Capture that fed update goes\nwith them. Adding the verify call before removing the expectations fails on\nConfiguration.update, which is the measurement behind this commit."
    },
    {
      "commit": "7fffa89cbdf10eabc466c3053bf9e7bee29a9876",
      "tree": "06c44890ef4cbc0a7d67f495680fa1d36f04c399",
      "parents": [
        "0b7e9c4dbb02a57f458ad29725df1ed7c404376c",
        "493cfa5a62383579e8256f5f4602b7076f30438b"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:39:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 10:39:35 2026 +0100"
      },
      "message": "Merge pull request #593 from paulrutter/FELIX-6872-tag-bundles\n\nFELIX-6872 - Dependency Manager: tag every released bundle"
    },
    {
      "commit": "493cfa5a62383579e8256f5f4602b7076f30438b",
      "tree": "06c44890ef4cbc0a7d67f495680fa1d36f04c399",
      "parents": [
        "0b7e9c4dbb02a57f458ad29725df1ed7c404376c"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:36:48 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:36:48 2026 +0100"
      },
      "message": "FELIX-6872 - Dependency Manager: tag every released bundle\n\nThe release plugin only makes one tag for the whole reactor\n(dependencymanager-parent-x.y.z). While performing a release, also tag each\nreleased bundle as \u003cartifactId\u003e-\u003cversion\u003e on the release commit and push the\ntag, like the earlier releases did.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0b7e9c4dbb02a57f458ad29725df1ed7c404376c",
      "tree": "5728f3e38adbe5364e0d8ff3f874ba8e61fa297e",
      "parents": [
        "d9b37c64f941244a99477c4ad5dab02f69360e17"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:24:45 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:24:45 2026 +0100"
      },
      "message": "FELIX-6872 - Dependency Manager: do not fail the release on javadoc doclint errors\n\nThe existing javadoc has doclint errors (@return on non methods, unescaped\nHTML), which made release:perform fail while building the javadoc jars.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d9b37c64f941244a99477c4ad5dab02f69360e17",
      "tree": "1370e957045f0e9be555992d0ddd6a6ae268e240",
      "parents": [
        "67d18bd30469189df922dd8127406cc2f385c9c2"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Thu Nov 05 10:13:30 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Thu Nov 05 10:13:30 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "67d18bd30469189df922dd8127406cc2f385c9c2",
      "tree": "6025b7d978ef76252804fa64b057ed89ce787c5a",
      "parents": [
        "8b697a7f36c808ad4c2738480e46857237c69d97"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Thu Nov 05 10:13:25 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Thu Nov 05 10:13:25 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release dependencymanager-parent-1.0.0\n"
    },
    {
      "commit": "8b697a7f36c808ad4c2738480e46857237c69d97",
      "tree": "4203b8a5a6fec5c990ab370116be84e13d8f02f5",
      "parents": [
        "9290e7816f892e80d784f5d7cfbf256d5451c0ce"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:02:17 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 10:02:17 2026 +0100"
      },
      "message": "FELIX-6872 - Dependency Manager: use the platform line separator in the shell test\n\nDMCommandTest compared the output of println against a hard coded \"\\n\", so\nit failed on Windows where the line separator is \"\\r\\n\".\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "9290e7816f892e80d784f5d7cfbf256d5451c0ce",
      "tree": "b734d330b289da970ad84b5a01adea3efd1eb579",
      "parents": [
        "d3fd79279cd2c57170fee0c471e83abd7b426a2b"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 09:57:06 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 09:57:06 2026 +0100"
      },
      "message": "FELIX-6872 - Dependency Manager: make the build releasable with the release plugin\n\nThe release plugin only rewrites a version property that is defined in the\nsame pom as the dependency using it. The dependencymanager*.version\nproperties lived in the parent pom, so release:prepare failed with\n\"The version could not be updated: ${dependencymanager.version}\".\n\nUse literal versions for the reactor dependencies, and define the annotation\nversion property in the two poms that use it in the bnd plugin path.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d3fd79279cd2c57170fee0c471e83abd7b426a2b",
      "tree": "fb0cde995bba8d147d29e23deb0b7f650306cdf1",
      "parents": [
        "5ae5f25d72e36fb40e26762c5b0906f9fa16c786",
        "3cf8d089489a07e3332b77430e5ab134a0f36867"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Nov 05 09:47:03 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 09:47:03 2026 +0100"
      },
      "message": "Merge pull request #581 from paulrutter/FELIX-6872-dependencymanager-maven\n\n FELIX-6872 dependencymanager JDK 25 + maven"
    },
    {
      "commit": "3cf8d089489a07e3332b77430e5ab134a0f36867",
      "tree": "fb0cde995bba8d147d29e23deb0b7f650306cdf1",
      "parents": [
        "dcea32835dd834db1c082f7823bb31381df716df"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 08:46:23 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 08:46:23 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: give the parent pom its own name\n\nThe parent and the core bundle were both named \"Apache Felix Dependency Manager\",\nwhich made the build output ambiguous.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "dcea32835dd834db1c082f7823bb31381df716df",
      "tree": "dc3282e0b9f73655ca46870837594e3d5672a055",
      "parents": [
        "61a44ba4a7c9c566bef10cea6dc258b422156354"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 07:59:17 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 07:59:17 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: mention the Maven build in the release notes\n\nAdd a line to the new changelog entries saying that the Gradle build has been\nreplaced by a Maven build and that each bundle now has its own version and tag.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "61a44ba4a7c9c566bef10cea6dc258b422156354",
      "tree": "c9f020a2e0483f1d026092e06ca4c573e10521c1",
      "parents": [
        "c949bed0c38be3fd7db0fba5a1d33fbc667163f5",
        "5ae5f25d72e36fb40e26762c5b0906f9fa16c786"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 07:55:18 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Thu Nov 05 07:55:18 2026 +0000"
      },
      "message": "Merge remote-tracking branch \u0027origin/master\u0027 into sync581\n"
    },
    {
      "commit": "5ae5f25d72e36fb40e26762c5b0906f9fa16c786",
      "tree": "c007299f04aed2c9b3ec2e57d10839a74ec09373",
      "parents": [
        "1276ae9dd920185118d524e36efa89eb07fe909a",
        "9d3e6815d4d0ca962c6ae140296b6acb731e6816"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Tue Nov 03 19:57:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 03 19:57:34 2026 +0100"
      },
      "message": "Merge pull request #590 from siddiqueirshad/fix-typos-in-comments\n\nFix typos in comments and Javadoc across modules"
    },
    {
      "commit": "9d3e6815d4d0ca962c6ae140296b6acb731e6816",
      "tree": "c007299f04aed2c9b3ec2e57d10839a74ec09373",
      "parents": [
        "1276ae9dd920185118d524e36efa89eb07fe909a"
      ],
      "author": {
        "name": "siddiqueirshad",
        "email": "mohdirshad1306@gmail.com",
        "time": "Tue Nov 03 21:43:59 2026 +0530"
      },
      "committer": {
        "name": "siddiqueirshad",
        "email": "mohdirshad1306@gmail.com",
        "time": "Tue Nov 03 21:43:59 2026 +0530"
      },
      "message": "Fix typos in comments and Javadoc across modules\n\nSigned-off-by: siddiqueirshad \u003cmohdirshad1306@gmail.com\u003e\n"
    },
    {
      "commit": "1276ae9dd920185118d524e36efa89eb07fe909a",
      "tree": "f7f393e9e7780db9920327a18312af373e50739e",
      "parents": [
        "0c2a9401bc5796093d1222d1afea9780419528f8"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:26:04 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:26:04 2026 +0100"
      },
      "message": "FELIX-6875 - Set up EmbeddedCronScheduler before scheduling its first run\n\nThe constructor scheduled itself on the executor and only then stored the\nscheduler thread name. With an initial delay of 0 (as the tests use) the first\nrun can start before the constructor has returned, and run() then calls\nThread.setName(null). The NullPointerException is swallowed by the executor and\ncancels the periodic task, so no cron job is ever fired. That is what made\nEmbeddedCronSchedulerTest.checkScheduledPeriodsOverlap fail in CI with zero\nexecutions. Production uses an initial delay of 3 seconds, which hides it.\n\nStore the name first and schedule last, and add a test that runs the task inside\nscheduleAtFixedRate: it fails with \"name cannot be null\" before the change.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "c949bed0c38be3fd7db0fba5a1d33fbc667163f5",
      "tree": "4082bf97b7025829465f2c5e5db4f4e10a971f14",
      "parents": [
        "7176482d02f598c575565eaae723b39e426a6c20",
        "0c2a9401bc5796093d1222d1afea9780419528f8"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:21:26 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:21:26 2026 +0100"
      },
      "message": "Merge remote-tracking branch \u0027origin/master\u0027 into sync581\n\n# Conflicts:\n#\t.github/workflows/maven-ci.yml\n"
    },
    {
      "commit": "0c2a9401bc5796093d1222d1afea9780419528f8",
      "tree": "bf97a929411066e2ee64f1bb9ed498522a3ccd14",
      "parents": [
        "f19890cabcde9e8e0538152055349f8db5136c40",
        "0b3c5d9a3fa75f184c21cd9cf51365938ba95e2f"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:19:15 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 21:19:15 2026 +0100"
      },
      "message": "Merge pull request #589 from apache/FELIX-6875-build-unbuilt-modules\n\nFELIX-6875 - Build and test the modules CI never covered on JDK 21 and 25"
    },
    {
      "commit": "0b3c5d9a3fa75f184c21cd9cf51365938ba95e2f",
      "tree": "bf97a929411066e2ee64f1bb9ed498522a3ccd14",
      "parents": [
        "c088e4f75ac7b95f70d836751e86a4ee10efe598"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:10:03 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:10:03 2026 +0100"
      },
      "message": "FELIX-6875 - Pin the maven-bundle-plugin version in bundlerepository.osgi-ct\n\nRemoving the 2.3.4 pin left the plugin without a version, which Maven warns\nabout and resolves to whatever is newest on the day. Pin 6.2.0, the release CI\nresolved when the module passed on JDK 17, 21 and 25.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "c088e4f75ac7b95f70d836751e86a4ee10efe598",
      "tree": "0ff3e82540ae2ca532fe4f9647cf7ef0d8f30d61",
      "parents": [
        "b9e2fd2f3ac70089adb631a7541e7e6fad2e682d"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:03:24 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 21:03:24 2026 +0100"
      },
      "message": "FELIX-6875 - Wait for the monitor\u0027s services in HealthCheckMonitorIT\n\nThe monitor publishes Healthy, Unhealthy and SystemReady from a run that repeats\nevery second, so after a health check is registered they appear up to a second\nlater. The test registered the monitor, slept, registered the health check and\nasserted right away, which failed on a slower runner (testSystemReady: expected\none Healthy service, found none).\n\nWait up to ten seconds for the service before asserting on it.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "b9e2fd2f3ac70089adb631a7541e7e6fad2e682d",
      "tree": "089ee99b451d0e79d9a574ff64a56cc6af75c700",
      "parents": [
        "ec0455ae1b6b82263d8ed616e5b9e630cb9c9a4c"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:56:16 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:56:16 2026 +0100"
      },
      "message": "FELIX-6875 - Do not race the third fire in EmbeddedCronSchedulerTest\n\ncheckScheduledPeriodsOverlap slept a fixed 3000ms and expected the job\u0027s second\nexecution, due at the third full second after the first fire, to have started.\nDepending on the sub-second time the test starts, that fire lands within a few\nmilliseconds of the assertion, as it did on JDK 25 in CI (1 execution instead\nof 2).\n\nWait for the second execution, then wait 1000ms for the fire that has to be\nskipped while it is still running, and assert exactly two.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ec0455ae1b6b82263d8ed616e5b9e630cb9c9a4c",
      "tree": "2ab2a0cf2cfbf0aa1e79882b15b7e858b415c8f4",
      "parents": [
        "8342e800fd9e1a26ce5bde4e625448d1e06130ab"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:42:13 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:48:12 2026 +0100"
      },
      "message": "FELIX-6875 - Build the modules CI never covered\n\nAdd the modules moved off their old parents and fixed in this change to the\nCI workflow, each behind its own paths-filter group, so a change to one of\nthem is built and tested on the full JDK matrix. They are not in a reactor and\npin released Felix bundles, so they are built one by one with clean verify.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "8342e800fd9e1a26ce5bde4e625448d1e06130ab",
      "tree": "ffa939595a7ce502cfd5fd2e739c0755eb534e75",
      "parents": [
        "86a50bf590674d908e3392cdddacb512173c4270"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:39:09 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:48:11 2026 +0100"
      },
      "message": "FELIX-6875 - Use Mockito 5.18.0 in healthcheck/api\n\nhealthcheck/api declared mockito-core 1.9.5, which defines classes through cglib\nand is refused on JDK 17 and later. It was not in the previous Mockito change\nbecause the module did not get far enough to run its tests: its bnd plugin\nfailed first. HealthCheckMetadataTest then failed inside org.mockito.cglib.\n\nUse 5.18.0 as in the other modules, and replace MockitoAnnotations.initMocks,\ndeprecated since Mockito 3.4, with openMocks.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "86a50bf590674d908e3392cdddacb512173c4270",
      "tree": "4340a88ce92d23d098079ea61905b727f6bbfe73",
      "parents": [
        "e36a7c4935834647030c9a29de534589e70d93e5"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:21:06 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:48:11 2026 +0100"
      },
      "message": "FELIX-6875 - Test an invalid temp directory in fileinstall through its own setting\n\nDirectoryWatcherTest.testInvalidTempDir set the java.io.tmpdir system property\nat runtime and expected DirectoryWatcher to fail creating its temp directory.\nSince JDK 12 that property is read once when the JVM starts, so changing it in\nthe test has no effect: the temp directory was created in the real location and\nthe test failed with \"Expected an IllegalStateException\", on its own as well as\nwith the rest of the class.\n\nPoint File Install at the invalid directory through felix.fileinstall.tmpdir\ninstead, which is how a user configures it. That goes through prepareDir, which\nthrows a RuntimeException (\"Cannot create folder\"), so the test now expects that\nand checks the message. It also makes the directory writable again afterwards so\nthat it can be cleaned.\n\nFailing to create the folder is logged, and the logger asks the BundleContext for a\nLogService, which the mock did not expect, so the test stubs that call too.\n\nLike before, this relies on the directory not being writable, which does not\nhold when the tests run as root.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e36a7c4935834647030c9a29de534589e70d93e5",
      "tree": "c7b463d431850d3612c60097d7db35b64c294603",
      "parents": [
        "7beea5292bce1bb4a8105d1b5df0e4272367a97c"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:34 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:48:11 2026 +0100"
      },
      "message": "FELIX-6875 - Keep matching a null argument in HttpRequestsCheckTest\n\nThe test stubs performRequest with any(HttpRequestsCheckTrustedCerts.class), and\ncheck() is called with a null trustedCerts. In Mockito 1.x any(Class) matched\nnull; since Mockito 2 it only matches instances. After the upgrade the stub no\nlonger applied, so the real HTTP request ran and testSimpleRequestSpec and\ntestSimpleRequestSpecWithContentCheck got WARN instead of OK.\n\nnullable(Class) matches both, which is what the test meant.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7beea5292bce1bb4a8105d1b5df0e4272367a97c",
      "tree": "d26b35b130a55b0a947a044672b265307e318e01",
      "parents": [
        "fcedc9f4785a14b0f0b80a8c28b7e95019c681ae"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:33 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:48:11 2026 +0100"
      },
      "message": "FELIX-6875 - Use a bnd-maven-plugin and baseline plugin that run on current JDKs in healthcheck/api\n\nhealthcheck/api failed on JDK 17 and later in two places: bnd-maven-plugin 4.1.0\nand the baseline goal of maven-bundle-plugin 4.1.0 both throw a\nConcurrentModificationException. Use bnd-maven-plugin 7.1.0 and\nmaven-bundle-plugin 5.1.8, the version cm.json already runs its baseline with.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "fcedc9f4785a14b0f0b80a8c28b7e95019c681ae",
      "tree": "b44eb326cdcf66a71eddcd4a2be6c19072390334",
      "parents": [
        "792a6cce82f97103fa8ad230cd7dc20fe64b320d"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:32 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:32 2026 +0100"
      },
      "message": "FELIX-6875 - Run healthcheck/core\u0027s integration tests on the framework 8.0.0 release\n\nhealthcheck/core pinned framework 7.0.5 for its pax-exam tests, and its\nHealthCheckServletIT errored on JDK 21. Use 8.0.0, the latest release, as\nthe other modules do.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "792a6cce82f97103fa8ad230cd7dc20fe64b320d",
      "tree": "2048b5ecf77f68d61d419b380e51e1c555d528dd",
      "parents": [
        "05887c12ef2b3cb0d8fd88feab745364d228c0dc"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:30 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:30 2026 +0100"
      },
      "message": "FELIX-6875 - Use a Mockito that can mock on current JDKs\n\nmockito-all 1.x and mockito-core 1.9.5 define classes through cglib, which needs\nClassLoader.defineClass and is refused on JDK 17 and later (InaccessibleObject\nException). Mockito 5.17.0 and earlier 5.x do not work on JVM 25 either, the same\nreason gogo-parent already uses 5.18.0.\n\nMove to mockito-core 5.18.0, and rename the org.mockito.Matchers imports, removed\nin Mockito 4, to ArgumentMatchers.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "05887c12ef2b3cb0d8fd88feab745364d228c0dc",
      "tree": "c049ff97f146c4d0c5fe63ba474c2881223ed911",
      "parents": [
        "f19890cabcde9e8e0538152055349f8db5136c40"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:29 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 20:20:29 2026 +0100"
      },
      "message": "FELIX-6875 - Move the modules CI never built off their old parents\n\nThese 18 modules were on felix-parent 2.1 to 7 and failed on JDK 21 and 25 for\nreasons that have nothing to do with their source:\n\n  - felix-parent 5 and 6 compile with --release 6/7, which JDK 20 and 21 removed\n    (metatype, coordinator, healthcheck/api, healthcheck/annotation)\n  - felix-parent 3 runs a JavaScript Ant task, and Nashorn was removed in JDK 15\n    (scr-ext-anno)\n  - felix-parent 7 runs ianal-maven-plugin 1.0-alpha-1, which cannot open\n    java.io.File on JDK 17 and later (inventory, features,\n    webconsole-plugins, healthcheck/webconsoleplugin)\n\nMove them to felix-parent 9, as the other modules were, and use \u003crelativePath /\u003e\nbecause the in-repo parent is a different version.\n\nAlso remove a Java level no current JDK accepts: bundlerepository.osgi-ct\ncompiled to 1.5 and pinned maven-bundle-plugin 2.3.4. osgi-ct also depended on bundlerepository at\n${project.version}, its own 2.0.3-SNAPSHOT, which no longer exists anywhere; use\nthe latest release, 2.0.10.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7176482d02f598c575565eaae723b39e426a6c20",
      "tree": "dd496354d2499bbadb81004d1230037a568cef12",
      "parents": [
        "f3509b10e04a1fdc353ca21c373ccb31e401a5a4",
        "f19890cabcde9e8e0538152055349f8db5136c40"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 18:54:45 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 18:54:45 2026 +0100"
      },
      "message": "Merge remote-tracking branch \u0027origin/master\u0027 into sync581\n"
    },
    {
      "commit": "f19890cabcde9e8e0538152055349f8db5136c40",
      "tree": "34db2477b67fc8e8a43990769700cf5aaea3a632",
      "parents": [
        "415a7d1ed633a94f7b0f3a799084d4d4bb30a288",
        "261c93a31fc318437c000db246983396866ee2c2"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 18:53:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 02 18:53:44 2026 +0100"
      },
      "message": "Merge pull request #588 from apache/FELIX-6870-framework-8-defaults\n\nFELIX-6870 - Default the Felix bundles used by tests to their latest release"
    },
    {
      "commit": "261c93a31fc318437c000db246983396866ee2c2",
      "tree": "34db2477b67fc8e8a43990769700cf5aaea3a632",
      "parents": [
        "d0564d446037be2eae40d765e4b768bae94283fc"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 17:06:13 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 17:06:13 2026 +0100"
      },
      "message": "FELIX-6870 - Test http/itest against the Jetty bundle built in this repository\n\nhttp/itest depended on org.apache.felix.http.jetty12 2.0.3-SNAPSHOT. The module\nin this repository is 2.0.11-SNAPSHOT, and 2.0.3-SNAPSHOT is gone from the ASF\nsnapshot repository, so with an empty local Maven repository the module did not\nresolve. Worse, the version never matched the reactor, so the tests ran on an\nold Jetty bundle and not on the one being built here.\n\nApply the FELIX-6870 pattern, as for the framework:\n\n  - the default is the latest release (jetty12 2.0.8, jetty 5.2.6 for the\n    jetty11 profile), so the module builds on its own and cannot go stale\n  - CI computes the version of http/jetty12 in this repository and overrides\n    http.jetty.version with it, so the integration tests exercise the bundle\n    under test\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d0564d446037be2eae40d765e4b768bae94283fc",
      "tree": "9e86e4e441fb1edb08a686abb2cfe921f8aa6fa7",
      "parents": [
        "e99c0389668c6528506dc24d50c7b0f9ec12b19a"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 17:06:12 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 17:06:12 2026 +0100"
      },
      "message": "FELIX-6870 - Drop the stale gogo BOM import from the gogo itest modules\n\nitest-shell and itest-jline imported org.apache.felix.gogo.bom 1.0.3-SNAPSHOT.\nThe BOM in this repository is 1.0.7-SNAPSHOT, and 1.0.3-SNAPSHOT is gone from\nthe ASF snapshot repository, so with an empty local Maven repository neither\nmodule resolved. They only built where a cached copy happened to exist.\n\nThe import no longer provides anything. The BOM manages only the four gogo\nartifacts, and both modules now give each of them an explicit version through\nthe felix.*.version properties; the one unversioned dependency, osgi.annotation,\nis managed by gogo-parent. With nothing left to manage there is no version\nto keep in step, so remove the import instead of repointing it.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f3509b10e04a1fdc353ca21c373ccb31e401a5a4",
      "tree": "c0ca1b7c1a80f1326bace119cbc7e0fd095ceb97",
      "parents": [
        "115ae161bdcc37d756aab7a30979a2017cb9c725",
        "415a7d1ed633a94f7b0f3a799084d4d4bb30a288"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:58:25 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:58:25 2026 +0100"
      },
      "message": "Merge remote-tracking branch \u0027origin/master\u0027 into sync581\n"
    },
    {
      "commit": "e99c0389668c6528506dc24d50c7b0f9ec12b19a",
      "tree": "57d219671893550fbb33ffedef185242830e55b9",
      "parents": [
        "d6b1551c1ae7da7fbcd50c091ff86298433c3080"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:46:25 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:46:25 2026 +0100"
      },
      "message": "FELIX-6870 - Default the sibling bundles the tests use to their latest release\n\nSame reasoning as the previous commit, for the other Felix bundles whose\nlatest release changed in the JDK 25 support release:\n\n  scr                                configadmin   1.9.0 -\u003e 1.10.0\n  gogo/itest-shell, itest-jline      gogo.runtime  1.1.4 -\u003e 1.2.0\n\nThe other pins from FELIX-6870 are already at their latest release\n(gogo.command 1.1.2, gogo.shell 1.1.4, gogo.jline 1.1.8). resolver\u0027s\nutils pin (1.8.0, latest 1.11.10) is left alone: utils was not released\nhere, and that is a long-standing pin on a module this release did not\ntouch.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d6b1551c1ae7da7fbcd50c091ff86298433c3080",
      "tree": "29a11093acfb70b4d5db3b45daf3e562d6390b46",
      "parents": [
        "415a7d1ed633a94f7b0f3a799084d4d4bb30a288"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:38:44 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Nov 02 16:38:44 2026 +0100"
      },
      "message": "FELIX-6870 - Default the test framework to the 8.0.0 release\n\nThe modules whose tests run on a released framework pin it as a property,\ndocumented as \"the latest release\", so each module still builds on its own.\nCI overrides the property with the framework built from this repository.\nThe latest release is now 8.0.0, so the defaults were stale: a standalone\nbuild of, say, http/jetty12 still tested against 7.0.5, which is the\nsituation FELIX-6869 was about.\n\n  configadmin, http/itest, http/jetty, http/jetty12    7.0.5 -\u003e 8.0.0\n  scr                                                  7.0.1 -\u003e 8.0.0\n  gogo/itest-shell, gogo/itest-jline                   6.0.1 -\u003e 8.0.0\n\nThe comments in http/jetty and http/jetty12 named 7.0.5 as the latest release\nand gave 7.1.0-SNAPSHOT as the example override; both are updated.\n\nModules that FELIX-6870 did not cover keep their pins: eventadmin, healthcheck,\nrootcause, systemready and the example hosts.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "415a7d1ed633a94f7b0f3a799084d4d4bb30a288",
      "tree": "e586d5c0b3da882dcfa22fddef31b6b18c03ff95",
      "parents": [
        "d78dd28928e60a802741c211ac409ec6316490a1"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 20:33:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 20:33:25 2026 +0100"
      },
      "message": "Add CI build badge to README"
    },
    {
      "commit": "d78dd28928e60a802741c211ac409ec6316490a1",
      "tree": "02a3fccacfed66210cebac8eb83a2b0544df2e2f",
      "parents": [
        "3b1539d0b971ff9b236e6307563f2b2770a384d1"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:36:12 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:36:12 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "3b1539d0b971ff9b236e6307563f2b2770a384d1",
      "tree": "a603cf242de943ba4815e68c2f7355740f9587ea",
      "parents": [
        "53e3754e44a401b6e256ebeb0386de633bcd80a4"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:36:04 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:36:04 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.http.jetty12-2.0.10\n"
    },
    {
      "commit": "53e3754e44a401b6e256ebeb0386de633bcd80a4",
      "tree": "19214ea82ab02d9e94c308b8c3607ce7e46b4aba",
      "parents": [
        "ad21bbcbdd2f0dfd892e17c04fe5d6dfddf600a0"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:31:19 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:31:19 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "ad21bbcbdd2f0dfd892e17c04fe5d6dfddf600a0",
      "tree": "7f7f1ef2616302c75a5e2c92b50a89a9976d96a1",
      "parents": [
        "e8fba9f63bdaf9337496d27f3188b65d6d248d11"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:31:00 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 16:31:00 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.http.base-6.0.4\n"
    },
    {
      "commit": "e8fba9f63bdaf9337496d27f3188b65d6d248d11",
      "tree": "a332769b118a6a2ec6935833c1819ae019cf9be2",
      "parents": [
        "5b4e5295b4fe0c62730900fab56ba01cb4863c4d",
        "93ba24e62c4756ffeed5637024b264da556374d2"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Thu Oct 29 15:57:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 15:57:20 2026 +0100"
      },
      "message": "Merge pull request #582 from apache/FELIX-6873-error-filter-path\n\nFELIX-6873 : Match ERROR filters against the error servlet path"
    },
    {
      "commit": "5b4e5295b4fe0c62730900fab56ba01cb4863c4d",
      "tree": "0c209791ccf199ec01f0e214a85a3c027cb8cd8e",
      "parents": [
        "af89814b23137c8f22593b7d8b37b264f0f7b94a",
        "7702f0193f8b531c0cbc7a5e6e5c21ff6c36f214"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Wed Oct 28 20:44:53 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 28 20:44:53 2026 +0100"
      },
      "message": "Merge pull request #583 from sharanggupta/cm-json-missing-test\n\nRun the string and object conversion tests of JsonSupportTest"
    },
    {
      "commit": "7702f0193f8b531c0cbc7a5e6e5c21ff6c36f214",
      "tree": "0c209791ccf199ec01f0e214a85a3c027cb8cd8e",
      "parents": [
        "af89814b23137c8f22593b7d8b37b264f0f7b94a"
      ],
      "author": {
        "name": "Sharang Gupta",
        "email": "sharang@sharanggupta.dev",
        "time": "Wed Oct 28 16:32:31 2026 +0000"
      },
      "committer": {
        "name": "Sharang Gupta",
        "email": "sharang@sharanggupta.dev",
        "time": "Wed Oct 28 16:32:31 2026 +0000"
      },
      "message": "Run the string and object conversion tests of JsonSupportTest\n\ntestConvertStringToObject and testConvertObjectToObject never had @Test,\nso they have not run since cm.json was added; 2fbd4edd99 (\"enable all\ntest cases\") annotated the other unannotated methods but missed these two.\n"
    },
    {
      "commit": "93ba24e62c4756ffeed5637024b264da556374d2",
      "tree": "03e80d503c567bb0e5ac7e6c7b66bae92351e29b",
      "parents": [
        "a6b84a959608b1856a63fd8d55b69f75bf627710"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Tue Oct 27 09:15:43 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Tue Oct 27 09:15:43 2026 +0100"
      },
      "message": "FELIX-6873 : Match ERROR filters against the error servlet path\n\nERROR dispatch matched URL-pattern filters against the original request\nURI. Match them against the paths of the selected error servlet instead,\nconsistent with FORWARD and INCLUDE. An error servlet without a pattern\n(or with only extension patterns) is only matched by servlet name filters.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "af89814b23137c8f22593b7d8b37b264f0f7b94a",
      "tree": "754862f57b66aaec0076c7437ac3fa78b4338a40",
      "parents": [
        "33885ed9ed56467e571b86f0f179bd625904a3ac"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 20:20:28 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 20:20:28 2026 +0100"
      },
      "message": "FELIX-6807 - Record 8.0.0 in the main and distribution changelogs\n\nBoth changelogs stopped at 7.0.5 while 8.0.0 was being released, so neither\nrecorded the move to framework 8.0.0, the removal of the OSGi security\nlayer it brings, or the Java 11 requirement. The distribution also gained\nGogo Runtime 1.2.0.\n\nmain.distribution/doc/changelog_main.txt is a copy of main\u0027s changelog that\nships inside the archive, so it is refreshed alongside.\n\nThese entries land after the artifacts were staged, so the 8.0.0 archives\nthemselves do not carry them; they are here for the repository record and\nfor the next release.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "33885ed9ed56467e571b86f0f179bd625904a3ac",
      "tree": "7092eda136011c3a6285038b99a945d4e35397a9",
      "parents": [
        "e4a6f72809b193181fd6fb9ba794ce9d111ff78a"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 20:11:33 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 20:11:33 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "e4a6f72809b193181fd6fb9ba794ce9d111ff78a",
      "tree": "fac4c00ed0da33f55152c84822605086624f3e2f",
      "parents": [
        "41f168ec1b45743b127200fb3d0169a31e6571bd"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 20:11:28 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 20:11:28 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.main.distribution-8.0.0\n"
    },
    {
      "commit": "41f168ec1b45743b127200fb3d0169a31e6571bd",
      "tree": "dfa7fb1b606b477aa09d123b07718a3e8c17aa6d",
      "parents": [
        "94dc625acbc9b1ed20e2da0c4d6f7609b204b3e8"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 20:07:57 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 20:07:57 2026 +0100"
      },
      "message": "FELIX-6807 - Do not fail the distribution on the legal-files check\n\nMoving main.distribution to felix-parent 9 brought in the geronimo\nverify-legal-files execution, which felix-parent runs with strict\u003dtrue.\nThe check looks for LICENSE and NOTICE at the root of each artifact. This\nis a binary distribution, so they correctly sit one level down, inside\nfelix-framework-${framework.version}/, and the check cannot see them. The\narchive does carry LICENSE, LICENSE.kxml2, NOTICE and DEPENDENCIES.\n\nOverride the execution with strict\u003dfalse, so it warns instead of failing.\nPlugin level configuration is not enough: felix-parent sets strict inside\nthe execution, and execution configuration wins.\n\nStaying on felix-parent 3 is not an option. Its antrun execution\nset-bundle-required-execution-environment runs a JavaScript Ant task, and\nNashorn was removed in JDK 15, so the build fails before it even reaches\nthis check.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "94dc625acbc9b1ed20e2da0c4d6f7609b204b3e8",
      "tree": "ee0f371f2cd4916bbb2cf2c20833da786fae0cf7",
      "parents": [
        "04c08592856a558c339f3ba3275ec004ec1fb723"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 19:57:09 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 19:57:29 2026 +0100"
      },
      "message": "FELIX-6807 - Refresh the distribution docs for 8.0.0\n\nmain.distribution copies each bundle\u0027s changelog and some HTML guides into\nthe archive verbatim, and they had fallen behind:\n\n  changelog_framework.txt      stopped at 7.0.5, so felix-framework-8.0.0.zip\n                               would have shipped without the 8.0.0 entry\n                               describing the removal of the security layer\n  changelog_gogo.runtime.txt   missing 1.2.0\n  changelog_gogo.shell.txt     several releases behind\n\nThe launching and embedding guide also listed \"The security manager is\ninstalled if it is enabled.\" among the things init() does. That is no\nlonger true on this framework, so the line is removed.\n\nHistorical security-manager entries in changelog_framework.txt are left\nalone: they describe releases where it was accurate.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "04c08592856a558c339f3ba3275ec004ec1fb723",
      "tree": "1be62394240b473edae7c87aa72864b82d28c803",
      "parents": [
        "7b138f884abe0fafd1326835aa392401cf0d4198"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 19:52:21 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 19:52:21 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "7b138f884abe0fafd1326835aa392401cf0d4198",
      "tree": "371847c88c944564446ecd2220357194c6f1dbf3",
      "parents": [
        "c25fb20f99e91436aed51c6e4fe1c781a3663a47"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 19:52:16 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 19:52:16 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.main-8.0.0\n"
    },
    {
      "commit": "c25fb20f99e91436aed51c6e4fe1c781a3663a47",
      "tree": "e3d0560b0f970258c09454f03ecebe01ec7630c1",
      "parents": [
        "1aa70df31e6f845ddba69d861245f3c165a94d35"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 19:47:35 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 19:47:35 2026 +0100"
      },
      "message": "FELIX-6807 - Build main and the distribution against the released 8.0.0 artifacts\n\nmain bundles the framework, and main.distribution assembles main together\nwith gogo and OBR, so both consume releases rather than snapshots:\n\n  main                framework 8.0.0-SNAPSHOT -\u003e 8.0.0\n  main.distribution   framework.version      7.0.5  -\u003e 8.0.0\n                      gogo.runtime.version   1.1.4  -\u003e 1.2.0\n                      own version            7.1.0-SNAPSHOT -\u003e 8.0.0-SNAPSHOT\n                      felix-parent           3 -\u003e 9\n\nmain.distribution also declared \u003crelativePath\u003e../pom/pom.xml\u003c/relativePath\u003e\nwhile naming felix-parent 3; that file is felix-parent 10-SNAPSHOT, so the\nreference never matched and Maven fell back to the repository. Use\n\u003crelativePath /\u003e as every other module does.\n\nframework.version also names the archive, so the distribution now builds\nfelix-framework-8.0.0.zip.\n\nUntil the JDK 25 support staging repository is promoted, framework 8.0.0 is\nnot on Central, so the Felix Main CI step cannot resolve it and will fail.\nThat is expected and clears when the vote closes.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1aa70df31e6f845ddba69d861245f3c165a94d35",
      "tree": "6c302c7cd1fe1e328e3513a3d339a47eed71cd61",
      "parents": [
        "1a49cc77f3d3913c3b6c3d3604f2a169cc792a29"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 18:30:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:30:33 2026 +0100"
      },
      "message": "Update supported Java versions in README"
    },
    {
      "commit": "1a49cc77f3d3913c3b6c3d3604f2a169cc792a29",
      "tree": "87ebcbf74997e58167c92bf8531a3d70472b3baf",
      "parents": [
        "1906050c43fb1eb77a31c637007b1d6a6f99538e",
        "b639a1eddfa05b0818c5ba28aab406611db9a288"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 18:16:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:16:34 2026 +0100"
      },
      "message": "Merge pull request #576 from RefuX/bundle-classloader-lock-leak\n\nFELIX-6871 Release the class lock when another thread defined the class first"
    },
    {
      "commit": "1906050c43fb1eb77a31c637007b1d6a6f99538e",
      "tree": "ffbaa7ca4f4771f6819122164d29a3063596a2e9",
      "parents": [
        "db5ade73c2530a99069a3184e07189fdf3adaaeb",
        "d2286886b486def5e47939fcd275551153a6e8e1"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 18:16:17 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:16:17 2026 +0100"
      },
      "message": "Merge pull request #577 from sharanggupta/FELIX-6817-closed-revision-resource\n\nFELIX-6817 Find no resources in a closed bundle revision"
    },
    {
      "commit": "db5ade73c2530a99069a3184e07189fdf3adaaeb",
      "tree": "df008ca24459429ac9e23ba16dcff8bade653c26",
      "parents": [
        "31c3b23b09740fd17c2deba80b550dc544998e8c",
        "8865bc07ee436ec9fce591a0888faaa322eaa7e1"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 18:15:18 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:15:18 2026 +0100"
      },
      "message": "Merge pull request #565 from kwin/feature/FELIX-6864-improve-singleton-conflict-exception\n\nFELIX-6864 Improve exception message for conflicting singleton"
    },
    {
      "commit": "31c3b23b09740fd17c2deba80b550dc544998e8c",
      "tree": "465eaa99001e2f4aff69d9ea47849f9495f9822a",
      "parents": [
        "c225eff47d8ecd3b14892a1532d0d655681660bd",
        "7ad77d4417b90c6676644f09949d758165a3039c"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 18:13:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 18:13:06 2026 +0100"
      },
      "message": "Merge pull request #569 from stataru8/stataru/utils/FELIX-6863\n\nFELIX-6863: add Javadoc for ResourceImpl.getCapabilities(String) and ResourceImpl.getRequirements(String)"
    },
    {
      "commit": "115ae161bdcc37d756aab7a30979a2017cb9c725",
      "tree": "d6b591f06822c323fcaafc3d0a68ed97e66260a1",
      "parents": [
        "f8ab3cb60b9d1f84b06d8aaf1a4d1b59a7544d20"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 20:17:39 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:06:00 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: remove the Gradle build\n\nRemove the Gradle build and wrapper, the bnd workspace, the Eclipse project\nfiles and the Gradle based release project, which the Maven build replaces,\nand build the Dependency Manager with Maven in CI. The README describes the\nMaven build, and the changelogs get an entry for the new versions, the\nexisting entries are kept.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "f8ab3cb60b9d1f84b06d8aaf1a4d1b59a7544d20",
      "tree": "5948c8be3e49c516a5bb5021f03010176a8614d5",
      "parents": [
        "f25c865841b7c8bf0f6221d2037196a7859b6378"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 20:17:37 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:06:00 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: build the samples and the benchmark with Maven\n\nConvert the samples, the lambda samples and the benchmark to Maven modules.\nEach of their bundles is built by its own execution of the maven-bundle-plugin\nfrom the packages it contained before, with the same headers, so the bundles\nare the same as the ones of the bnd build, and the annotation descriptors are\ngenerated for the annotated samples only.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "f25c865841b7c8bf0f6221d2037196a7859b6378",
      "tree": "ac1231ef480e17c944dd3cd588713ab4f37416db",
      "parents": [
        "e74b823f6e3e900e2e44556fd762918abdbca65f"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 20:17:36 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:06:00 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: run the integration tests with Maven\n\nSplit the integration test projects into one module per bundle (the itest api,\nbundle and bundle2, the filter index tests and its static and dynamic custom\nindex bundles, the lambda tests and lifecycle bundle, and the runtime tests),\nbuilt with the maven-bundle-plugin. The tests run inside framework 8 with the\nbnd-testing-maven-plugin, which resolves the runtime (framework 8, Gogo,\nConfig Admin, Log, Metatype and JUnit) from the Maven dependencies, as the bnd\ntest runs did. The runtime tests process their annotations with the annotation\nbnd plugin.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "e74b823f6e3e900e2e44556fd762918abdbca65f",
      "tree": "3862329cb4fe498cbb58ae72953dc759284c3905",
      "parents": [
        "440f06177cfb9979fac2f11c687c2837ab882bd6"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 20:17:30 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:06:00 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: build the bundles with Maven\n\nAdd a Maven reactor for the Dependency Manager with the core, annotation,\nruntime, shell and lambda bundles, built by the maven-bundle-plugin with the\nexisting source layout and the same bundle headers as the bnd build. The\nversions of the exported packages are still read from the packageinfo files,\nand the API is baselined against the last release (r16): every exported\npackage is unchanged, so only the bundle versions move, to a new major for the\nJava 11 baseline (dependencymanager 5.0.0, annotation 6.0.0, runtime 5.0.0,\nshell 5.0.0, lambda 2.0.0).\n\nThe bundles are compiled against the OSGi R6 API, the lowest one supported, so\ntheir imports stay as they were in r16 (for example org.osgi.framework 1.8).\nThe test stubs implementing ServiceReference no longer use @Override on the\nmethods that were only added in later releases. The unit tests run with\nsurefire, and the packageinfo files are excluded from the license check.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "440f06177cfb9979fac2f11c687c2837ab882bd6",
      "tree": "2a83329c51c14d5d92a26ec0647c835ac52e1770",
      "parents": [
        "8c15f26ea2f42bde93b49f7679877f71335ee94a"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sun Oct 25 18:12:20 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: ignore the harmless Config Admin message about a new factory configuration in the test base\n\nConfig Admin logs \"Ignoring new configuration pid\u003d...\" at error level when a\nfactory configuration has been created but not updated yet while the factory\nregisters; it provides the configuration with the update. The test base fails\na test when an error is logged, so this message failed an otherwise passing\nruntime integration test now and then on the CI runners. The test bases ignore\nthis one message, every other logged error still fails the test.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "8c15f26ea2f42bde93b49f7679877f71335ee94a",
      "tree": "cece5297d6fcfc73b905c166843e3c93bc627127",
      "parents": [
        "99e1df58b6da9459b9e592ae7a81393af90b522c"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sun Oct 25 16:04:24 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: ignore repeated deliveries of the same configuration in the configuration tests\n\nConfig Admin can provide a configuration to a service twice, for example when\nthe service registers while its configuration is updated. The configuration\ntests count the updates they expect, so a repeated delivery of the same\nconfiguration failed them now and then on the CI runners (expected:\u003c2\u003e but\nwas:\u003c3\u003e). They now ignore a repeated delivery (helper ConfigDeliveries); a lost\nconfiguration still counts.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "99e1df58b6da9459b9e592ae7a81393af90b522c",
      "tree": "d9301bbb92c9d3adba7bc9f2fe112229c01be131",
      "parents": [
        "7d021d6a6281fec20b9b38230c952c17f5ba1383"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 21:42:14 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: make FELIX5200_FactoryPidNotRestartedTest independent of how often Config Admin delivers the configuration\n\nConfig Admin sometimes delivers the factory configuration to the factory more\nthan once, for example when the factory is registered again. The Dependency\nManager then replaces the adapter instance (stop, then a new start), which the\ntest, which counted the calls, did not expect: it timed out, or its late calls\nfailed the next test. Follow the adapter instances instead of counting the\ncalls. Ran 20 times in a row on 2 CPUs without failure, where the old test\nfailed 2 times out of 12.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "7d021d6a6281fec20b9b38230c952c17f5ba1383",
      "tree": "dde7066bbee4235aedba8faf8126f8a3ce4e9edf",
      "parents": [
        "36168cfdb90f65420397b6cc6e37f47c86ce9f78"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 19:57:51 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: fix a race in FELIX5200_FactoryPidNotRestartedTest\n\nPublish the test instance before releasing the test thread, which otherwise\nsometimes compared with the previous instance (seen on JDK 17 in CI).\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "36168cfdb90f65420397b6cc6e37f47c86ce9f78",
      "tree": "043775c1689d19c8d744db1f5c768bd36d7de6c0",
      "parents": [
        "9c70143d71b0a5ecdeb16ca95b3ba90126a3db43"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 19:12:50 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Build the Dependency Manager in CI\n\nAdd the Dependency Manager to the GitHub Actions workflow with its trigger\npaths and path filter. It is built with Gradle after the framework, Gogo and\nConfig Admin snapshots are installed into the local Maven repository, and the\nannotation bundle, which is a bnd plugin used by the other projects, is built\nfirst in a separate Gradle invocation.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "9c70143d71b0a5ecdeb16ca95b3ba90126a3db43",
      "tree": "8811b96acdfe0442fbd2455a27d9061709263540",
      "parents": [
        "e4cd9a122039c7b068d869b20e0a9545e5d7d7e0"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 19:12:50 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:59 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: update libraries and adapt the tests\n\nBuild and test the Dependency Manager against the framework 8.0.0, Gogo 1.2.0\nand Config Admin 1.10.0 snapshots of this repository. Update the OSGi core,\ncompendium and annotation artifacts, JUnit 4.13.2, Mockito 5 (with byte-buddy\nand objenesis 3.3), Log and Metatype.\n\nAdapt the tests to the newer APIs: implement ServiceReference.adapt and\ngetProperties and the LoggerFactory methods in the test stubs. Use a unique\nconfiguration pid per integration test, so that the asynchronous deletion of\nthe configuration of a previous test cannot reach the next one.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "e4cd9a122039c7b068d869b20e0a9545e5d7d7e0",
      "tree": "ada691dbf3a213409d40e057a61a62ec49f4c180",
      "parents": [
        "3e2e5ff60fb190d8c64dd82a7a1c5b1b68e3171a"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 19:12:49 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:58 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: Java 11 baseline, bnd 7.4.0 and Gradle 9.8.2\n\nRaise the compile target and the test runtime execution environment from\nJava 8 to Java 11 and the bundles to new major versions:\ndependencymanager 5.0.0, annotation 6.0.0, runtime 5.0.0, shell 5.0.0\nand lambda 2.0.0.\n\nMove the build to bnd 7.4.0 and Gradle 9.8.2, so that it runs on current JDKs,\nand adapt the Gradle scripts: locate the bnd workspace from the root project\ndirectory, run Apache Rat (0.16.1) through the Gradle ant builder, and do not\nfail the plain test task of the bnd integration test projects, whose tests run\nin testOSGi. Stop tracking the Gradle build output.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "3e2e5ff60fb190d8c64dd82a7a1c5b1b68e3171a",
      "tree": "83b45c8c1a18efb09f70c9f8197f95705d4952e2",
      "parents": [
        "c225eff47d8ecd3b14892a1532d0d655681660bd"
      ],
      "author": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Sat Oct 24 19:12:32 2026 +0000"
      },
      "committer": {
        "name": "Claude",
        "email": "noreply@anthropic.com",
        "time": "Mon Oct 26 17:05:58 2026 +0000"
      },
      "message": "FELIX-6872 - Dependency Manager: remove AccessController usage\n\nAccessController and PrivilegedAction are deprecated for removal along\nwith the SecurityManager. Drop the doPrivileged wrappers in the core\nServiceTracker and in the runtime InvocationUtil.\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_017MGDWAYvWioowRTBkoQPjA\n"
    },
    {
      "commit": "c225eff47d8ecd3b14892a1532d0d655681660bd",
      "tree": "a6e7f983abb48fcedd8bb78a71a6bb817e908b9d",
      "parents": [
        "70d823155c49090e68d4f322fe1aa97438423969"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:34:19 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:34:19 2026 +0100"
      },
      "message": "FELIX-6807 - Point the gogo modules back at the in-repo parent and runtime\n\nReleasing gogo-parent and gogo.runtime standalone, rather than as one\nreactor with -DautoVersionSubmodules, left two stale references on master:\n\n  - the seven gogo modules pointed at the released gogo-parent 7, which is\n    staged but not on Central, so nothing under gogo/ could resolve its\n    parent. It also meant the modules no longer tracked the parent in this\n    repository, the staleness FELIX-6870 set out to remove.\n  - gogo.jline depended on gogo.runtime 1.2.0-SNAPSHOT, which the release\n    moved past; master is now 1.2.1-SNAPSHOT.\n\ngogo-parent is a module of the gogo reactor and CI builds --file\ngogo/pom.xml, so 8-SNAPSHOT resolves from source with no remote lookup.\n\nVerified with an empty local repository:\nmvn -Dmaven.repo.local\u003d/tmp/cr3 --file gogo/pom.xml clean verify -\u003e SUCCESS\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "70d823155c49090e68d4f322fe1aa97438423969",
      "tree": "6fd3cc21812eefc698a1c1050885c03454824e67",
      "parents": [
        "73b1104df172aca32ee37c7f74445a7780a10ddc"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 16:28:45 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 16:28:45 2026 +0100"
      },
      "message": "FELIX-6807 - Cancel superseded CI runs per branch, not just per pull request\n\nThe concurrency group fell back to github.run_id for push events, which is\nunique per run, so pushes to a branch never superseded each other. Releasing\nsix modules pushes twelve version-only commits in a row and queued twelve\nfull four-JDK runs, none of which tested anything the last one does not.\n\nGroup on github.ref instead, so a branch keeps at most one run in flight.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "73b1104df172aca32ee37c7f74445a7780a10ddc",
      "tree": "b13d340992179190f6010f441b3cb62b3f5fa3aa",
      "parents": [
        "cf7c76cc5e8e7f9c06e7369574aa678bb0ff98f9"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 16:28:44 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 16:28:44 2026 +0100"
      },
      "message": "FELIX-6807 - Run the TCK against the framework version in this repository\n\nframework.tck pinned org.apache.felix.framework 8.0.0-SNAPSHOT, which the\nframework release moved on from: master is now 8.0.1-SNAPSHOT. The old\nsnapshot is still in the ASF snapshot repository, so the TCK kept passing\nwhile testing a framework that no longer corresponds to master - the same\nsilent staleness FELIX-6870 addressed elsewhere.\n\nVerified by installing framework 8.0.1-SNAPSHOT and running the TCK: it now\nresolves .../8.0.1-SNAPSHOT/org.apache.felix.framework-8.0.1-SNAPSHOT.jar.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "cf7c76cc5e8e7f9c06e7369574aa678bb0ff98f9",
      "tree": "a0a1bc6d45a0ab9a9ad73cb7a1e8427bf306c78c",
      "parents": [
        "72a199d00313717e823155442c962c2d490dfc85"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:00:46 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:00:46 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "72a199d00313717e823155442c962c2d490dfc85",
      "tree": "940d8090c3e2911b2cf8bdeaeb95f5f226d71c1a",
      "parents": [
        "5ab3f497b9dabe8a7329fa4079c26ff0878aa0bc"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:00:41 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 16:00:41 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.gogo.runtime-1.2.0\n"
    },
    {
      "commit": "5ab3f497b9dabe8a7329fa4079c26ff0878aa0bc",
      "tree": "e119c3aa707d52f4b088915bd1e20edc5ef31a7b",
      "parents": [
        "5dd0718009309f88d928e4a03fda7bf54f3610cd"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:59:17 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:59:17 2026 +0100"
      },
      "message": "FELIX-6807 - Point the gogo modules at the released gogo-parent 7\n"
    },
    {
      "commit": "5dd0718009309f88d928e4a03fda7bf54f3610cd",
      "tree": "6c876c369f39edbdb98ec08c4817503bfe9e510d",
      "parents": [
        "42bfab1e128bf755fa48c18cdb61007bb2054d84"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:55:35 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:55:35 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "42bfab1e128bf755fa48c18cdb61007bb2054d84",
      "tree": "ea7590e128cec50921122d4bf6dd29cca43e1c83",
      "parents": [
        "4bc838be9f298174325d00336ea68f1c0cf6aadf"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:54:20 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:54:20 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release gogo-parent-7\n"
    },
    {
      "commit": "4bc838be9f298174325d00336ea68f1c0cf6aadf",
      "tree": "f77b5dce1c2175ed6c8ece75287fff683e6d3f21",
      "parents": [
        "55b59ede9b65c0dd069962616de17f0c5876a1ca"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:50:05 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:50:05 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "55b59ede9b65c0dd069962616de17f0c5876a1ca",
      "tree": "7be8ef9ebed74282ea9e78009260bff94fe9c40e",
      "parents": [
        "d42745bca465f5d7d0ce77e2c464fe46aaa661cc"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:50:00 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:50:00 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.webconsole-5.1.0\n"
    },
    {
      "commit": "d42745bca465f5d7d0ce77e2c464fe46aaa661cc",
      "tree": "115bae2c21c7064a19e6c8cbf4bfb9d7a835a5fe",
      "parents": [
        "615dd9d623fc7659631aec9e2b6962feeccfefa6"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:44:52 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:44:52 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "615dd9d623fc7659631aec9e2b6962feeccfefa6",
      "tree": "48f10aba460d93f3f79ebcf6454328e170a8a68a",
      "parents": [
        "bb6c0a31eadd2c7bfb3b7645f4d65caca684683a"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:44:47 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:44:47 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.scr-2.3.0\n"
    },
    {
      "commit": "bb6c0a31eadd2c7bfb3b7645f4d65caca684683a",
      "tree": "fa9c009bf63d009f710497800b0604c9eaeeecfd",
      "parents": [
        "ee277b4150a6a41b937436bebe7f57b80009aa96"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:29:59 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:29:59 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "ee277b4150a6a41b937436bebe7f57b80009aa96",
      "tree": "d35f80340d261cebd42ea33efe5aa3282b79fc27",
      "parents": [
        "da12ae0ee538d9dd1aef8151314306a83a59a308"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:29:52 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:29:52 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.configadmin-1.10.0\n"
    },
    {
      "commit": "da12ae0ee538d9dd1aef8151314306a83a59a308",
      "tree": "c589aceb725f42c54e706fdb334b8993cb52d009",
      "parents": [
        "b1bcadcfefde90bd6ef6f5919dbf626754255f2f"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:17:29 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:17:29 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "b1bcadcfefde90bd6ef6f5919dbf626754255f2f",
      "tree": "39609a6bcb65bc47d6df97b71ac5ed891891c293",
      "parents": [
        "6b165271c41cb3a8df0f8e86d9d539ebf85e6c6a"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:14:16 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paulrutter@apache.org",
        "time": "Mon Oct 26 15:14:16 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release org.apache.felix.framework-8.0.0\n"
    },
    {
      "commit": "6b165271c41cb3a8df0f8e86d9d539ebf85e6c6a",
      "tree": "ca4fb0ebf74c9674f035c6e3f184c77b0c5c1485",
      "parents": [
        "a6b84a959608b1856a63fd8d55b69f75bf627710",
        "2fbecf86f7e3acd84fd4a205cdea68d0782142dd"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 15:06:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 15:06:16 2026 +0100"
      },
      "message": "Merge pull request #433 from apache/feature/FELIX-6759-Java-25-LTS\n\nFELIX-6807 - Java 25 LTS support\n"
    },
    {
      "commit": "2fbecf86f7e3acd84fd4a205cdea68d0782142dd",
      "tree": "ca4fb0ebf74c9674f035c6e3f184c77b0c5c1485",
      "parents": [
        "cd6a1bccb8c1db4dabd0661e038399b84e97747d"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 15:05:36 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 15:05:36 2026 +0100"
      },
      "message": "FELIX-6807 - Do not fail the bundlerepository build on pre-HTML5 javadoc\n\nSame as the preceding commit, for the last module that still failed under\n-Papache-release: RepositoryAdmin.java has an unclosed \u003col\u003e, which the\nJDK 21 doclet rejects.\n\nbundlerepository is not part of this release, but it would have been\nblocked the next time it is released, and no module should be left with a\nknown release-blocking javadoc failure.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "cd6a1bccb8c1db4dabd0661e038399b84e97747d",
      "tree": "8e10b786e7dd372da6196dee1249424fe124bf31",
      "parents": [
        "aedf7c0b030e3124bac3b3bcd4fbf42e8d9d4760"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 14:35:32 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 14:35:32 2026 +0100"
      },
      "message": "FELIX-6807 - Do not fail the build on pre-HTML5 javadoc\n\nThe JDK 21 doclet enforces HTML5 and rejects markup that predates it, so\nmaven-javadoc-plugin:jar failed under -Papache-release and blocked a\nrelease of these two modules:\n\n  configadmin   79 errors in 13 files, e.g. \u003ctable border\u003d\"0\" cellspacing\u003d\"3\"\u003e\n  gogo.runtime  \u003ch1\u003e where the doclet expects a lower heading level\n\nThe framework already sets failOnError\u003dfalse for the same reason. Do the\nsame here: the javadoc jar is still produced and attached, the markup is\nleft to be cleaned up separately, and no release is held up by it.\n\nThis only affects maven-javadoc-plugin; no other part of either build\nchanges.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "aedf7c0b030e3124bac3b3bcd4fbf42e8d9d4760",
      "tree": "7d0817a8f0f17f311db6a5620fb6941d1306bd6c",
      "parents": [
        "1f5c55c0aaace6c2433f340482d0ab1211afb26b"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 11:45:54 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 11:45:54 2026 +0100"
      },
      "message": "FELIX-6807 - Attach sources once, so the release profile can run\n\nframework, main and bundlerepository each declared an attach-sources\nexecution of maven-source-plugin with the jar goal. The Apache parent\ndeclares the same execution id with jar-no-fork in its apache-release\nprofile, and Maven merges executions sharing an id by taking the union of\ntheir goals, so both ran:\n\n    \u003cid\u003eattach-sources\u003c/id\u003e\n    \u003cgoal\u003ejar\u003c/goal\u003e\n    \u003cgoal\u003ejar-no-fork\u003c/goal\u003e\n\nEach attached a sources jar, and the second was rejected:\n\n    Failed to execute goal maven-source-plugin:3.3.0:jar-no-fork\n    (attach-sources): We have duplicated artifacts attached.\n\nThat only surfaces under -Papache-release, which is why ordinary builds\nand CI never hit it, but it fails every release of those three modules.\n\nUse jar-no-fork in all three, as connect already does: the goals then\ncoincide, the union is a single goal, and sources are attached once\nwithout forking a second lifecycle.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "1f5c55c0aaace6c2433f340482d0ab1211afb26b",
      "tree": "b09f30307a3867e829c70b705a62638416b593a8",
      "parents": [
        "01aab024bb9a8bcfc15605818db081d25b64d2ba",
        "8318cd3f947ee919625c81ff640e28b5c0142658"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:43:19 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 09:43:19 2026 +0100"
      },
      "message": "Merge pull request #573 from apache/FELIX-6870-test-against-built-code\n\nFELIX-6870 - Run the integration tests against the code being built"
    },
    {
      "commit": "8318cd3f947ee919625c81ff640e28b5c0142658",
      "tree": "b09f30307a3867e829c70b705a62638416b593a8",
      "parents": [
        "5fa9567addf8e981c053280a2727967b90ef7ad5"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Fri Oct 09 13:59:35 2026 +0200"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:40:58 2026 +0100"
      },
      "message": "FELIX-6870 - Add JDK 27 to the CI matrix\n\n27 was taken out again in d347835e60 because Aries SpiFly 1.3.7 bundles\nASM 9.6, which rejects class file major version 71, so its weaving hook\nthrew for every class and Jetty never finished starting. FELIX-6869 since\nprovisions ASM 9.10.1 alongside the SpiFly bundle, which does know version\n71, so the blocker should be gone. The framework and the TCK already passed\non 27 when that was checked separately.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5fa9567addf8e981c053280a2727967b90ef7ad5",
      "tree": "3ab2ffb39362541ace7d266107f3a4fdb7621fd5",
      "parents": [
        "01aab024bb9a8bcfc15605818db081d25b64d2ba"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Fri Oct 09 11:09:14 2026 +0200"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:40:46 2026 +0100"
      },
      "message": "FELIX-6870 - Run the integration tests against the code being built\n\nModules across the repository pin released Felix sibling bundles as\ndependencies of their tests, so pax-exam and the bnd resolver exercise\nreleased artifacts instead of the code in this repository. Regressions\nintroduced here can therefore pass CI unnoticed, which is how the\nFilterImpl.WrapperCapability bug fixed in FELIX-6869 survived on master.\n\nEvery such pin becomes a property that still defaults to the latest\nrelease, so each module keeps building on its own. CI now builds and\ninstalls a producing module whenever it or one of its consumers changed,\nand overrides the property with the version built here:\n\n  framework      -\u003e configadmin, scr, http, gogo\n  configadmin    -\u003e scr\n  utils          -\u003e resolver\n  gogo bundles   -\u003e gogo itest-shell, itest-jline, jline\n\nThe two gogo itest modules took their versions from an imported BOM that\npins released bundles, so they resolved against none of the code in this\nrepository; they now carry explicit, overridable versions.\n\nhttp/itest kept a 7.0.5 framework pin that FELIX-6869 missed.\n\nThe step that resolves the versions evaluates the gogo modules inside the\ngogo reactor, because gogo-parent is not published anywhere.\n\nframework.security is left pinned: it is no longer built here (removed in\nthe 8.0.0 framework line, FELIX-6807) and its only consumer,\nConfigAdminSecurityTest, is excluded.\n\nipojo is left alone, since its removal is already proposed separately.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "01aab024bb9a8bcfc15605818db081d25b64d2ba",
      "tree": "e9ecd731b04b5c373f09acebc829e8cc2fa16cc4",
      "parents": [
        "d2f7ab9bbe58e01ad3c4dc09833630a5ace795a9"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:15 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:15 2026 +0100"
      },
      "message": "FELIX-6807 - Run CI on JDK 17, 21 and 25\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d2f7ab9bbe58e01ad3c4dc09833630a5ace795a9",
      "tree": "debdb7d24f32582cf7d7103b2d853df915e6ed4d",
      "parents": [
        "7fb0bd713a356ff229a03eab918f73a0687bdd9b"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:15 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:15 2026 +0100"
      },
      "message": "FELIX-6807 - Update test dependencies that did not support a current JDK\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7fb0bd713a356ff229a03eab918f73a0687bdd9b",
      "tree": "9f1a6d95f9e79c00aaa2661a7ef15669004e573c",
      "parents": [
        "b4f967f2dcd9e3e62898e35c7d317d01c2579816"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:14 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:14 2026 +0100"
      },
      "message": "FELIX-6807 - Raise module baselines so every module builds on a current JDK\n\nJDK 20 removed --release 7 and JDK 21 removed --release 6, so configadmin,\nconnect, log.extension, resolver and bundlerepository could not compile on\nthe CI matrix at all. CI did not surface this because those steps only run\nwhen the module itself changes.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "b4f967f2dcd9e3e62898e35c7d317d01c2579816",
      "tree": "eb30aea833b77c5d0baa8cae9749a05cb78cc317",
      "parents": [
        "90396228b06a9b5cd4366274b1e20bbf001bebf2"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:13 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:13 2026 +0100"
      },
      "message": "FELIX-6807 - Replace Thread.stop() in configadmin and build it on a current JDK\n\nUpdateThread.terminate() called Thread.stop(), which has thrown\nUnsupportedOperationException since Java 20; it now interrupts the worker.\nConfigAdminSecurityTest is excluded above JDK 17: it needs\n-Djava.security.manager\u003dallow, a fatal startup error from Java 24 on.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "90396228b06a9b5cd4366274b1e20bbf001bebf2",
      "tree": "33323c01c25f9167d8daf9a6e193aaba99d969b2",
      "parents": [
        "30182df918a9f7b37d86d28c162706eff67410ca"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:12 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:12 2026 +0100"
      },
      "message": "FELIX-6807 - Remove SecurityManager usage from the Web Console\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "30182df918a9f7b37d86d28c162706eff67410ca",
      "tree": "9bd10f52770ecd624d0d72ca7144ce6adb4d1971",
      "parents": [
        "9bb32c1d676735c64aeb007334d1728bce38d6ca"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:11 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:11 2026 +0100"
      },
      "message": "FELIX-6807 - Remove SecurityManager usage from SCR\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "9bb32c1d676735c64aeb007334d1728bce38d6ca",
      "tree": "bda26e5a82078276f11e92d2a23bcc7f51c7fee3",
      "parents": [
        "959a5a762dd84d9c8850e067bbca7c2c399ab136"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:10 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:10 2026 +0100"
      },
      "message": "FELIX-6807 - Move the framework to 8.0.0 on a Java 11 baseline\n\nStackWalker needs Java 9, but 9 and 10 are long EOL, so 11 is the first\nsensible LTS baseline. Removing the security layer is breaking, hence 8.0.0.\nframework/README.md documents the 7.x / 8.x split.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "959a5a762dd84d9c8850e067bbca7c2c399ab136",
      "tree": "add2918b34905c4d1dca25a0c6f08cba3eacd89f",
      "parents": [
        "a6b84a959608b1856a63fd8d55b69f75bf627710"
      ],
      "author": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:09 2026 +0100"
      },
      "committer": {
        "name": "Paul Rütter",
        "email": "paul@blueconic.com",
        "time": "Mon Oct 26 09:39:09 2026 +0100"
      },
      "message": "FELIX-6807 - Remove the OSGi security layer from the framework\n\nJava 24 permanently disabled the SecurityManager (JEP 486), so the OSGi\nsecurity layer can no longer function. Removes framework.security and the\ndoPrivileged/AccessController plumbing that existed to support it.\nSecurityManagerEx now resolves the call stack with StackWalker.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n"
    }
  ],
  "next": "a6b84a959608b1856a63fd8d55b69f75bf627710"
}
