)]}'
{
  "log": [
    {
      "commit": "aff9a72f32b05cfa52c297a1d9be293adc2b2383",
      "tree": "443d46069c2277c56896432a29c0f832d5c4a9f3",
      "parents": [
        "f69ab9e9a66f197af59e2a1096a6907a131c38ee"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 17 09:34:01 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 09:34:01 2026 +0100"
      },
      "message": "Bump vapier/coverity-scan-action from 1.8.0 to 1.9.0 (#1046)\n\nBumps [vapier/coverity-scan-action](https://github.com/vapier/coverity-scan-action) from 1.8.0 to 1.9.0.\n- [Release notes](https://github.com/vapier/coverity-scan-action/releases)\n- [Commits](https://github.com/vapier/coverity-scan-action/compare/2068473c7bdf8c2fb984a6a40ae76ee7facd7a85...1b6fd4eaba6651aa354c9ea7f48caa1710b4e12e)\n\n---\nupdated-dependencies:\n- dependency-name: vapier/coverity-scan-action\n  dependency-version: 1.9.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f69ab9e9a66f197af59e2a1096a6907a131c38ee",
      "tree": "b56f8cd145b77c420343b2b9849e51338792439e",
      "parents": [
        "06da787736a39b686630a6a9ee44ebb54eb014c9"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 14 11:58:34 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 14 11:58:34 2026 +0100"
      },
      "message": "Follow-up to 06da787736"
    },
    {
      "commit": "06da787736a39b686630a6a9ee44ebb54eb014c9",
      "tree": "0f11376e0529fca704df9b5f19f8adf7f694e7d1",
      "parents": [
        "6daf7a7b50680dcc61577e01aa72af6e4370966f"
      ],
      "author": {
        "name": "Moritz",
        "email": "me@moritzf.de",
        "time": "Fri Aug 14 12:10:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 11:10:13 2026 +0100"
      },
      "message": "Fix automatic pong close race (#1041)\n\n* Fix race between the automatic Pong response and session close\n\nThe check of Session.isOpen() and the subsequent sendPong() are not\natomic. If another thread starts the close process in between, the send\nfails with an IllegalStateException that escapes on the thread that is\nprocessing the incoming Ping.\n\nSuppress that exception only if the close process has started by the\ntime the send fails. Any other failure is still reported.\n\n* Add tests for the automatic Pong response during session close\n\nCover both branches: the send failure is swallowed once the close\nprocess has started and it is propagated while the session is open.\n\n* Changelog entry for the automatic Pong / session close race"
    },
    {
      "commit": "6daf7a7b50680dcc61577e01aa72af6e4370966f",
      "tree": "b1ffbd9c748d2ced3e054d06619b503beb6573d3",
      "parents": [
        "7c847353de78c218d3c4d74ac49a89786d0213ba"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 14 09:15:03 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 14 09:15:03 2026 +0100"
      },
      "message": "Follow-up to a59c714933\n\n- reduce code duplication\n- both Clock and Date can also throw (see java.sql.Date)"
    },
    {
      "commit": "7c847353de78c218d3c4d74ac49a89786d0213ba",
      "tree": "3379a130c31f28ffd53a4cd441c25983dbef8db1",
      "parents": [
        "a59c7149338f7e7c1269a805d7a03532e1cf114e"
      ],
      "author": {
        "name": "k-tamura",
        "email": "ktamura.biz.80@gmail.com",
        "time": "Fri Aug 14 14:13:39 2026 +0900"
      },
      "committer": {
        "name": "Emmanuel Bourg",
        "email": "ebourg@apache.org",
        "time": "Fri Aug 14 08:41:22 2026 +0200"
      },
      "message": "Fix typos\n"
    },
    {
      "commit": "a59c7149338f7e7c1269a805d7a03532e1cf114e",
      "tree": "689dcf5c8428ca94d4609138edb1602f247e6307",
      "parents": [
        "21e66557fe8c4564dcf7799859258565b60fce5a"
      ],
      "author": {
        "name": "lihongyi",
        "email": "642826683@qq.com",
        "time": "Thu Aug 13 09:31:54 2026 +0800"
      },
      "committer": {
        "name": "Christopher Schultz",
        "email": "chris@christopherschultz.net",
        "time": "Thu Aug 13 13:54:28 2026 -0400"
      },
      "message": "Wrap Instant conversion failures in ELException\n\nCoercion to java.time.Instant could leak DateTimeException\n(DateTimeParseException or UnsupportedTemporalTypeException) for invalid\nstrings or TemporalAccessors without timezone information. This is\ninconsistent with coercion to numbers, which wraps NumberFormatException\nin ELException as required by the EL specification.\n\nWrap the failures from Instant.from() and Instant.parse() in ELException.\n"
    },
    {
      "commit": "21e66557fe8c4564dcf7799859258565b60fce5a",
      "tree": "db7b93ea0ae5896181a378b33c79094eef1f5efb",
      "parents": [
        "03b9e83d53f72dea19bbbdfce632cd9844b5f9dc"
      ],
      "author": {
        "name": "Fatima Qaisar",
        "email": "fatima79176985@gmail.com",
        "time": "Wed Aug 12 14:09:31 2026 +0500"
      },
      "committer": {
        "name": "Christopher Schultz",
        "email": "chris@christopherschultz.net",
        "time": "Thu Aug 13 13:37:34 2026 -0400"
      },
      "message": "Fix nested subsection handling in documentation\n"
    },
    {
      "commit": "03b9e83d53f72dea19bbbdfce632cd9844b5f9dc",
      "tree": "63da06a56b7f49c522f8e4b6a41af0c018c5b92c",
      "parents": [
        "f5d678e220859993950d6dd997cb0d5f38f29bbd"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 16:13:20 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 16:13:20 2026 +0100"
      },
      "message": "A little more debug logging to better understand intermittent failure"
    },
    {
      "commit": "f5d678e220859993950d6dd997cb0d5f38f29bbd",
      "tree": "da36a37109ae0a1a94ca81528e10265704949094",
      "parents": [
        "932e9507edfd7368fc7bbbc6113e59a18d09f296"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 16:01:40 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 16:01:40 2026 +0100"
      },
      "message": "Make test more robust"
    },
    {
      "commit": "932e9507edfd7368fc7bbbc6113e59a18d09f296",
      "tree": "fa4ffd5d58a1d8e2db73f463316444e1736ebd9c",
      "parents": [
        "dee3cc39d1fb7887b0acded60eb68a13c57258d3"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 11:35:37 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 11:35:37 2026 +0100"
      },
      "message": "Ensure capture groups from RewriteCond reflect the current request"
    },
    {
      "commit": "dee3cc39d1fb7887b0acded60eb68a13c57258d3",
      "tree": "f6fa991036a464feba7bf53ea73ac0ee69368730",
      "parents": [
        "dfcacb0e6648d1761f5164862f8a307f8ed5277e"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 10:37:18 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 13 10:37:18 2026 +0100"
      },
      "message": "Improve AsyncContext.dispatch() when dispatchersUseEncodedPaths\u003dfalse"
    },
    {
      "commit": "dfcacb0e6648d1761f5164862f8a307f8ed5277e",
      "tree": "e96fc3892c772e03d8bc918283bde98a24a3279b",
      "parents": [
        "23b9f2560f91965a57ff6c2cf5fd128e017245ef"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:52:42 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:52:42 2026 +0100"
      },
      "message": "Fix off-by-one error that crept in a some point"
    },
    {
      "commit": "23b9f2560f91965a57ff6c2cf5fd128e017245ef",
      "tree": "d18f74bba1cbe979b12406bdb88d2f2d1d1da0ff",
      "parents": [
        "c2b162a5a1163eee2fc91ef0fcc07e85c8f237d8"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:46:44 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:46:44 2026 +0100"
      },
      "message": "Fix OpenSSL-FFM with client certs with multiple OCSP responders"
    },
    {
      "commit": "c2b162a5a1163eee2fc91ef0fcc07e85c8f237d8",
      "tree": "8b88308a0af63dc3b3b3383fdc961b1bf34f5210",
      "parents": [
        "44af7007163e8de5ec6c40eea686b8b446e255e3"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:44:33 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 21:44:33 2026 +0100"
      },
      "message": "Rebase change log to 11.0.24"
    },
    {
      "commit": "44af7007163e8de5ec6c40eea686b8b446e255e3",
      "tree": "c1d871b1b30a9298a60b4a48a51d020aacd7a0e3",
      "parents": [
        "5c989cdb5a8abdb23002760c868db02612f7ca64"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 20:55:59 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 20:55:59 2026 +0100"
      },
      "message": "Fix Javadoc warnings"
    },
    {
      "commit": "5c989cdb5a8abdb23002760c868db02612f7ca64",
      "tree": "785bd5389546442b12e61ebee1ce58c5e04f347f",
      "parents": [
        "2039d0c62bb9f2b71a2969769958caa07ed81f45"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 20:16:45 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 20:17:24 2026 +0100"
      },
      "message": "Regenerate TLS certificates, keys etc\n\nI\u0027ve been working on the script that generates these. Committing an\nupdated set to confirm that the tests still all past."
    },
    {
      "commit": "2039d0c62bb9f2b71a2969769958caa07ed81f45",
      "tree": "e3c1d3e7666c5fc06fe9ee215dc55ba504775057",
      "parents": [
        "a50643fcb3a3b0233328b90267fd160601c6f048"
      ],
      "author": {
        "name": "Coty Sutherland",
        "email": "csutherl@apache.org",
        "time": "Wed Aug 12 08:49:31 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 08:49:31 2026 -0400"
      },
      "message": "Add tests to verify Tomcat functions without clustering JARs (#1038)\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "a50643fcb3a3b0233328b90267fd160601c6f048",
      "tree": "9a840592d97dfe50d3e9d43e9ba39e7c9868670d",
      "parents": [
        "0d0d80e14e17e8537794ae9725c1e3ae498876f4"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 12:10:14 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 12:10:14 2026 +0100"
      },
      "message": "Add re-try attempt after observing likely timing related test failures"
    },
    {
      "commit": "0d0d80e14e17e8537794ae9725c1e3ae498876f4",
      "tree": "b6ece00285ece3e3d36081cdcdb598cc1bad6ca3",
      "parents": [
        "16e57c5ccd21df0fd81aca420cd0c0b839fb5f58"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 11:20:04 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 11:20:04 2026 +0100"
      },
      "message": "Add a re-try to mitigate against failures observed under load in testing"
    },
    {
      "commit": "16e57c5ccd21df0fd81aca420cd0c0b839fb5f58",
      "tree": "1bda2b16d21ec2514761c50f0ece029051e48b25",
      "parents": [
        "3186034a2400a37c674eaa6a133fe833ad8a4442"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 08:23:12 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 12 08:23:27 2026 +0100"
      },
      "message": "Fix test failure observed on MacOS (but could happen on any OS)"
    },
    {
      "commit": "3186034a2400a37c674eaa6a133fe833ad8a4442",
      "tree": "f1d4d2327c9a01c634b7afe46f96bf2266a017d2",
      "parents": [
        "ab46d1707413c1b75efef4c47cff2ce043cc9d0e"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 19:16:25 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 19:16:25 2026 +0100"
      },
      "message": "Correct code-signing link"
    },
    {
      "commit": "ab46d1707413c1b75efef4c47cff2ce043cc9d0e",
      "tree": "2260e0435a33394bcb3063608589766d4ec7731d",
      "parents": [
        "61c80524da0ff31192121e1409c4edd50e8c0ea5"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 17:58:51 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 17:58:51 2026 +0100"
      },
      "message": "Fix intermittently failing test"
    },
    {
      "commit": "61c80524da0ff31192121e1409c4edd50e8c0ea5",
      "tree": "5d35cad98db1b5d8fe9aa1e32446400704fda9c4",
      "parents": [
        "bbc0889108aefefed6917089faf68fa3d7823f6f"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 17:46:16 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 17:46:16 2026 +0100"
      },
      "message": "Add new exception class previewed in Java 28"
    },
    {
      "commit": "bbc0889108aefefed6917089faf68fa3d7823f6f",
      "tree": "433b92f36135c3a21fe55acc52a80806e6b92415",
      "parents": [
        "26cb39f9907ca85f9bbe10358a609e80ac285ea6"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:36:10 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:36:10 2026 +0100"
      },
      "message": "Align with POEditor"
    },
    {
      "commit": "26cb39f9907ca85f9bbe10358a609e80ac285ea6",
      "tree": "5963b1961ca653f3bec6bc7c3c5853237711c98b",
      "parents": [
        "e550f50576e0bd78c98e82e6704274564a46fbaf"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:34:14 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:34:14 2026 +0100"
      },
      "message": "Remove unused translations"
    },
    {
      "commit": "e550f50576e0bd78c98e82e6704274564a46fbaf",
      "tree": "1bceaf79cbc5db1a61ad7f8a3dfb297d3e062a79",
      "parents": [
        "ecc53e3eff7fd0b6c5c4b0ff77a5a79792d88e16"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:32:59 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:32:59 2026 +0100"
      },
      "message": "Improvements to Japanese translations provided by tak7iji."
    },
    {
      "commit": "ecc53e3eff7fd0b6c5c4b0ff77a5a79792d88e16",
      "tree": "e98f0d7ad26d29247c9d52233a25e735ae213324",
      "parents": [
        "2c18651c51bf53dfa564fafea4b7becbe6c6aa82"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:31:45 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:31:45 2026 +0100"
      },
      "message": "Improvements to French translations. (remm)"
    },
    {
      "commit": "2c18651c51bf53dfa564fafea4b7becbe6c6aa82",
      "tree": "dcda78ad8d9b3d0205c1c8721b6ccf94fc2a3c9f",
      "parents": [
        "92a428c9445212b6e64896ddc4339b40cb3a8e31"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:03:14 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 16:03:14 2026 +0100"
      },
      "message": "Switch to non-deprecated methods"
    },
    {
      "commit": "92a428c9445212b6e64896ddc4339b40cb3a8e31",
      "tree": "1cfcde421abbf729567e3692dc92d407bb2e997a",
      "parents": [
        "00eeef611e9bd9c5630922027729224384c2bb37"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 12:38:32 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 15:29:30 2026 +0100"
      },
      "message": "Handle HTTP sessionID changes for WsSession close on HTTP session expiry"
    },
    {
      "commit": "00eeef611e9bd9c5630922027729224384c2bb37",
      "tree": "9cc0df106c58df58f947de2619a0a5908493b823",
      "parents": [
        "678e3eb4ca1932dc0dbc87059f29e9b5e54c77a3"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 31 17:46:56 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 15:20:51 2026 +0100"
      },
      "message": "Fix an allocation leak in the HTTP/2 backlog tracking on stream reset"
    },
    {
      "commit": "678e3eb4ca1932dc0dbc87059f29e9b5e54c77a3",
      "tree": "e8442c29cfbf8d5006493a5174e8808943cb7ad4",
      "parents": [
        "4d7d000d164c526f75df1da43b09cd3583a4ab85"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 31 08:49:10 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 14:28:56 2026 +0100"
      },
      "message": "Various improvements to the DataSourceRealm\n\nA failure to connect to the database or an exception during either user\nor role lookup will now result in an authentication failure rather than\na partially populated Principal.\n\nFor CLIENT-CERT and SPNEGO authentication, the user must exist in the\ndatabase for authentication to succeed."
    },
    {
      "commit": "4d7d000d164c526f75df1da43b09cd3583a4ab85",
      "tree": "089c6298d8b7663be5e90cd6ab34bc072f1ab3b6",
      "parents": [
        "f3ca8d4020909c5b46557cc364745e232f3c895e"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Jul 30 14:41:30 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 14:24:01 2026 +0100"
      },
      "message": "Refresh constraints after FORM auth if method changes\n"
    },
    {
      "commit": "f3ca8d4020909c5b46557cc364745e232f3c895e",
      "tree": "c7aec54da0e6fe0810667e42cd88a267b81f073c",
      "parents": [
        "03eee5bcbeb6e568b454c30cc1d06fdc9eee5695"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 08 11:09:03 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 14:08:24 2026 +0100"
      },
      "message": "Improve security of Unix domain sockets"
    },
    {
      "commit": "03eee5bcbeb6e568b454c30cc1d06fdc9eee5695",
      "tree": "68da326176b13a82a54ebbdcddae3f5bcfea3507",
      "parents": [
        "8a5e70dbd4e7c4f6e16e0e5968776b9c58b014a2"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 21 18:52:39 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 12:26:53 2026 +0100"
      },
      "message": "Ensure security constraint with longest matching path is selected"
    },
    {
      "commit": "8a5e70dbd4e7c4f6e16e0e5968776b9c58b014a2",
      "tree": "980fcec565eab7648cd689e16abb939749899c94",
      "parents": [
        "32e30cba5b1f1916d0563ad0ad220e612ebf430c"
      ],
      "author": {
        "name": "lihongyi",
        "email": "642826683@qq.com",
        "time": "Sun Aug 02 11:31:37 2026 +0800"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 11:43:39 2026 +0100"
      },
      "message": "Make default value of interruptThreadThreshold explicit\n\nThe interruptThreadThreshold field relied on the Java default of 0\nwhich disables thread interruption. The Javadoc and valve\ndocumentation both state the default is -1. Make the default\nexplicit (-1) so the code matches the documented behaviour.\n"
    },
    {
      "commit": "32e30cba5b1f1916d0563ad0ad220e612ebf430c",
      "tree": "f15733715f75a183b84c04b24c55caf1ca34c551",
      "parents": [
        "63b705880a662d42d7203a492ba81d595912dea0"
      ],
      "author": {
        "name": "lihongyi",
        "email": "642826683@qq.com",
        "time": "Sun Aug 02 11:58:52 2026 +0800"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 11:39:58 2026 +0100"
      },
      "message": "Add unit tests for ExpressionTokenizer\n"
    },
    {
      "commit": "63b705880a662d42d7203a492ba81d595912dea0",
      "tree": "0b9dcdb4262b950e3fc4b3f52243c9ebf0a6cf0e",
      "parents": [
        "65bb847e56c09a6767aac440e63ee177255e10e1"
      ],
      "author": {
        "name": "sainadh777",
        "email": "31940823+sainadh777@users.noreply.github.com",
        "time": "Tue Aug 04 22:19:51 2026 -0700"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "mark.thomas@broadcom.com",
        "time": "Tue Aug 11 11:32:00 2026 +0100"
      },
      "message": "Make HPACK encoding test deterministic\n"
    },
    {
      "commit": "65bb847e56c09a6767aac440e63ee177255e10e1",
      "tree": "3d436bc94913400baac737f69920d5ff03da90f4",
      "parents": [
        "b08b71e054c83ec3fbcec845ae062cad47fb5ac8"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 11:14:52 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 11 11:14:52 2026 +0100"
      },
      "message": "Treat all URLs and URL patterns in web.xml, annotations, etc as decoded\n\nThis removes the option to choose to treat them as URL-Encoded or\nURL-Decoded along with all of the supporting code for that feature."
    },
    {
      "commit": "b08b71e054c83ec3fbcec845ae062cad47fb5ac8",
      "tree": "9410d29e37a61a65df25d7a7dd2da0d366beebdc",
      "parents": [
        "db8ddf7ccda071437136ea5f5f1e87d67ed61604"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 21:59:48 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 21:59:48 2026 +0100"
      },
      "message": "Add test cases for the new URL / URL pattern encoded/decoded option\n\nGenerated with a combination of\n- Claude + Opus 5\n- CoPilot + ChatGPT-5.6"
    },
    {
      "commit": "db8ddf7ccda071437136ea5f5f1e87d67ed61604",
      "tree": "40920d3957985c029af47f654372563c9dcb78fb",
      "parents": [
        "f02e207ab844733ff995fdc86bd5ee1f79a3e068"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 20:44:10 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 20:44:10 2026 +0100"
      },
      "message": "Make URL and URL-pattern decoding configurable.\n\nThe Servlet specification states URLs and URL patterns should always be\nspecified in URL-decoded form. However, the Tomcat commit logs from the\ntime (more than quarter of a century ago) suggests the exact opposite\nwas intended:\nhttps://lists.apache.org/thread/fzcq06b7dl8w3q8j1jhvq9cmbsq5f2f3\n\nThis commit does not change the default behaviour of URL-decoding URLs\nand URL patterns (it will change for 12.0.x once this change has been\nback-ported).\n\nIn the unlikely event an application needs to specify a URL or URL\npattern that needs to be URL-decoded, the configuration options allows\nthe application to migrate when they are ready."
    },
    {
      "commit": "f02e207ab844733ff995fdc86bd5ee1f79a3e068",
      "tree": "edecada72219ff8e53d202a9a6327b03e62e56dd",
      "parents": [
        "bb5cd34fa6e8bc75ea97a2d970917eb1d57c4b9f"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 11:00:02 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 11:00:02 2026 +0100"
      },
      "message": "Add change log entry"
    },
    {
      "commit": "bb5cd34fa6e8bc75ea97a2d970917eb1d57c4b9f",
      "tree": "42a31a8c7e2827ddecc2bbd783d2adffc2f9f1f7",
      "parents": [
        "41ebbb1b5607d988bb369516b81091ca380faf4c"
      ],
      "author": {
        "name": "Kohei Tamura",
        "email": "ktamura.biz.80@gmail.com",
        "time": "Thu Jul 30 15:37:45 2026 +0900"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "mark.thomas@broadcom.com",
        "time": "Mon Aug 10 10:56:10 2026 +0100"
      },
      "message": "Clarify testOnBorrow attribute\n\nUpdated the description for \u0027testOnBorrow\u0027 attribute to clarify reconnection attempts and SQLException handling. Minor correction in the \u0027validationQuery\u0027 attribute description.\r\n\r\nhttps://bz.apache.org/bugzilla/show_bug.cgi?id\u003d70164"
    },
    {
      "commit": "41ebbb1b5607d988bb369516b81091ca380faf4c",
      "tree": "6198e2a414f32e87cc2f66e9e1459d60fff03d98",
      "parents": [
        "3479bfc95290db92c1d34a4617eb4f1660a0cfc1"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 10:51:12 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 10:51:12 2026 +0100"
      },
      "message": "Handle case of only one clustering JAR missing rather than both"
    },
    {
      "commit": "3479bfc95290db92c1d34a4617eb4f1660a0cfc1",
      "tree": "48d4f3706f8332358471729caffd45bb0c32f78e",
      "parents": [
        "898409492490e3f8c154e9423fdbdc56a1e0bb16"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 08:54:06 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 08:54:06 2026 +0100"
      },
      "message": "Fix javadoc warning"
    },
    {
      "commit": "898409492490e3f8c154e9423fdbdc56a1e0bb16",
      "tree": "e3db859ff0cdcb258851e9da610cadc20636cb87",
      "parents": [
        "91ac751845e853418f84bf917201c591810b3733"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 08:36:00 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 10 08:36:20 2026 +0100"
      },
      "message": "Expand test case to confirm bug report is invalid\n"
    },
    {
      "commit": "91ac751845e853418f84bf917201c591810b3733",
      "tree": "70b94372e86edbba0294c9a09dc8920940244c37",
      "parents": [
        "d7dca78debe1ac4bf84eb73c1bad60d07f861e1c"
      ],
      "author": {
        "name": "Coty Sutherland",
        "email": "csutherl@apache.org",
        "time": "Fri Aug 07 21:59:38 2026 -0400"
      },
      "committer": {
        "name": "Coty Sutherland",
        "email": "csutherl@apache.org",
        "time": "Fri Aug 07 22:13:28 2026 -0400"
      },
      "message": "Use reflection to load clustering classes in sessionsList.jsp so the sessions list page renders correctly when clustering JARs are not present at runtime\n"
    },
    {
      "commit": "d7dca78debe1ac4bf84eb73c1bad60d07f861e1c",
      "tree": "419ea9cceee915bdb21e6ffe0fba148465ae833e",
      "parents": [
        "5b9ddcf99f75d05efa9d809859f0e36ffc138938"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:49:24 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:49:24 2026 +0100"
      },
      "message": "Update Bouncy Castle to 1.85(.2)"
    },
    {
      "commit": "5b9ddcf99f75d05efa9d809859f0e36ffc138938",
      "tree": "2f9ca17a76187aecc979cdcf69beee31966ec4dd",
      "parents": [
        "0fab84c0da2e2ea878a6ead67598bd0fe26fa84d"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:34:33 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:34:33 2026 +0100"
      },
      "message": "Update JSign to 7.5"
    },
    {
      "commit": "0fab84c0da2e2ea878a6ead67598bd0fe26fa84d",
      "tree": "1a4f2dee0f10a0271ff4bf50d6b33fc34e9135fe",
      "parents": [
        "cc0a0d55402a579447c58009b825130daae3f9d1"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:25:57 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:25:57 2026 +0100"
      },
      "message": "Update Checkstyle to 13.9.0"
    },
    {
      "commit": "cc0a0d55402a579447c58009b825130daae3f9d1",
      "tree": "36d823522e4c0d8ffcf39af535646bf991f0ccf4",
      "parents": [
        "4caa78fc83b02e13a77755a847ef287926410ebc"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:15:58 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:15:58 2026 +0100"
      },
      "message": "Update for latest Checkstyle version"
    },
    {
      "commit": "4caa78fc83b02e13a77755a847ef287926410ebc",
      "tree": "2042591d04731e5489eea9b5eca56b5934b02171",
      "parents": [
        "611812b89a8822ff1d50abd36afa1e1eb99bcdae"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:08:24 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 17:08:24 2026 +0100"
      },
      "message": "Fix Javadoc indent"
    },
    {
      "commit": "611812b89a8822ff1d50abd36afa1e1eb99bcdae",
      "tree": "ae28b535416801d9f8ea3f92bedbe9ef7eeb8fbb",
      "parents": [
        "e50d3655a1a288bea3440371b2699ef22e58a167"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 16:14:44 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 16:14:44 2026 +0100"
      },
      "message": "Update Objenesis to 3.6"
    },
    {
      "commit": "e50d3655a1a288bea3440371b2699ef22e58a167",
      "tree": "f08c2873a0e58e5d1715866720135e55577f9800",
      "parents": [
        "9362c7d8b8ea230412d96424b946ebfe1eeee8bd"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 16:05:33 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 16:05:33 2026 +0100"
      },
      "message": "Update POM files to match build version"
    },
    {
      "commit": "9362c7d8b8ea230412d96424b946ebfe1eeee8bd",
      "tree": "4548accaad7752ee878ac7b70d9eb4c6b9fa824f",
      "parents": [
        "2524325686ffe38dd296d7952362ece47a2edde6"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 15:56:53 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Aug 07 15:56:53 2026 +0100"
      },
      "message": "Add test case for bug 70144\n\nTest case passes as expected. Bug looks to be invalid."
    },
    {
      "commit": "2524325686ffe38dd296d7952362ece47a2edde6",
      "tree": "72dc085353fe5993d881e13772d30399915f6f34",
      "parents": [
        "f7457325d3615cceaa8243355f6ec5df7e53f467"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 06 19:50:02 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Aug 06 19:50:02 2026 +0100"
      },
      "message": "Improve handling of concurrent expiration and attribute addition"
    },
    {
      "commit": "f7457325d3615cceaa8243355f6ec5df7e53f467",
      "tree": "fd2532b541376366302379968867d52a3efb3810",
      "parents": [
        "70e9d3ad43b8b8b7a05866b850ddabed093a7dea"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 05 08:09:04 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Aug 05 08:09:04 2026 +0100"
      },
      "message": "Expand the description of the %S (session ID) access log pattern token"
    },
    {
      "commit": "70e9d3ad43b8b8b7a05866b850ddabed093a7dea",
      "tree": "034904e064b967303e548976332d4af557e18ae7",
      "parents": [
        "07193527d198d91a1973fe707b0e1a8820aab6ec"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 04 13:45:01 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Aug 04 13:45:01 2026 +0100"
      },
      "message": "Follow-up to previous revert. Align docs with behaviour."
    },
    {
      "commit": "07193527d198d91a1973fe707b0e1a8820aab6ec",
      "tree": "b98bdbe5f7e438364d78a5cb78ef1c06f52178f5",
      "parents": [
        "981674b6b2d69e99d11a7a43750b611775ba40e2"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Mon Aug 03 21:28:33 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Mon Aug 03 21:28:33 2026 +0200"
      },
      "message": "Revert\n\nRemove bad javadoc examples instead."
    },
    {
      "commit": "981674b6b2d69e99d11a7a43750b611775ba40e2",
      "tree": "715cddacba6969d51d0cd4ad28815a201d474328",
      "parents": [
        "5b5a3d2add2c2a2512cde359ad816d1d0979fd41"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:14:34 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:14:34 2026 +0100"
      },
      "message": "Rename for clarity"
    },
    {
      "commit": "5b5a3d2add2c2a2512cde359ad816d1d0979fd41",
      "tree": "7007a0acb7b11e9091f792a248b2b3993379753b",
      "parents": [
        "d62bd44201321b92511e20313d531946d43fc7e4"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:03:39 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:03:39 2026 +0100"
      },
      "message": "Review c71512e2 - Align Javadoc. Make other setters consistent."
    },
    {
      "commit": "d62bd44201321b92511e20313d531946d43fc7e4",
      "tree": "14316afa12815e9fa714285ec97c7535b08da8d4",
      "parents": [
        "c71512e20a7bf5a028f41a732c87c6d5df945531"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:02:58 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Aug 03 09:02:58 2026 +0100"
      },
      "message": "Review c71512e2 - need to flip buffer before write"
    },
    {
      "commit": "c71512e20a7bf5a028f41a732c87c6d5df945531",
      "tree": "8f29d86fed47d4679e48fdaf8912f7253ae873b7",
      "parents": [
        "76fcabc563bd1e47089a175d92823cea39f60642"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Sun Aug 02 23:31:04 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Sun Aug 02 23:31:04 2026 +0200"
      },
      "message": "Minor fixes from code review\n\nSet the group info on the UpgradeInfo (rather than the other way\naround).\nSingle byte write in gzip output filter seemed suspicious (unused).\nDouble count update in upgrade IS readLine.\nDetect some errors in AJP cleanly.\nReading the colon in the chunk header should likely throw the bad\nexception if it goes over the extension size.\nChanges reviewed using OpenCode and the testsuite."
    },
    {
      "commit": "76fcabc563bd1e47089a175d92823cea39f60642",
      "tree": "01b95def1535f1808b92b3f343538eb2962aa492",
      "parents": [
        "34cf6773aea46a006860286c2724434ff849de5e"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 19:43:16 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 19:43:16 2026 +0200"
      },
      "message": "Revert"
    },
    {
      "commit": "34cf6773aea46a006860286c2724434ff849de5e",
      "tree": "20c837924bfbede4c45a61bb0fdb2bd2f811406f",
      "parents": [
        "aa090e474f17207fb1b7f16a619e7d2f47e33cdf"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 31 18:27:42 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 31 18:27:42 2026 +0100"
      },
      "message": "Doc update after pattern matching changes"
    },
    {
      "commit": "aa090e474f17207fb1b7f16a619e7d2f47e33cdf",
      "tree": "9c422ebb5c5406b95fcaf38abe93b1085373edaf",
      "parents": [
        "0ab4abcb53f0efeebfda75b6d72a67299da0bf77"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 14:01:15 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 14:01:15 2026 +0200"
      },
      "message": "Another instance of user agent matching"
    },
    {
      "commit": "0ab4abcb53f0efeebfda75b6d72a67299da0bf77",
      "tree": "c817ae397e6c2d1da33c85f9387aad1f9e972807",
      "parents": [
        "1f29baf341220048c66e30aedf43c5b7d0266060"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 13:36:01 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 13:36:01 2026 +0200"
      },
      "message": "Similar fix for restrictedUserAgents\n\nCoauthored with OpenCode."
    },
    {
      "commit": "1f29baf341220048c66e30aedf43c5b7d0266060",
      "tree": "56617de91a85381eff2726a109bf2f662584f575",
      "parents": [
        "4927ed29638f621b32512c96bbbe99600abf928b"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 11:35:54 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 31 11:35:54 2026 +0200"
      },
      "message": "Fix matching of the pattern documented in the javadoc\n\nAlso add a test case for the noCompressionUserAgents feature, coauthored\nwith OpenCode."
    },
    {
      "commit": "4927ed29638f621b32512c96bbbe99600abf928b",
      "tree": "9ef04a2c107bf54305d88fc86fc7a45468f2ab22",
      "parents": [
        "d86f4bc576023cb9bc3389bfc6fd2408784168ec"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 29 16:00:32 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 29 16:00:32 2026 +0100"
      },
      "message": "Improve handling of userRoleAttribute\n\nHandle the case where the JNDIRealm is configured to perform role\nsearches with userRoleAttribute but the attribute is not available or\nnot configured for the current user."
    },
    {
      "commit": "d86f4bc576023cb9bc3389bfc6fd2408784168ec",
      "tree": "f996c6ae2f656187dc8e5a3af836829ddea85153",
      "parents": [
        "f2cda2ec0f98c50cb2a98edf4d882f0474d8350c"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 24 15:48:14 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 28 15:09:39 2026 +0100"
      },
      "message": "Limit number of messages in per client buffer"
    },
    {
      "commit": "f2cda2ec0f98c50cb2a98edf4d882f0474d8350c",
      "tree": "9fa2418ba990d9f2c15559a41398b4c812dc1517",
      "parents": [
        "f7b93176e5bd8fd0a26ea190c502b273c0deec94"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 18:20:55 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 18:20:55 2026 +0100"
      },
      "message": "Refactor to reduce duplication"
    },
    {
      "commit": "f7b93176e5bd8fd0a26ea190c502b273c0deec94",
      "tree": "6e7bcd2ba44e16072e13a5d80782eb9522fe8bd8",
      "parents": [
        "4e5ffde4f7f4241eab679f5293bbd9dcc476f29f"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 17:30:32 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 17:30:32 2026 +0100"
      },
      "message": "Better SSLValve docs"
    },
    {
      "commit": "4e5ffde4f7f4241eab679f5293bbd9dcc476f29f",
      "tree": "670db97ce8bcbbfafcd9ba1134c15577a958758d",
      "parents": [
        "622da3d9d019b75ec77bdba0bab2afb36db4d916"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 16:27:34 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 16:27:48 2026 +0100"
      },
      "message": "Stricter URI template matching for WebSocket"
    },
    {
      "commit": "622da3d9d019b75ec77bdba0bab2afb36db4d916",
      "tree": "f05c27188fcfea44ee4f26dbe3b9e4eebde67c57",
      "parents": [
        "cb6d0c871004a80a5228c1aa8def73394aabbd85"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Mon Jul 27 15:39:58 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Mon Jul 27 15:39:58 2026 +0200"
      },
      "message": "Minor fixes from code review\n\nOne validation for unexpected path traversal.\nHarmonize getCreation.\n"
    },
    {
      "commit": "cb6d0c871004a80a5228c1aa8def73394aabbd85",
      "tree": "7add375903a5a7502b4827de98a7b450a3114fe3",
      "parents": [
        "dff735402e723f281e57f0d602c60f863d5ff285"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 14:18:47 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 14:19:42 2026 +0100"
      },
      "message": "Register the use of an HTTP/2 stream identifier earlier.\n\nThis ensures there is no possibility of a re-used stream identifier\nbeing accepted, regardless of how early in the HEADERS frame processing\nan error is detected."
    },
    {
      "commit": "dff735402e723f281e57f0d602c60f863d5ff285",
      "tree": "f96dd43855302058cfca785a6a94576270be3e6e",
      "parents": [
        "11383361159714e992e1dd1c76d02f724104a7a0"
      ],
      "author": {
        "name": "Rainer Jung",
        "email": "rainer.jung@kippdata.de",
        "time": "Mon Jul 27 11:13:53 2026 +0200"
      },
      "committer": {
        "name": "Rainer Jung",
        "email": "rainer.jung@kippdata.de",
        "time": "Mon Jul 27 11:13:53 2026 +0200"
      },
      "message": "Update Maven Resolver Ant Tasks to 1.6.1.\n"
    },
    {
      "commit": "11383361159714e992e1dd1c76d02f724104a7a0",
      "tree": "72d1d9f9bf0f9c57d74384b491db0ea80889f8b0",
      "parents": [
        "c6c231e0a04ab5722fbc5bd67273fbe4ddd3e751"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 08:27:20 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 27 08:27:27 2026 +0100"
      },
      "message": "Simplify"
    },
    {
      "commit": "c6c231e0a04ab5722fbc5bd67273fbe4ddd3e751",
      "tree": "9c699aec974e3f581f1fd6e1f82093edd84bcf74",
      "parents": [
        "67b01c13bc489d5c8ce2b9e006ccb52161815316"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 24 21:05:00 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 24 21:05:00 2026 +0200"
      },
      "message": "Separate the Context role mapping from security-role-ref"
    },
    {
      "commit": "67b01c13bc489d5c8ce2b9e006ccb52161815316",
      "tree": "241acc121428c90495cfe643a09e02b8bd99aec9",
      "parents": [
        "dd9c744d2f2a9d1c3133787dcb8a437e6abfb835"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 24 17:12:38 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Fri Jul 24 17:12:38 2026 +0100"
      },
      "message": "Add limit to HTTP response header size in upgrade to WebSocket"
    },
    {
      "commit": "dd9c744d2f2a9d1c3133787dcb8a437e6abfb835",
      "tree": "c3ec4d4df18e1ee3ad5f0f912f033f83e546a64a",
      "parents": [
        "583c74dcf385c144bf71b1ac2b811ea577ac2dde"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Jul 23 13:27:24 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Thu Jul 23 13:27:24 2026 +0100"
      },
      "message": "Fix incorrect rejection at upper boundary of nonceCount window"
    },
    {
      "commit": "583c74dcf385c144bf71b1ac2b811ea577ac2dde",
      "tree": "fbdb83412e06f7d63822d53dd7905590844c5c48",
      "parents": [
        "70d0d45404d80c5eaf682dc2c947dabb0fc167d1"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 16:48:09 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 16:48:09 2026 +0100"
      },
      "message": "Require an authority for HTTP/2 requests"
    },
    {
      "commit": "70d0d45404d80c5eaf682dc2c947dabb0fc167d1",
      "tree": "30f4d3c18cf7b66998ec1724882b809ba4644906",
      "parents": [
        "266b2205b1447589d32e28b29d8386559fcc68a8"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 11:31:02 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 11:31:02 2026 +0100"
      },
      "message": "Align getContent() behaviour"
    },
    {
      "commit": "266b2205b1447589d32e28b29d8386559fcc68a8",
      "tree": "d405d69a58753256802e69fd3155e3b3e872f007",
      "parents": [
        "cb9c4bce797b671a6ba453360e24e00b3622f3e1"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 11:29:49 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Wed Jul 22 11:29:49 2026 +0100"
      },
      "message": "Fix Javadoc"
    },
    {
      "commit": "cb9c4bce797b671a6ba453360e24e00b3622f3e1",
      "tree": "28a06599620643dbf2eb26d3fad445a8db5f17e2",
      "parents": [
        "b59187c0e17250e8783e6fba9c0268fb85791096"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 21 11:59:12 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 21 11:59:12 2026 +0100"
      },
      "message": "Improve description of highConcurrencyStatus"
    },
    {
      "commit": "b59187c0e17250e8783e6fba9c0268fb85791096",
      "tree": "1ae5208f5d6a909b2b614c91f8aa3d131e3919b9",
      "parents": [
        "fd9ffad1ed5b91c57255b2e898f9da53aacb8054"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 21 11:23:14 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Tue Jul 21 11:23:14 2026 +0100"
      },
      "message": "Simplify code"
    },
    {
      "commit": "fd9ffad1ed5b91c57255b2e898f9da53aacb8054",
      "tree": "ac2ad79fd13066dcf50832436263aa5b661a5251",
      "parents": [
        "5450c5100a41202d6dc05aaf746efbc417cb5e51"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 18:07:38 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 18:07:38 2026 +0100"
      },
      "message": "Follow-up to parsing improvements"
    },
    {
      "commit": "5450c5100a41202d6dc05aaf746efbc417cb5e51",
      "tree": "8b33ce67d42b9750c0ea7447027f42b5b70ec7ce",
      "parents": [
        "fb1a647ff83d080dc4af278a0ada149ece871915"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 16:49:53 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 16:49:53 2026 +0100"
      },
      "message": "Remove unnecessary code."
    },
    {
      "commit": "fb1a647ff83d080dc4af278a0ada149ece871915",
      "tree": "3ca0c392194af25f6ca4f8ef758f9d7230745d6a",
      "parents": [
        "8f6e70c209f13ce1e5e2d74edca582a13295a0f6"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 14:50:50 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 14:50:50 2026 +0100"
      },
      "message": "Fix regression in handling of chain rules\n\nTest cases written using Claude / Opus 4.8"
    },
    {
      "commit": "8f6e70c209f13ce1e5e2d74edca582a13295a0f6",
      "tree": "29858e8f5217e6c771953afcd2954df2f15dac3b",
      "parents": [
        "1c18d40b6b01c48a2813ae8a45e1b671d9bdbc8d"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 14:29:18 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 14:29:18 2026 +0100"
      },
      "message": "Handle maxSavePostSize\u003d0 case for HTTP/1.1 to HTTP/2 upgrade with body"
    },
    {
      "commit": "1c18d40b6b01c48a2813ae8a45e1b671d9bdbc8d",
      "tree": "9b06ccfd199353122fe0fd9cc98226c1a1195f9f",
      "parents": [
        "347a1c91e1523f640ebc5112eb26b3405f560fd9"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 11:05:46 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 11:05:46 2026 +0100"
      },
      "message": "Correctly split literal \"]]\u003e\" if it appears in CDATA"
    },
    {
      "commit": "347a1c91e1523f640ebc5112eb26b3405f560fd9",
      "tree": "11e3d7f0b12ba0a85bbffff7be5be8dd27fa5ec1",
      "parents": [
        "96c5c551c8b817545fb64036c17681a54c81211d"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 11:04:34 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 11:04:34 2026 +0100"
      },
      "message": "Fix equals() and hashCode(). Need to use pattern string.\n\nPattern object just delegates to Object so implements object identity."
    },
    {
      "commit": "96c5c551c8b817545fb64036c17681a54c81211d",
      "tree": "c66bfd6c6741d300f62593e8883982f9d4b055cc",
      "parents": [
        "2936088e8c482878034c785a1b29a8ce10ae9baf"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 10:07:49 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 10:07:49 2026 +0100"
      },
      "message": "Always call ExceptionUtils.handleThrowable first in a catch block"
    },
    {
      "commit": "2936088e8c482878034c785a1b29a8ce10ae9baf",
      "tree": "d8025f3ee85eec5a0b5cdf366fd0e4ceb9ad39e1",
      "parents": [
        "51dd768a294be30d60ad5da61e2c749683936ecb"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 09:55:44 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 09:55:44 2026 +0100"
      },
      "message": "Fix IDE warning"
    },
    {
      "commit": "51dd768a294be30d60ad5da61e2c749683936ecb",
      "tree": "b7868b6f08f8913aa34823dc5f8529b01bfcfbbf",
      "parents": [
        "ebdbc5854e7acd9f72241834a5fc69fa3d750518"
      ],
      "author": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 09:51:02 2026 +0100"
      },
      "committer": {
        "name": "Mark Thomas",
        "email": "markt@apache.org",
        "time": "Mon Jul 20 09:51:02 2026 +0100"
      },
      "message": "Add escaping for context path and current/parent dir names.\n\nUse XML escaping for XML content"
    },
    {
      "commit": "ebdbc5854e7acd9f72241834a5fc69fa3d750518",
      "tree": "90e881044270d947aaa1569d537e5c8280884696",
      "parents": [
        "dae3dee8e1881f2469663802c8d460c2e3c52b57"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 17 09:13:42 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Fri Jul 17 09:13:42 2026 +0200"
      },
      "message": "Minor fixes from code review"
    },
    {
      "commit": "dae3dee8e1881f2469663802c8d460c2e3c52b57",
      "tree": "66039f7c2068727b9dfcddb36fc20ad416b95556",
      "parents": [
        "b5c2cbfddd3fef84f3ca5d57f1448ea24f391a2b"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 15:28:57 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 15:28:57 2026 +0200"
      },
      "message": "Minor fixes from code review"
    },
    {
      "commit": "b5c2cbfddd3fef84f3ca5d57f1448ea24f391a2b",
      "tree": "4b2746fc1d259b31d1a4de7a52efd1c18329a3d8",
      "parents": [
        "74bf579d969c6ff9bda9d71c23532ae844af5e27"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 15:04:37 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 15:04:37 2026 +0200"
      },
      "message": "Redo parsing since not fully accurate with tokenizer\n\nCo authored by OpenCode.\nExcellent code coverage form existing tests."
    },
    {
      "commit": "74bf579d969c6ff9bda9d71c23532ae844af5e27",
      "tree": "f8d4ce2ce638f03f201c6be62b248ad57b78af48",
      "parents": [
        "1a0ffa5669d895e34be36cff2b64bc0fad733afd"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 14:56:00 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 14:56:00 2026 +0200"
      },
      "message": "Add changelog"
    },
    {
      "commit": "1a0ffa5669d895e34be36cff2b64bc0fad733afd",
      "tree": "b694a3359530b5bf016278c43fcc687793e8ec16",
      "parents": [
        "91e588c6409991fee91c11feda65924943b504b3"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 14:11:50 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 14:11:50 2026 +0200"
      },
      "message": "Fix some issues with rewrite processing from code review\n\nN should really start from 0.\nC should start from after the last in the chain.\nqsd should always discard the original query string (already done on\nredirect).\nRemove code that tries to edit urlStringEncoded with a dubious index.\nSince it is reconstructed, there is no need to remove \u0027?\u0027.\nAvoid possible loop parsing the configuration on IOE."
    },
    {
      "commit": "91e588c6409991fee91c11feda65924943b504b3",
      "tree": "ad12025b51a4bf11cc79a50467291cf9ba8ee5ac",
      "parents": [
        "60008aaaf73a5e864f382f4667d576ea2d5b2f2a"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 10:56:34 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Thu Jul 16 10:56:34 2026 +0200"
      },
      "message": "Add reason\n\nImprove consistency with ErrorReportValve code."
    },
    {
      "commit": "60008aaaf73a5e864f382f4667d576ea2d5b2f2a",
      "tree": "18d4ebbf499c22cc66a9acfffe69cd52004f5f76",
      "parents": [
        "a2eeb2e05ed751285a6fcfed4c9e9dba3ef4aa04"
      ],
      "author": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Wed Jul 15 17:06:29 2026 +0200"
      },
      "committer": {
        "name": "remm",
        "email": "remm@apache.org",
        "time": "Wed Jul 15 17:06:29 2026 +0200"
      },
      "message": "Code review fixes\n\nSome refinements for DOMWriter, co authored by OpenCode.\nSimilar in XMLWriter."
    }
  ],
  "next": "a2eeb2e05ed751285a6fcfed4c9e9dba3ef4aa04"
}
