)]}'
{
  "log": [
    {
      "commit": "a9e353ac6e60bca9abf2e457651d727564229e6a",
      "tree": "e307630179ab57ed62c8b04489ffbe03911c8ece",
      "parents": [
        "f34245a84e59a58b24b08facdfe908902861290a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Oct 26 16:38:04 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Oct 27 13:40:17 2026 -0400"
      },
      "message": "Collapse duplicate revs before stemming\n\nWhen we get duplicates in the rev tree stemming repairs the tree by rebuilding\nit from paths. Repair used to apply the revs_limit first, and then merged the\nfragments. If the duplicates were far enough appart from each other (source dbs\nwith different revs_limits were pushing to a target) the fragments might not be\nfolded together into a path and the shorter one could stay around as an extra\nleaf. Since #6168 it would be even worse since a leaf could end up with nothing\nstored for it, which would be a broken rev tree. So instead we should fold the\npaths first then stem the result.\n\nThis was noticed when fixing the property tests to avoid discarding so many\ngenerating cases and in this case we never actually tested this multi-fragment\nmerge scenario. Move to use numbers for revisions so we don\u0027t have to generate\nrandom revs then reject them with ?IMPLIES any longer. Also increase the number\nof runs to 500 from a default of 100.\n\nIssue: #6170\n"
    },
    {
      "commit": "f34245a84e59a58b24b08facdfe908902861290a",
      "tree": "4977d303dcc76407d2e0c74e8ad6282e7235b8aa",
      "parents": [
        "6e82a001a3cee9334eff6b455d48b4f85ad0e63a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Oct 26 18:01:50 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Oct 26 22:09:20 2026 -0400"
      },
      "message": "Backport 3.5.3 version changes to main\n"
    },
    {
      "commit": "6e82a001a3cee9334eff6b455d48b4f85ad0e63a",
      "tree": "0fb110c71e761e4cfcfddf2c0fe11d5da7dce437",
      "parents": [
        "14b319ef12ef05044b0d48c92a743900c6322133"
      ],
      "author": {
        "name": "Álvaro Olivié",
        "email": "alvarolivie@gmail.com",
        "time": "Fri Oct 23 16:20:34 2026 +0000"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Oct 25 16:13:01 2026 -0400"
      },
      "message": "Return stub batch error per document so it\u0027s counted towards the quorum\n\nWe used to throw a missing stub in the coordinator for any copy with a stub\nerror. User got a 412 even after other copies had accepted the update. Now we\ncount it with a quorum to decide what to do.\n\n`_bulk_docs` now returns 201 with per-document `missing_stub` errors instead\nof failing the whole request with a 412.\n\nCo-authored-by: Nick Vatamaniuc \u003cvatamane@gmail.com\u003e\n"
    },
    {
      "commit": "14b319ef12ef05044b0d48c92a743900c6322133",
      "tree": "90b4249452049508592ae75ec2331b36d7aaee26",
      "parents": [
        "059f47db2740f0caafbd35a5cce8f45c352a5022"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Oct 21 14:38:43 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Oct 21 16:27:54 2026 -0400"
      },
      "message": "Replicator support for heartbeat_seq change feed parameter\n\nImplement heartbeat_seq handling in the replicator as a follow-up to #6165.\nTake advantage of the fact that unknown parameters are ignored by endpoints, so\nwe always pass `heartbeat_seq\u003dtrue`, and if we get any heartbeat rows we\u0027ll use\nthem for checkpointing, and if we don\u0027t (an old source endpoint) we\u0027ll function\nas before.\n\nIssue: #6120\n"
    },
    {
      "commit": "059f47db2740f0caafbd35a5cce8f45c352a5022",
      "tree": "b8b855819f08f15e142cffc681941388f1398398",
      "parents": [
        "cc1c978cf0b93c7c22b36fbf47f87fb7cb9bc194"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Oct 21 10:12:28 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Oct 21 13:59:35 2026 -0400"
      },
      "message": "Always stem interactive updates\n\nRemove `stem_interactive_updates \u003d false` as an option. In #958 (2018) stemming\nis an O(n) operation and not a O(n^2). We left the config value around \"just in\ncase\". However, since then we had never had to turn it to false.\n\nAlso, after a recent fix in rev tree merging #6168, `stem_interactive_updates \u003d\nfalse` allowed rev tree corruption to happen (see #6170 for details). So it\nbecomes an unsafe option and it\u0027s better to remove it.\n\nFix #6170\n"
    },
    {
      "commit": "cc1c978cf0b93c7c22b36fbf47f87fb7cb9bc194",
      "tree": "0bdcc5c421cb2ba9015673037a1ed4f9516c2a7e",
      "parents": [
        "831f669abdac953c3c711f704b58c5a9a60de778"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Oct 14 01:52:26 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Oct 21 03:42:52 2026 -0400"
      },
      "message": "heartbeat_seq _changes parameter\n\nWith a selective filter a client may go a long while without getting a matching\nrow with a sequence. Without getting a sequence a client cannot checkpoint. If\nthe feed crashes or times out, a client may have to rewind all the way to the\nlast received row. The worst case of this is when due to timeouts it becomes\nimpossible to make any progress at all.\n\nTo fix this, implement heartbeats as json object which have a sequence field.\nWith the new `heartbeat_seq\u003dtrue` parameter continuous, normal and longpoll\nfeeds will send `{\"seq\": ..., \"id\": null, \"changes\": []}` heartbeat objects as\na separate line or an element of `results` array. With `eventsource` feeds the\nheartbeat event gets an `id` field set to the sequence, so browsers can resume\nfrom it with `Last-Event-ID`.\n\nThe seq heartbeat object is sent at most once per heartbeat interval if the\nsequence changed since the last one sent. A heartbeat value now also sets the\nkeepalive period of a normal feed while it is being read.\n\nTo make the new feature work the coordinator timeout callback now takes a\nsequence parameter (`{timeout, Seq}`) so that required updating other change\nfeed users (chttpd_auth_cache, global_changes, fabric_bench, etc). But this\nshouldn\u0027t affect inter-node compatibility as we haven\u0027t changed the\n`#changes_args{}` record passed to workers.\n\nNote: this just adds the new option to the _changes endpoint. There will be a\nseparate PR to enchance the replicator to use this feature to checkpoint\nreplication jobs.\n\nFixes #6120\n"
    },
    {
      "commit": "831f669abdac953c3c711f704b58c5a9a60de778",
      "tree": "7b2a05a9e0c11dc7b5363abcf1d8ab5cef8bf988",
      "parents": [
        "37195fdce79234aac23d745fbd98b26a7c588185",
        "1ae02407ea7e921a3cda757d833b7b357a9bff9f"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Oct 20 20:54:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 20:54:34 2026 +0100"
      },
      "message": "Merge pull request #6171 from apache/nouveau-prod\n\nremove experimental tag from Nouveau"
    },
    {
      "commit": "1ae02407ea7e921a3cda757d833b7b357a9bff9f",
      "tree": "7b2a05a9e0c11dc7b5363abcf1d8ab5cef8bf988",
      "parents": [
        "37195fdce79234aac23d745fbd98b26a7c588185"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Oct 19 21:06:54 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Oct 20 19:34:10 2026 +0100"
      },
      "message": "remove experimental tag from Nouveau\n"
    },
    {
      "commit": "37195fdce79234aac23d745fbd98b26a7c588185",
      "tree": "3ba85478e976ca420e9863d262db508a093e464a",
      "parents": [
        "5b14b7c3e0bfb0ef85cdabc07ea43d5854f4dfe7",
        "f9c1feca50b89c7a913c6a1b2928f8300554fcbf"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Tue Oct 20 15:57:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:57:53 2026 +0200"
      },
      "message": "Merge pull request #6172 from apache/feat/docs-summary\n\nFeat/docs summary"
    },
    {
      "commit": "f9c1feca50b89c7a913c6a1b2928f8300554fcbf",
      "tree": "3ba85478e976ca420e9863d262db508a093e464a",
      "parents": [
        "4562e9b77144a652d012221d924629980094b4d5"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri Oct 16 15:43:39 2026 +0200"
      },
      "committer": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Tue Oct 20 11:57:17 2026 +0200"
      },
      "message": "fix: lint\n"
    },
    {
      "commit": "4562e9b77144a652d012221d924629980094b4d5",
      "tree": "70a2d56513b91988e84535bcd16139c1e73a23b2",
      "parents": [
        "5b14b7c3e0bfb0ef85cdabc07ea43d5854f4dfe7"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri Oct 16 15:39:55 2026 +0200"
      },
      "committer": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Tue Oct 20 11:57:17 2026 +0200"
      },
      "message": "feat: add summer 2026 CVE entries, sort manually in TOC\n"
    },
    {
      "commit": "5b14b7c3e0bfb0ef85cdabc07ea43d5854f4dfe7",
      "tree": "6319959830be31703cb5fd1ea7be4fcf6cb2de88",
      "parents": [
        "9af4ae4c1edeeba6b4b0bb6ec18f426117c55327"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Oct 16 15:43:05 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Oct 17 00:22:23 2026 -0400"
      },
      "message": "Speed up internal replicator\n\nRemove quadratic lists:keyfind call from open_revs and get from O(n^2) to\nO(n). (Well probably something with a log in there based on HAMT algorithm for\nmaps).\n\nThis should allow us to use large batches above 1000 docs easily.\n"
    },
    {
      "commit": "9af4ae4c1edeeba6b4b0bb6ec18f426117c55327",
      "tree": "cb832b652269b4c3987519b92d307053b35717f7",
      "parents": [
        "d3884102b5a836f022d7d6a730ab29305d6e098a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Oct 15 12:32:39 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Oct 16 08:05:17 2026 -0400"
      },
      "message": "Fix revision patching for replicated changes\n\nReplicated revisions, which the target already has, may come in with various\nrevision path lengths. This can easily happen if source endpoints have\ndifferent revs_limits (see #6162). Previously, if the target had a VDU, updates\nwent through `prep_and_validate_replicated_updates/5` which incorrectly dropped\nany revisions already in the tree as a no-op. However, those revision paths,\neven if the leafs were no-ops, could still patch-up or connect some existing\nrevisions into a single revpath.\n\nTo fix this, we have to let the revison paths only through to updater to do the\nrevtree merge. We tag a document as a `revs_only` update (we have a precedent\nfor adding meta tags to documents already) and drop its body and attachments,\nsince we\u0027re intending to keep the existing disk value for its leaf always. In\nthe updater if that revision still exists in the revtree we perform the rev\nmerge and keep the disk (leaf) value as is.\n\nFix: #6162\n"
    },
    {
      "commit": "d3884102b5a836f022d7d6a730ab29305d6e098a",
      "tree": "298a26a9ba910a9a6090ff1f75a77b52bb279792",
      "parents": [
        "ec5678ed9563680f552912bf42e776a724eb4f1d"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Oct 13 01:25:14 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Oct 13 08:08:24 2026 -0400"
      },
      "message": "Fix heartbeat timing for continuous change feeds\n\nPreviously, coordinator signaled a timeout after every batch of updates, not\nonly when its heartbeat timer fired, and the HTTP layer turned those into an\nempty lines (or hearbeat event for eventsource).\n\nInstead, we should remember when we sent the last chunk (row, or first newline,\nor another heartbeat) and send a heartbeat only if nothing else was sent. The\ninterval is the same value the coordinator uses.\n"
    },
    {
      "commit": "ec5678ed9563680f552912bf42e776a724eb4f1d",
      "tree": "5b225dbd54f4cab757ba6317748d98e8a93a5a85",
      "parents": [
        "6c0704e5a46e49be229ba827a4294701f382d9a7"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Oct 12 12:45:09 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Oct 12 16:07:55 2026 -0400"
      },
      "message": "Stop changes w/ limit from jumping over rows\n\nPreviously, when we reached limit\u003d0 in the `no_pass` clause we kept advancing\nthe sequence even though we weren\u0027t actually sending rows back to the user any\nlonger (we get extra rows sent back since we have a pending ack buffer in\nplace). That means we could have potentially skipped over data. It\u0027s pretty\ncorner-case-y (limit set and a filter) but also a bit data-loss-y.\n\nTo fix it, we should do what we do for the change and complete clauses above.\n\nAdd tests for complete and and regular changes as well while at it.\n"
    },
    {
      "commit": "6c0704e5a46e49be229ba827a4294701f382d9a7",
      "tree": "5ed1dc78953043d6bf38d5bc649efa249a625968",
      "parents": [
        "1e5f1366cafd56e11be43804efc8aae818ad7373"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Oct 08 16:53:59 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Oct 09 01:58:26 2026 -0400"
      },
      "message": "Do less inline mocking in replicator tests\n\nReplicator tests take forever to run. Granted they do more setup but in some\ncases we also do silly things like create new mocks in the middle of the tests.\nThat means a new module re-compile and reload. So, move some of them to\nsetup/teardown functions instead. In some cases if we don\u0027t mess with the mock\nwe can use a `setup/with/TDEF` construct instead of a `foreach/TDEF_FE` one to do a\nbit less work.\n\nWhile at it, change some tests that have the `?_test(begin` to use `TDEF*`\nmacros and save 4 space (an indentation level) in the process.\n"
    },
    {
      "commit": "1e5f1366cafd56e11be43804efc8aae818ad7373",
      "tree": "fb4f1b98ae0fcdd9b1bca3fa1b219cc787f28b26",
      "parents": [
        "fbfd9109bd44e7156a7b6ad0eb8578ca4aff9435",
        "0bc2045f0817d2c53afb9e378a88444ce8c3634a"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Oct 08 23:34:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:34:58 2026 +0100"
      },
      "message": "Merge pull request #6160 from apache/nouveau-lucene-10.5.2\n\nupgrade lucene"
    },
    {
      "commit": "0bc2045f0817d2c53afb9e378a88444ce8c3634a",
      "tree": "fb4f1b98ae0fcdd9b1bca3fa1b219cc787f28b26",
      "parents": [
        "fbfd9109bd44e7156a7b6ad0eb8578ca4aff9435"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Oct 08 22:14:26 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Oct 08 22:14:26 2026 +0100"
      },
      "message": "upgrade lucene\n"
    },
    {
      "commit": "fbfd9109bd44e7156a7b6ad0eb8578ca4aff9435",
      "tree": "73e5b2bf0c4d006f75c4ee56a554433ada3fafea",
      "parents": [
        "afb135c26f6346f3ac484e6a7a02506a10762f19"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Oct 07 15:00:57 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Oct 08 01:13:26 2026 -0400"
      },
      "message": "More db delete 500 race fixes\n\nContinuation of https://github.com/apache/couchdb/pull/6145. When we ran\ninternal tests we noticed a few 500 errors still leaked when db is opened with\na call to get_security() first. Then, instead of getting\n`database_does_not_exist` we caught a `throw({error, missing_target})` from\n`get_or_create_db/2`.\n\nIssue: #6142\n"
    },
    {
      "commit": "afb135c26f6346f3ac484e6a7a02506a10762f19",
      "tree": "b907b402cbb48d89383551b19c31b4e0c6a9f4e3",
      "parents": [
        "f376f71a9b05974ce60f45a3ff7fc0c1f20d6ae1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Oct 06 12:30:41 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Oct 06 14:15:41 2026 -0400"
      },
      "message": "Strip more replicator creds\n\nFix non-owner readers seeing credentials in a shared _replicator db. Also,\nwhile at it, fix stripping of creds for logging and API endpoints returning\nreplication stats\n"
    },
    {
      "commit": "f376f71a9b05974ce60f45a3ff7fc0c1f20d6ae1",
      "tree": "a2b83e0ea046af9b20cd2fcbc6858308b6cdb104",
      "parents": [
        "f0abc9b14d15abefc44b41207df27139608b3427"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Oct 05 23:45:07 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Oct 06 09:13:50 2026 -0400"
      },
      "message": "Update QuickJS : parser, properties, array fixes\n\n* Parser fixes: yield/await ident parsing. Completion value of empty catch blocks\n  https://github.com/bellard/quickjs/commit/cfc9464f28a8b8e3d95617c2b71ac0da695ee1c6\n  https://github.com/bellard/quickjs/commit/13876a25d59065613366f6947a5471e29af4797c\n  https://github.com/bellard/quickjs/commit/49842490280131d1bd020c650808e807565a8ba4\n* Call expression as assignment target is a runtime ReferenceError not SyntaxError\n  https://github.com/bellard/quickjs/commit/df8de735941d2dd2cfa314e9a8f9b919ed4368a1\n* Function.prototype.bind, Proxy getOwnPropertyDescriptor checks fixes. Also\n  ambiguous module exports\n  https://github.com/bellard/quickjs/commit/efc48a319a96c35c9d44e1287c5be253515616fd\n  https://github.com/bellard/quickjs/commit/535a7c250ff4a577ec36c3e103daab6dadeea650\n  https://github.com/bellard/quickjs/commit/ce0dbb7b8fe4c83996320c0756c9338b8bdcffb7\n  https://github.com/bellard/quickjs/commit/fce112dd0b03b82b28b0259347975fe28db9e845\n  https://github.com/bellard/quickjs/commit/8ac9d9bf430f4e5c505a96d58f10330f27119cb8\n  https://github.com/bellard/quickjs/commit/5b6356ac18420b0c651664247c5200f6ee00c481\n  https://github.com/bellard/quickjs/commit/abf571aa9211ee4b27c17d528e7205c9f757cac9\n  https://github.com/bellard/quickjs/commit/8e68fcfcf5b62285359e056003993c8a6dc80491\n  https://github.com/bellard/quickjs/commit/1aa74292f26d650c50a76a7cd81f1bfa7a52d493\n* New BigInt128 C API (we don\u0027t it)\n  https://github.com/bellard/quickjs/commit/90ab6e2666b8c3085bf4e42a1b90991cfd6c36cf\n  https://github.com/bellard/quickjs/commit/0d9e58551a79d73a5d0aa0eb47ed18f4d6838005\n* Test262: more exclusions upstream. Had to update our test262 errors patch\n  https://github.com/bellard/quickjs/commit/dbbb3dc8d29a7728b36a3d0eb27362221a6f53bc\n  https://github.com/bellard/quickjs/commit/27e250301e1ddeca9f139302ffb5b6d97d78662d\n"
    },
    {
      "commit": "f0abc9b14d15abefc44b41207df27139608b3427",
      "tree": "023aa891a2bfa3028ae367892928ec7414c4d6a4",
      "parents": [
        "dd14b1ade8d5fccecb074cc116391a6a47a5f953"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Oct 05 19:30:40 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Oct 05 22:38:35 2026 -0400"
      },
      "message": "Update deps gun and fauxton\n"
    },
    {
      "commit": "dd14b1ade8d5fccecb074cc116391a6a47a5f953",
      "tree": "090009c067b0bc15442e88c89b2407674f40be4f",
      "parents": [
        "522771806d1daa478574465cca555cc3299c1565"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Oct 02 14:41:19 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Oct 04 10:38:37 2026 -0400"
      },
      "message": "Fixup nouveau out-of-order purge PR\n\nImplement the fixups from https://github.com/apache/couchdb/pull/6138\n"
    },
    {
      "commit": "522771806d1daa478574465cca555cc3299c1565",
      "tree": "ad37287342652923df2bf8a74b51c2666050415c",
      "parents": [
        "e786ccf78efb689132766785c2c7282b79d2a30b"
      ],
      "author": {
        "name": "Tom Wier",
        "email": "thomas@medic.org",
        "time": "Tue Sep 29 12:39:52 2026 +0300"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Oct 04 10:38:37 2026 -0400"
      },
      "message": "Fix out of order update error in nouveau\n"
    },
    {
      "commit": "e786ccf78efb689132766785c2c7282b79d2a30b",
      "tree": "73a2215c82f62fc41e6a64136b1808951efdceed",
      "parents": [
        "af673227cf77a093bf89ce01279525827ca897dd"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sun Oct 04 02:05:58 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Oct 04 03:06:10 2026 -0400"
      },
      "message": "Improve weatherreport checks\n\nFor better compatibility use `file:write_file_info/2` instead `touch`. Check if\ncommands exist with `os:find_executable/1` before running them. Use\n`spawn_executable` instead of `spawn` to run the commands.\n\nCo-Authored-By: Robert Newson \u003crnewson@apache.org\u003e\n"
    },
    {
      "commit": "af673227cf77a093bf89ce01279525827ca897dd",
      "tree": "0aeb6bb82fcd1da7679a7269e2b6e50ecf1b885d",
      "parents": [
        "e0a8e2c3fb089ff856fe90751047c95fb425d797"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Oct 03 15:52:40 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Oct 04 00:12:41 2026 -0400"
      },
      "message": "Use short names for authentication_handlers\n\nMove away from erlang terms and use simpler names them. For compatibility we\nstill accept existing tuple forms. Entries that are not one of these are\nignored.\n\nCo-Authored-By: Jan Lehnardt \u003cjan@apache.org\u003e\nCo-Authored-By: Robert Newson \u003crnewson@apache.org\u003e\n"
    },
    {
      "commit": "e0a8e2c3fb089ff856fe90751047c95fb425d797",
      "tree": "5f6ecd6af73f42b4486d0c78c71146573912cfce",
      "parents": [
        "3a7bacce48011b23a55965277d78257a52f70f6e"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Oct 03 15:18:45 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Oct 03 21:04:00 2026 -0400"
      },
      "message": "Use incremental gunzip\n\nUse incremental gunzip so we can apply configured request limits better.\n\nSession endpoint already had an implicit 1MB size limit applied so we apply it\nexplicitly in case it changes upstream in mochiweb at some point.\n\nCo-Authored-By: Robert Newson \u003crnewson@apache.org\u003e\n"
    },
    {
      "commit": "3a7bacce48011b23a55965277d78257a52f70f6e",
      "tree": "89d595555e86046d7d313253c3f8d059b6ef513b",
      "parents": [
        "42de08d2c197eb4618a634253ab19429ded81453"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Sat Oct 03 15:06:43 2026 +0200"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Oct 03 22:59:18 2026 +0200"
      },
      "message": "configure.ps1: extract clouseau.zip flat\n\nOn Windows, unzipping the archive for Clouseau does not implement\nthe `-j` flag so it will not drop directory names if there are\nsome, like the Unix-like systems do.\n\nStarting from Clouseau 3.4.0, the `-dist.zip` contains a top-level\ndirectory to become consistent the `.tar.gz` format it now also\nprovides -- not ignoring this can break the Windows port, that is\nwhy I may make sense to bring the two implementations in sync.\n"
    },
    {
      "commit": "42de08d2c197eb4618a634253ab19429ded81453",
      "tree": "6cbd85023782a691a248d4161440530fa2f957c2",
      "parents": [
        "014bbf069794b45ae3b748f1bcecd3b4fc121975"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Oct 03 02:08:29 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Oct 03 13:13:55 2026 -0400"
      },
      "message": "Fix proxy config default\n\nUse nil as a better value when users use proxy auth.\n\nCo-Authored-By: Ronny Berndt \u003cronny@apache.org\u003e\n"
    },
    {
      "commit": "014bbf069794b45ae3b748f1bcecd3b4fc121975",
      "tree": "1718596f7a5fe8205c7b02c2d7a96210161b2fb4",
      "parents": [
        "6917dd8d266ffeb9998649b3ed801506adee0c54"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Oct 03 02:32:09 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Oct 03 11:59:33 2026 -0400"
      },
      "message": "Fix suffix check for replicator and users dbs\n\nMatch the plain users and replicator db behavior.\n\nCo-Authored-By: Jan Lehnardt \u003cjan@apache.org\u003e\n"
    },
    {
      "commit": "6917dd8d266ffeb9998649b3ed801506adee0c54",
      "tree": "11448586bfb0c83bb3edf67fba86f3ecac625654",
      "parents": [
        "4b775e5c2407a11ec77a20e614ffbb3337f08c0b"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Oct 03 01:56:51 2026 -0400"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sat Oct 03 09:45:29 2026 +0200"
      },
      "message": "Fix _search_cleanup and _nouveau_cleanup handlers\n\nMake them match _view_cleanup.\n\nCo-Authored-By: Jan Lehnardt \u003cjan@apache.org\u003e\n"
    },
    {
      "commit": "4b775e5c2407a11ec77a20e614ffbb3337f08c0b",
      "tree": "01b09ba840928f1adef4c9d3db455a45a7a9fa60",
      "parents": [
        "8e30f230db96d267178f1b0c7d5317e0979c356b"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Oct 02 11:55:42 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Oct 02 15:07:27 2026 -0400"
      },
      "message": "Make search unvailable error more uniform\n\nWhen running elixir tests with clouseau enabled, as opposed to disabled as we\ndo in Jenkins, noticed a few different shapes of \"search unavailable\" error.\nThat makes the tests flaky and may be confusing in the API results as well.\n\nWhile at it fix an unused warnign from elixir tests about `@lists`\n"
    },
    {
      "commit": "8e30f230db96d267178f1b0c7d5317e0979c356b",
      "tree": "e1d227f10b1548d60e4dd0341517e33442574d95",
      "parents": [
        "621c0602014688d2c6a764e92e1a530d935e9277"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Oct 01 13:47:34 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Oct 01 17:11:43 2026 -0400"
      },
      "message": "Fix db delete 500 badarg\n\nWhen nodes return `not_found` for db doc deletion (the doc where the shardmap\nlives) `fabric_db_delete` tried to log a warning with `~d` but passed a\nnon-integer value which blew up with a 500 badarg instead of a nice 404.\n\nThe value we tried to log was also wonky, the shard record from\ndelete_shard_db_doc never actually set `dbname` so the warnign would have\nprinted `undefined` anyway. Fix it to print dbname instead.\n\nIn the issue #6142 this was reproduced with a racing DELETE. Presumably it\u0027s\nwhen a read raced the deletion and shoved the shard map back into mem3 cache.\nIt later gets evicted but a second DELETE in the meantimes got a 500.\n\nFix: #6142\n"
    },
    {
      "commit": "621c0602014688d2c6a764e92e1a530d935e9277",
      "tree": "ebd5a94f4ff623ca92b573075af3ad4b16ef98eb",
      "parents": [
        "75a77a75081442ab5c0798fbf9f9d8083abad099"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Sep 29 17:52:34 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Sep 30 18:44:18 2026 -0400"
      },
      "message": "Fix purging non-leaf revisions in map-reduce views\n\nPreviously, when we purged a non-leaf revision (either a parent revision or a\ncompletely unknown one) we incorrectly removed the still possibly active live\nindex entry from that document.\n\nTo fix it, check if the doc has changed since the last time we indexed it. Only\nremove index entries in the purge phase if the FDI is gone or has been updated\nsince the last time it was indexed. In the latter case, since we bump updated\nsequences on all leafs when we purge a revision leaf (see couch_db_updater),\nthe regular index update logic may now re-add the entries back into the index\nwith possibly a new winner.\n\nAfter adding tests also clean up the tests to use the TDEF_FE macro and sigils\nfor binaries.\n\nFix: https://github.com/apache/couchdb/issues/6139\n"
    },
    {
      "commit": "75a77a75081442ab5c0798fbf9f9d8083abad099",
      "tree": "79aa096529828977d67f175186f3ae8e503be197",
      "parents": [
        "8a9c2bdcf44b35d45852d47ce002c094106f6555",
        "c42840d6c9716ca1820c1dc5e07a0d3d8d086910"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Sep 30 16:23:37 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 16:23:37 2026 +0100"
      },
      "message": "Merge pull request #6143 from apache/ibm-iam-auth-api\n\nMatch IBM\u0027s existing IAM auth plugin more closely."
    },
    {
      "commit": "c42840d6c9716ca1820c1dc5e07a0d3d8d086910",
      "tree": "79aa096529828977d67f175186f3ae8e503be197",
      "parents": [
        "8a9c2bdcf44b35d45852d47ce002c094106f6555"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Sep 30 11:38:42 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Sep 30 14:53:09 2026 +0100"
      },
      "message": "Match IBM\u0027s existing IAM auth plugin more closely.\n\nThis makes it match the IBM plugin, just nested under the \"ibm\"\nvendor object. This will make it easier to configure Cloudant and\nCouchDB systems.\n"
    },
    {
      "commit": "8a9c2bdcf44b35d45852d47ce002c094106f6555",
      "tree": "0273d5c72b0417a892594d931d47116c6bb4ac75",
      "parents": [
        "56c237abe9cb0623796d235e19cb9367d490e72e"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Sep 30 01:06:16 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Sep 30 09:44:35 2026 -0400"
      },
      "message": "Improve redirects in replicator\n\nLimit replicator redirects to a few tries.\n\nCo-Authored-By: Robert Newson \u003crnewson@apache.org\u003e\n"
    },
    {
      "commit": "56c237abe9cb0623796d235e19cb9367d490e72e",
      "tree": "aea6bbca6b10ace526486770c291d84c9c5d530b",
      "parents": [
        "0c6a10cfba917efcaaa39e80300789f10f8f6266",
        "cedae8ade2b635d092437d3eaaf2cff777e2df07"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Sep 29 19:19:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 19:19:50 2026 +0100"
      },
      "message": "Merge pull request #6069 from apache/ibm-iam-auth\n\ncouch replication auth plugin for IBM IAM with refresh"
    },
    {
      "commit": "cedae8ade2b635d092437d3eaaf2cff777e2df07",
      "tree": "aea6bbca6b10ace526486770c291d84c9c5d530b",
      "parents": [
        "0c6a10cfba917efcaaa39e80300789f10f8f6266"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Jun 29 13:27:32 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Sep 29 13:28:35 2026 +0100"
      },
      "message": "couch replication auth plugin for IBM IAM with refresh\n\nCo-authored-by: Nick Vatamaniuc \u003cvatamane@gmail.com\u003e\n"
    },
    {
      "commit": "0c6a10cfba917efcaaa39e80300789f10f8f6266",
      "tree": "de415a3a463c507c610159020d1e0d5b85b28ffd",
      "parents": [
        "39963bf9805964ed2f6f14c2669aa25392379a52"
      ],
      "author": {
        "name": "readyprompt",
        "email": "shadowram@protonmail.com",
        "time": "Mon Sep 28 22:11:44 2026 -0500"
      },
      "committer": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Tue Sep 29 09:02:34 2026 +0200"
      },
      "message": "Escalate to SIGKILL in dev/run teardown\n\nA deadlocked Clouseau node can ignore SIGTERM (its JVM shutdown hook\nwedges), leaving it holding its epmd node name and poisoning the next\nmake retry. After SIGTERM, wait a short time for each process to exit,\nthen SIGKILL any survivor so the node name is released.\n"
    },
    {
      "commit": "39963bf9805964ed2f6f14c2669aa25392379a52",
      "tree": "6645cac5b9e30e7808be21fecec8ec4a7372749b",
      "parents": [
        "801f61773f25c16bd9b140154b8163d8df0f78ff"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Sep 28 15:23:39 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Sep 28 19:24:04 2026 -0400"
      },
      "message": "Fix scanner backoff logic\n\nIt was inverted before. We want to \"forgive it\" if it worked fine a while so we\nwant the Now-Start to to be greater than our heal interval.\n"
    },
    {
      "commit": "801f61773f25c16bd9b140154b8163d8df0f78ff",
      "tree": "c8bc00d345d93752326351d83b0139da8eaec227",
      "parents": [
        "83a487b754af09d271ce44a60fae6e4f4c24aa8b"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Sat Sep 26 12:52:48 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Sep 26 15:50:51 2026 -0400"
      },
      "message": "Update QuickJS\n\n* Fix memory leaks in Atomics.store https://github.com/bellard/quickjs/commit/c8ef88981b9ef4e791ea0e4c7fc7a0687ed3bc1c\n\n* Reject out-of-range limits on Iterator.prototype.take/drop https://github.com/bellard/quickjs/commit/d88b1ed67e83e294b1c5f30453022689e61fed1d\n\n* Fix BigInt.AsUintN() https://github.com/bellard/quickjs/commit/c17f7fc1db6ee691bb73cb3aad82ea4c08ba66b8\n\n* Fix regex unicode set parsing https://github.com/bellard/quickjs/commit/a479eff9e24a6608a7c587c6b3a5a3ac690b26f1\n\n* Some C API additions, we don\u0027t use them https://github.com/bellard/quickjs/commit/87dc7cbaa8b50fabf7f1432101d68bfb71156964 https://github.com/bellard/quickjs/commit/21cbd86b016c925e6b01a7e0ad2cfa7889142290\n\n* Test262 update, we had to update our patch for test262\nhttps://github.com/bellard/quickjs/commit/f835c1d76204ab688b1a72cca5422a4e394fed2b https://github.com/bellard/quickjs/commit/a38171d37357edff256c28a73eaeb41d2466d1d5\n"
    },
    {
      "commit": "83a487b754af09d271ce44a60fae6e4f4c24aa8b",
      "tree": "a3114c892f7b07a3085483fe55378eeb97e2f44a",
      "parents": [
        "d072d90125e39c41b8e4947a89691c6e5ad23c77"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Sep 24 01:28:56 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Sep 25 13:22:28 2026 -0400"
      },
      "message": "Fix attachment revisions when recreating a deleted doc\n\nWhen we re-create a deleted doc, we forgot to update the revpos of the\nattachments. They were left at 1- when they should be at 3-\n\nFixes: https://github.com/apache/couchdb/issues/6126\n"
    },
    {
      "commit": "d072d90125e39c41b8e4947a89691c6e5ad23c77",
      "tree": "5788896dd8ad41ae83d6d979a9dadbb62beaec0a",
      "parents": [
        "a24ee439357e73aa2a0b755068ef2de3a712d40b"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Thu Sep 24 19:48:30 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Sep 25 10:28:25 2026 -0400"
      },
      "message": "Update Erlang to 27.3.4.18\n"
    },
    {
      "commit": "a24ee439357e73aa2a0b755068ef2de3a712d40b",
      "tree": "27273bb8e8ff4c424738916c13d77de452e2d1ad",
      "parents": [
        "593a2eb8cc530db03258044cc47ef93f94e57e84",
        "280fe2129bf56bc1b513771065ac6397dbb37947"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 24 22:45:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 24 22:45:50 2026 +0100"
      },
      "message": "Merge pull request #6096 from apache/nouveau-fixes\n\nNouveau fixes"
    },
    {
      "commit": "280fe2129bf56bc1b513771065ac6397dbb37947",
      "tree": "27273bb8e8ff4c424738916c13d77de452e2d1ad",
      "parents": [
        "36c7cccdf4beb99ac32d6b0f87c85ecf8d16dc7d"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Aug 18 14:56:44 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 24 21:52:46 2026 +0100"
      },
      "message": "Analyzer\u0027s are Closeable, so ensure we close\n"
    },
    {
      "commit": "36c7cccdf4beb99ac32d6b0f87c85ecf8d16dc7d",
      "tree": "a7e3b1fa72821e0e079adf85d0453ac0a4e5d2ab",
      "parents": [
        "0095e07ee98bd2956138e58e84783dc2c8e83c8b"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Aug 18 14:56:27 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 24 21:52:46 2026 +0100"
      },
      "message": "make delete method consistent with update method\n"
    },
    {
      "commit": "0095e07ee98bd2956138e58e84783dc2c8e83c8b",
      "tree": "4fd51700830c9e549763077d6492174075fba677",
      "parents": [
        "593a2eb8cc530db03258044cc47ef93f94e57e84"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Aug 18 14:56:07 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 24 21:52:46 2026 +0100"
      },
      "message": "use defaultValue in all cases\n"
    },
    {
      "commit": "593a2eb8cc530db03258044cc47ef93f94e57e84",
      "tree": "142cbf6184f10182b1bf38aeda496cece1a2d688",
      "parents": [
        "1582cf98c5ac97f701c809ee2668026ff8a9a5b1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Sep 15 12:11:37 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Sep 24 14:42:41 2026 -0400"
      },
      "message": "Implement _index_info endpoint\n\nImplement a new `/{db}/_index_info` endpoint to return the status of all the\nindexes in the database in a single endpoint. It matches the general pattern of\n`_dbs_info` where we return the db info for all databases in a cluster. Just\nlike with _db_infos, where it doesn\u0027t return anything new just a better and\nmore optimized summary of all dbs, the new endpoint returns all the index\nstatus in a single endpoint. User could, for example, fetch all the design\ndocs, parse them, and with an if/else check call a per-index specific _info\nendpoint such as /{db}/_design/{ddoc}/_info,\n/{db}/_design/{ddoc}/_nouveau_info/{index} etc. to get all this information,\nbut that\u0027s not very ergonomic and it\u0027s slower.\n\nOne of the main uses of this endpoint is to find out when all the indexes in\nthe db have been built. Each index returns an `updates_pending` object with the\npending bounds across all copies of each range. With a minimum (the best copy),\nmaximum (the worst copy) and a count of how many live copies returned a valid\nresult. This information is more accurate than what we might get with the view\ngroup _info calls. It turns out that for view groups _info we broke the\nminimum/preferred/total `updates_pending` stats some point.\nThat happened when we switched the collection to work as a ring (the\nCOUCHDB-3053 dedup fix), so then only the first responding copy of each range\nis aggregated, total \u003d minimum and preferred only counts the responding shards.\nThe new endpoint on the other hand, waits and aggregates stats from all copies\nof the index.\n\nTo fix the COUCHDB-3053 dedup issue update the indivdual indexes _info\nendpoints to return the same correct `updates_pending` structure for all\nindexes. To avoid changing the API response this PR only adds fields and\ndoesn\u0027t remove or change existing ones.\n\nThe endpoint is driven by the list of design docs so it borrows the\nstart/end/limit traversal parameters from _design_docs. To improve traversal\ninstead of `offset` the endpoint returns a `bookmark` result. User may use the\nbookmark as the `startkey` to paginate results.\n\nJust like the `_dbs_info` endpoint, add a max limit parameter configured as\n`[chttpd] max_ddoc_number_for_index_info_req`. If a request selects more design\ndocs than that then a 400 `too_many_design_docs` is returned.\n"
    },
    {
      "commit": "1582cf98c5ac97f701c809ee2668026ff8a9a5b1",
      "tree": "63df6c930b04c62f73dba5decbf0e8dc68ca502b",
      "parents": [
        "684e67c0da546493a3bb47d478c9c9cc6479d41e"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Sep 24 02:45:58 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Sep 24 12:16:01 2026 -0400"
      },
      "message": "Preserve view purge sequences when compacting\n\nPreviously, the view\u0027s new state was initialized with the purge sequence of the\ndb. But the view might not have yet processed all the purges up until that db\npurge sequence. That lead to us possibly skipping over purges in the view (the\nones that occurred right before the compaction started). To avoid that,\npreserve the view\u0027s old purge sequence and carry that over to the new state.\nAfter compaction swaps it can continue processing those purges where it left\noff.\n\nFix: https://github.com/apache/couchdb/issues/6128\n"
    },
    {
      "commit": "684e67c0da546493a3bb47d478c9c9cc6479d41e",
      "tree": "f41cad96900a658d874f325afb092a37f8602343",
      "parents": [
        "d84f6e32597ccd812ba3c33ad2083baebe091263",
        "5a1ffbb3776c4da11e90ca951aff601ef83ae906"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Sep 23 10:29:13 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 23 10:29:13 2026 +0100"
      },
      "message": "Merge pull request #6125 from apache/nouveau-string-sorting\n\nfix nouveau string sorting order"
    },
    {
      "commit": "5a1ffbb3776c4da11e90ca951aff601ef83ae906",
      "tree": "f41cad96900a658d874f325afb092a37f8602343",
      "parents": [
        "d84f6e32597ccd812ba3c33ad2083baebe091263"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Sep 22 22:52:57 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Sep 23 07:54:59 2026 +0100"
      },
      "message": "fix nouveau string sorting order\n\nMatch Java\u0027s string sorting order (lexicographical)\n"
    },
    {
      "commit": "d84f6e32597ccd812ba3c33ad2083baebe091263",
      "tree": "686a4db9914a2256e0aaf8ce75c75d9488161215",
      "parents": [
        "e3a1a649b7a45ae0343713327c2ea17d39409df1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Sep 22 13:19:06 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Sep 22 15:55:36 2026 -0400"
      },
      "message": "Disable PPC64LE CI run\n\nThe worker disconnected and is not reacheable by SSH. If it comes back soon\nwe\u0027ll re-enable it, if it\u0027s gone for a while we\u0027ll just remove support for\nPPC64LE.\n"
    },
    {
      "commit": "e3a1a649b7a45ae0343713327c2ea17d39409df1",
      "tree": "31e5bedef16b76eaf3e219274eb6dd409349c710",
      "parents": [
        "f5e6aa5ef501dd372112dac371918495fe434276"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Sep 22 11:19:26 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Sep 22 15:55:36 2026 -0400"
      },
      "message": "Add a test for mango ID collation\n\nThis is a follow up to https://github.com/apache/couchdb/pull/6121\n"
    },
    {
      "commit": "f5e6aa5ef501dd372112dac371918495fe434276",
      "tree": "b07b9d63930dbf5671aee2aed859364a8f3361ad",
      "parents": [
        "0185416bf0cf8427d295de096742bd668ce330b9"
      ],
      "author": {
        "name": "readyprompt",
        "email": "shadowram@protonmail.com",
        "time": "Sun Sep 20 15:02:00 2026 -0500"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Sep 21 22:22:50 2026 -0400"
      },
      "message": "Fix silent row loss in Mango _id range queries\n\nThe silent row loss in Mango _id range queries was originally\naddressed in 55ad18eeb (2014, \"Fix broken comparisons on _id fields\").\n\nIt regressed with f231a28a0 because selector fields \u003c\u003c\"_id\"\u003e\u003e were\nnormalized to [\u003c\u003c\"_id\"\u003e\u003e]. The failure to match caused a fall-back to\nICU collation. This failure caused the post-scan filter to silently\ndrop documents.\n\nCorrected mango_selector:match/3 to correctly match the normalized\nfield and added a regression test.\n"
    },
    {
      "commit": "0185416bf0cf8427d295de096742bd668ce330b9",
      "tree": "aab9599162332e3f1957a96bc834a9be1adc171e",
      "parents": [
        "4bc5b86309ba4db0a1b7dedae146207bead6b336"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Sep 16 10:46:56 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Sep 17 14:17:54 2026 -0400"
      },
      "message": "Optimize B-tree chunk size default\n\nSwitch from 1279 to 4096\n\nThe chunk size is the limit at which B-tree nodes are split. 1279 default was\nset 18+ [0] years ago by Damian after benchmarking on his personal laptop with\na spinning hard drive [1]. Nowadays most disks are SSDs and usually have a 4KB\nblock size. We may read and write 1279 bytes but a modern disk will still do\nthe IO work to read 4KB blocks then throw the rest away. So it makes sense to\nadjust it a bit to avoid wasting all that IO bandwidth for nothing.\n\nBesides just the increased IO having a such a low default makes our B-tree\ndeeper which in turn generates even more IO and inflates our \"active\" size.\nRaising the threshold to 4096 reduces the tree depth. For example on 200K doc\ncouch file Id tree went from depth 6 to 4 and the Seq tree from 4 to 3. This\nalso reduced the active size by about 25%. (To get an idea of what the B-tree\ndepths are there is a new depth function in `couch_btree` module and a bunch of\nhelper functions in `couch_debug` calling it).\n\nThe value of 4096 was first published in a research paper [2] by Chung et al.\non optimizing CouchDB for their embedded storage application. They saw a 20%\nTPS improvement with 4096 chunk size. To validate the setting we ran a k6\nbenchmark test on a large cluster with concurrent doc updates and reads.\n\nOur test setup:\n  12 node cluster\n  Q\u003d32, N\u003d3\n  10M docs, size 256B\n  1000 reads/s\n  200 writes/s\n  1000 writes/s via _bulk_docs\n  4 1 hour trials with each setting\n\nSetting changed:\n btree_chunk_size 1279 -\u003e 4096\n\nResults:\n  | Scenario   | P50 (msec)                | P90 (msec)             |\n  |------------|---------------------------|------------------------|\n  | doc_get    | 6.9 -\u003e 5.1 (-27%)         | 11.1 -\u003e 6.4 (-43%)     |\n  | doc_insert | 12.2 -\u003e 8.3 (-32%)        | 37.5 -\u003e 10.9 (-71%)    |\n  | doc_update | 14.1 -\u003e 9.0 (-36%)        | 44.4 -\u003e 12.2 (-73%)    |\n  | bulk_docs  | 101 -\u003e 64 (-37%)          | 136 -\u003e 83 (-39%)       |\n\nWe do even better than what Chung et al. found. It could be because we now have\na B-tree block cache which favors shallow B-trees as it prioritizes nodes\ncloser to the root.\n\n[0]\nhttps://github.com/apache/couchdb/commit/10881200f1d6761d504badb2e12a16a38033c721\n\u003e Damien F. Katz committed on Jul 28, 2008\n\n[1]\nhttps://web.archive.org/web/20120315120536/http://ayende.com/blog/3609/more-couchdb-reading-btree-query-modify\n\n\u003e The ideal size of CHUNK_THRESHOLD was determined to be 0x4FF when timing some\ntest runs on my MacBook Pro.\n\n[2] https://arxiv.org/pdf/1912.11456 Performance Tuning and Scaling Enterprise\nBlockchain Applications. Grant Chung et al.\n"
    },
    {
      "commit": "4bc5b86309ba4db0a1b7dedae146207bead6b336",
      "tree": "a7bbb899e0210f0f71ed282798d0a3244de4d60b",
      "parents": [
        "c09e64a7c692bf09f627412c11822828d04e14c7"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Sat Sep 12 05:08:09 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Sep 15 17:58:49 2026 -0400"
      },
      "message": "Optimize and improve change sequence decoding\n\nPreviously the sequence regex checker `\"^\\\"?([0-9]+-)?(?\u003copaque\u003e.*?)\\\"?$\"` was\n2-3 times slower than a simple matching and string module calls. A Q64 sequence\nused to take 120usec to decode, and the new code takes 50usec. Q8 used to take\n25usec, and now it takes 10usec (there is some time spent just setting up the\nre:run/1).\n\nAlso, while at it add some extra validation when decoding: range types, use the\nrecent `[safe]` flag. To ensure replaced nodes keep getting accepted, ensure to\nintern all the deleted `_nodes` doc IDs at node startup. Since we fixed it here\nalso apply the same improvement to dreyfus bookmarks.\n"
    },
    {
      "commit": "c09e64a7c692bf09f627412c11822828d04e14c7",
      "tree": "4fce86e13b1649420fb44c1f9561530bc6645e39",
      "parents": [
        "444bf3aa6ec3c97c39205c5a5ebcc4d338f45890",
        "380ae0798e0f309d38d4e6e30220bf07ba02402e"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Sep 14 19:22:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 19:22:23 2026 +0100"
      },
      "message": "Merge pull request #6114 from apache/couch_file-perf-regression-fix\n\nCouch file perf regression fix"
    },
    {
      "commit": "380ae0798e0f309d38d4e6e30220bf07ba02402e",
      "tree": "4fce86e13b1649420fb44c1f9561530bc6645e39",
      "parents": [
        "c3b9759a3c2d5fd3418637e70294d22b8007170c"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 10 17:28:03 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Sep 14 16:53:30 2026 +0100"
      },
      "message": "add optional eof validation in couch_file\n"
    },
    {
      "commit": "c3b9759a3c2d5fd3418637e70294d22b8007170c",
      "tree": "d023e825870337e2984ec75d40e04afe1c1f1418",
      "parents": [
        "444bf3aa6ec3c97c39205c5a5ebcc4d338f45890"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 10 17:21:32 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Sep 10 17:21:32 2026 +0100"
      },
      "message": "Revert \"eliminate internal tracking of EOF\"\n\nThis reverts commit 38770829f114505d667d3bcc79a5b34a523a733e.\n"
    },
    {
      "commit": "444bf3aa6ec3c97c39205c5a5ebcc4d338f45890",
      "tree": "c407a043a0d9adcfde32f050dbba4026b5d2c10f",
      "parents": [
        "14c7423c67ed21081a19de8745714364cf638242"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Thu Sep 10 02:47:50 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Sep 10 03:48:52 2026 -0400"
      },
      "message": "Update Erlang to the latest patches\n"
    },
    {
      "commit": "14c7423c67ed21081a19de8745714364cf638242",
      "tree": "81e82ca7f292c479a56fb01f78b3752f9314dd28",
      "parents": [
        "78395184b02cdc9573c3536ec72721fb353d5442"
      ],
      "author": {
        "name": "meator",
        "email": "meator.dev@gmail.com",
        "time": "Tue Sep 08 22:14:44 2026 +0200"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Sep 08 16:36:43 2026 -0400"
      },
      "message": "Add 3.5.2 to GitHub issue template\n"
    },
    {
      "commit": "78395184b02cdc9573c3536ec72721fb353d5442",
      "tree": "d51128ecafb9dd98435d3d67932a303e30cc659a",
      "parents": [
        "39d769793c7f3bd968c785c4127bc83197e8e4ac"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Aug 21 17:30:33 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Sep 03 17:42:20 2026 -0400"
      },
      "message": "Use gun in tests\n\nSince we have gun and it\u0027s proven its worth in nouveau let\u0027s use for tests as\nwell. The bigger idea is to use for replication but let\u0027s make a smaller step\nfirst and see how it fares in unit and elixir tests.\n\nTo help with unit tests created a simpler compatibility couch_gun module.\nDependency-wise we just have to ensure gun is started but otherwise it\u0027s\nalready present there for nouveau so we don\u0027t need to bring anything new in,\nwhich is nice.\n\nElixir tests used httpotion based on ibrowse. That client is deprecated we have\nbeen getting \"httpotion is unmaintained\" warnings for a while now (this was\nanother reason to attempt this PR). In many ways gun provides a nicer\nabstraction to streaming, so we could also simplify some of the worker\nstart/stop and direct or pid:once hacks. Dependency-wise we don\u0027t have to do\nanything gun and cowlib are already present we can just clean up httpotion and\nibrowse from elixir deps.\n"
    },
    {
      "commit": "39d769793c7f3bd968c785c4127bc83197e8e4ac",
      "tree": "44549ba50c049b9bfb3a5741f92afc14f97442ce",
      "parents": [
        "0783f6799f09fd06690e0b46e122692cc642615b"
      ],
      "author": {
        "name": "Ezhov, Egor",
        "email": "egor.ezhov.ooma@outlook.com",
        "time": "Mon Aug 31 07:27:08 2026 -0700"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Aug 31 11:31:44 2026 -0400"
      },
      "message": "Fix group_by_proximity to return SameZone shards correctly.\n\nIf the local node (coordinator) does not contain the shard,\n`group_by_proximity` returns empty list for SameZone shards list.\n\nIf the `group_by_proximity` is called with list of shards without\nlocal node, the LocalNode variable is set to \u0027undefined\u0027.\nAs a result, the SameZone list is empty and all shards are set\nto the DifferentZone list.\n\nThe solution is to use local node info to define LocalZone var\n"
    },
    {
      "commit": "0783f6799f09fd06690e0b46e122692cc642615b",
      "tree": "4431574d63f2b64583eba28a77964eaf884c0db1",
      "parents": [
        "b74d7b39220f74ac421db0ae30974796ad069a66"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Aug 24 16:36:09 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Aug 24 18:12:08 2026 -0400"
      },
      "message": "Fix typo in source check in mem3 reshard logic\n\nPreviously we matched both the shard record and the shard name to the same\nvariable. Fix the match and slighly improve readability by making a small\nfunction for it.\n"
    },
    {
      "commit": "b74d7b39220f74ac421db0ae30974796ad069a66",
      "tree": "c0f80da9677162cf2dc4ebd375464e712ee03d0f",
      "parents": [
        "eafd839f47300d402bdcce8687b725e242953568"
      ],
      "author": {
        "name": "lacklacklack",
        "email": "ytmlczucz@gmail.com",
        "time": "Fri May 22 20:40:33 2026 +0200"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Aug 24 12:29:55 2026 -0400"
      },
      "message": "Add request compression to replicator\n"
    },
    {
      "commit": "eafd839f47300d402bdcce8687b725e242953568",
      "tree": "26a249d6d1fba81da60c612af5d38d8d0c139789",
      "parents": [
        "9324d3ad022fa03b86e83d3ef818d19f104dc08d"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Mon Aug 24 05:43:14 2026 +0200"
      },
      "committer": {
        "name": "PÁLI Gábor János",
        "email": "pali.gabor@gmail.com",
        "time": "Mon Aug 24 05:49:27 2026 +0200"
      },
      "message": "docs: remove the Chef cookbook option for the Search plugin\n\nThe Chef cookbook integration will not work with the new version of\nClouseau.  But it is very likely that the cookbook will not work\nwith any recent version of CouchDB either.  So it is better to drop\nthe reference to that from the installation guide.\n"
    },
    {
      "commit": "9324d3ad022fa03b86e83d3ef818d19f104dc08d",
      "tree": "ef82381c39f39bb19a1abbe7b991dd002cd3d5c2",
      "parents": [
        "aa487659ee791731936168e095d6b6dee9bd9545"
      ],
      "author": {
        "name": "Gabor Pali",
        "email": "gabor.pali@ibm.com",
        "time": "Mon Aug 24 05:42:58 2026 +0200"
      },
      "committer": {
        "name": "PÁLI Gábor János",
        "email": "pali.gabor@gmail.com",
        "time": "Mon Aug 24 05:49:27 2026 +0200"
      },
      "message": "docs: update Search installation instructions\n\nClouseau 3.x has now become the supported version of Search, which\nworks with more recent Java versions (in contrast to 2.x) and it\nfeatures a new configuration file format (but with the same\nparameters).  Update the respective part of the installation guide\nto chase these changes.\n"
    },
    {
      "commit": "aa487659ee791731936168e095d6b6dee9bd9545",
      "tree": "0ca6d1b620ff2ebbd6b912f331fad3b04c0edfa5",
      "parents": [
        "732bc90e48a0fbe49bc803e6a49080c9c4a700f1"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sun Aug 23 21:54:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 23 21:54:42 2026 +0200"
      },
      "message": "ci: Adjust Windows CI settings (#5990)\n\nThe env variable `CLOUSEAU_JAVA_HOME` is usually set via couchdb-glazier.\nIncrease GNU make EUNIT opts for faster testing."
    },
    {
      "commit": "732bc90e48a0fbe49bc803e6a49080c9c4a700f1",
      "tree": "4c0c79586107d551b49c791ef15858c9500af91b",
      "parents": [
        "279fd41e8d714358b965673f154e531ef6d0ed23"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Thu Aug 20 21:39:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 21:39:51 2026 +0200"
      },
      "message": "chore: Update build status image link in README (#6097)\n\nThe ASF Infra team restored the Jenkins CI instance and the path for the build status has changed."
    },
    {
      "commit": "279fd41e8d714358b965673f154e531ef6d0ed23",
      "tree": "1474230844e0b172f05301ab9c8671247c116da6",
      "parents": [
        "01250dd964d6ddded7cd8f556560167a59aaf480"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@apache.org",
        "time": "Sun Aug 16 13:01:27 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sun Aug 16 13:57:37 2026 -0400"
      },
      "message": "New release notes:\n\nhttps://github.com/mochi/mochiweb/releases#release-v3.5.0\n\n * Add gzip and zstd chunked response compression in https://github.com/mochi/mochiweb/pull/268\n * Add one-shot response compression in https://github.com/mochi/mochiweb/pull/269\n * Switch to passive mode and handle more corner cases in https://github.com/mochi/mochiweb/pull/270\n"
    },
    {
      "commit": "01250dd964d6ddded7cd8f556560167a59aaf480",
      "tree": "80fd8cade0c697718774b53387f576d1626e061c",
      "parents": [
        "c4c48218babc47f03e9c4955d7c765e643fad2c5"
      ],
      "author": {
        "name": "Ronny Berndt",
        "email": "ronny@apache.org",
        "time": "Sun Aug 16 17:14:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 17:14:28 2026 +0200"
      },
      "message": "docs: Fix inline link (#6094)"
    },
    {
      "commit": "c4c48218babc47f03e9c4955d7c765e643fad2c5",
      "tree": "a74225a04c93cac00ed02ae6fa49238d3eed1e70",
      "parents": [
        "2b204219e3dba385fa5a3f71b2970b67bb50d145"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Aug 14 14:05:34 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Aug 14 16:05:59 2026 -0400"
      },
      "message": "Disable s390x again\n\nNoticed repeated timeouts in `couch_cfile_prop_tests:\u0027-property_test_/0-fun-2`.\nIt seems the CI worker gets good enough fio throughput numbers but then\nperiodically has issues flushing data to disk in a timely fashion. Ideally we\ndon\u0027t want to start disabling individual tests especially for something as\ncrucial as cfile and fdatasync we\u0027ll disable the CI for now. No other\narchitectures CI nodes seem to have this issue.\n"
    },
    {
      "commit": "2b204219e3dba385fa5a3f71b2970b67bb50d145",
      "tree": "3fb6252c632034515968324d1fcdeec7ffa63936",
      "parents": [
        "b578275561ff3213637de0a35ccf64892bffe3b2"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Aug 11 18:32:05 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Aug 12 10:54:44 2026 -0400"
      },
      "message": "Fix secondary worker conflicts case for sws\u003dtrue\n\nIn sws\u003dtrue case, secondary replies (from non-owner) should generate accepted\nresponses instead of conflicts.\n\nWith sws\u003dtrue the owner already replied with `ok` means there at least one good\nupdate of that document. Secondaries returning conflicts means they are simply\nlagging. That\u0027s the same calculation logic as previously (sws\u003dfalse) when we\ngot one ok and two errors. Otherwise we get into a situation when clients\ncannot make progress: they get a rev, do the update (on the owner) but then\nkeep getting conflicts until the internal replicator catches up. Retrying will\nfix the problem eventually but we don\u0027t want to emit too many 409 and that\u0027s\nnot optimal.\n"
    },
    {
      "commit": "b578275561ff3213637de0a35ccf64892bffe3b2",
      "tree": "baf7645330029dc7f414a31fa8f5c1e6290e25c8",
      "parents": [
        "a6778e5d49a5df32a8eeeff4bf55d0e24ff688a6"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Aug 11 01:23:47 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Aug 11 03:30:36 2026 -0400"
      },
      "message": "Update CI erlang versions also move base from bookworm to trixie\n\nBullseye is going out of support this month and we\u0027re told bookworm is losing\nits s390x arch support (as an old-enough LTS) [1]. So move the base CI images\nto trixie, remove bullseye and replace it with bookworm.\n\n[1]\nhttps://github.com/docker-library/official-images/pull/21977#issuecomment-5172421111\nhttps://wiki.debian.org/LTS/Bookworm\n"
    },
    {
      "commit": "a6778e5d49a5df32a8eeeff4bf55d0e24ff688a6",
      "tree": "ca21a0c699825566c695c417b5935e832a7580a5",
      "parents": [
        "bd09782ca0a7fb4a4735ffc3cee8a0ec5af10b43",
        "3b59e2b3671a77ba825de97a619fe58b50ebdac2"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Aug 06 17:13:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 17:13:50 2026 +0100"
      },
      "message": "Merge pull request #6090 from apache/improve-invalid-auth-header-handling\n\nbase64:decode throws error:badarg too"
    },
    {
      "commit": "3b59e2b3671a77ba825de97a619fe58b50ebdac2",
      "tree": "ca21a0c699825566c695c417b5935e832a7580a5",
      "parents": [
        "bd09782ca0a7fb4a4735ffc3cee8a0ec5af10b43"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Aug 06 14:15:24 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Aug 06 16:27:06 2026 +0100"
      },
      "message": "base64:decode throws error:badarg too\n\nExpand what errors when base64 decoding we handle\n"
    },
    {
      "commit": "bd09782ca0a7fb4a4735ffc3cee8a0ec5af10b43",
      "tree": "8667597a0d86b8da36ffc7489efb0ecd1fd14712",
      "parents": [
        "a06d0ba1c6c77533e965ee81392f5b8b913191f8",
        "7056805c7554439a6b2860bf3c037ca0be15ed6d"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Aug 05 15:28:57 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 15:28:57 2026 +0100"
      },
      "message": "Merge pull request #6089 from apache/changes-validation\n\nChanges validation"
    },
    {
      "commit": "7056805c7554439a6b2860bf3c037ca0be15ed6d",
      "tree": "8667597a0d86b8da36ffc7489efb0ecd1fd14712",
      "parents": [
        "4eefae8952bf657d1a3f6ef30d00eef95387bd80"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Aug 04 18:35:54 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Aug 05 09:45:02 2026 +0100"
      },
      "message": "remove erroneous comment\n\ncloses #6088\n"
    },
    {
      "commit": "4eefae8952bf657d1a3f6ef30d00eef95387bd80",
      "tree": "611b10471e1ca5f964eac22e520480993fb0665d",
      "parents": [
        "a06d0ba1c6c77533e965ee81392f5b8b913191f8"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Aug 04 18:32:59 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Wed Aug 05 09:45:02 2026 +0100"
      },
      "message": "validate limit and timeout parameters to _changes\n\ncloses #6087\n"
    },
    {
      "commit": "a06d0ba1c6c77533e965ee81392f5b8b913191f8",
      "tree": "97c1364781bd32bfb2684a17cefd590a19d3579f",
      "parents": [
        "5dd12873cc3f535d52812296304dbf1052103d87",
        "434f118cbed846226dc2107d70aa3f12392fa793"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri Jul 31 17:57:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 17:57:17 2026 +0200"
      },
      "message": "Merge pull request #6084 from apache/test/mango-cursor-timeout\n\ntest(mango-cursor): increase timeouts"
    },
    {
      "commit": "434f118cbed846226dc2107d70aa3f12392fa793",
      "tree": "97c1364781bd32bfb2684a17cefd590a19d3579f",
      "parents": [
        "5dd12873cc3f535d52812296304dbf1052103d87"
      ],
      "author": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri Jul 31 15:28:27 2026 +0200"
      },
      "committer": {
        "name": "Jan Lehnardt",
        "email": "jan@apache.org",
        "time": "Fri Jul 31 15:47:24 2026 +0200"
      },
      "message": "test(mango-cursor): increase timeouts\n"
    },
    {
      "commit": "5dd12873cc3f535d52812296304dbf1052103d87",
      "tree": "456f25473c2995b43491ddddd2363ebaf1831ec8",
      "parents": [
        "674bd17dd8b598220827025513c85c61d03b1a93"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Jul 30 18:07:09 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jul 31 00:38:49 2026 -0400"
      },
      "message": "Fix elixir warnings\n\nWarnings (not sure how long these have been around) showed some errors in the\ntests like unused variables, using strings keys instead of having to quote\nthem. The duplicates in the mango tests were ported from Python but they are\njust noise as the last entry wins and if we want to test duplicate JSON\nbehavior in Python or Elixir we should do that in a different test.\n"
    },
    {
      "commit": "674bd17dd8b598220827025513c85c61d03b1a93",
      "tree": "163dc87da05e2a2c1cd99eebe289037763036c96",
      "parents": [
        "22c6066f2be598db59f73dfa46363a7bb603c0d1"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Jul 30 16:45:25 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jul 31 00:38:49 2026 -0400"
      },
      "message": "Fix elixir tests\n\nAfter updating credo it showed a bunch of issues. FindConflicts was\nmisnamed, some mango tests were copy pasted wrong. The test finder helper\ncouldn\u0027t find mango tests since they are level lower and we didn\u0027t use a\nrecursive search pattern. `pretty_print` had the wrong args order swapped when\ncalling `map_join/3`. A few test helpers are not really tests so can just import\nwhat they need.\n"
    },
    {
      "commit": "22c6066f2be598db59f73dfa46363a7bb603c0d1",
      "tree": "22ba73996fb0a667a0fd13bfed7f5828212e9db1",
      "parents": [
        "0eb3ec67e3450e3ca71846e067227ae4668f0beb"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Thu Jul 30 15:54:22 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jul 31 00:38:49 2026 -0400"
      },
      "message": "Update various helper deps: credo, elixir, meck\n\nUnfortunately (or fortinately) credo discovered a bunch of issues in the test\nsuite. Those will be fixed in a separate commit.\n"
    },
    {
      "commit": "0eb3ec67e3450e3ca71846e067227ae4668f0beb",
      "tree": "db73d2862f9c2b815f3840756d62a1a4d15d7112",
      "parents": [
        "f5d5bdfc07e68bd774e6e394718872cc02355eda"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Tue Jul 28 19:36:56 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jul 29 11:19:30 2026 -0400"
      },
      "message": "Handle errors better in index cleanup\n\nPreviously, if a node was down when cleaning up any indexes we\u0027d get an\nexception like:\n\n```\n{erpc,noconnection} : node@host\n     [\u003c\u003c\"erpc:receive_response/3 L1442\"\u003e\u003e,\u003c\u003c\"dreyfus_fabric_cleanup:recv/3 L54\"\u003e\u003e\n     [\u003c\u003c\"erpc:receive_response/3 L1442\"\u003e\u003e,\u003c\u003c\"dreyfus_fabric_cleanup:recv/3 L54\"\u003e\u003e,...\n```\n\nWe can handle that better by anticipating a few more error conditions:\nnoconnection, exits, throws, timeouts.\n\nTo avoid copying the mess in three place let\u0027s just use a single helper\nfunction in fabric.\n\nAdd tests for all the silly bits.\n"
    },
    {
      "commit": "f5d5bdfc07e68bd774e6e394718872cc02355eda",
      "tree": "a476216dab22a82a7fa39522afee235564330892",
      "parents": [
        "654122981ff1ef83db5d79edb3304736d09bd30e"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jul 29 03:10:22 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jul 29 09:51:33 2026 -0400"
      },
      "message": "Update gun to 2.5.0\n\nChangelog:\n https://github.com/apache/couchdb-gun/compare/CouchDB-2.4.1-1...CouchDB-2.5.0-1\n"
    },
    {
      "commit": "654122981ff1ef83db5d79edb3304736d09bd30e",
      "tree": "9d3c3ca4f189d4238a6302bb31b2ab8885fe4973",
      "parents": [
        "977fecb535c4e50a2d1356469b670c6da0e6d7b9",
        "b22922c27b93b1113bb0b9e1c5d55e861f429f86"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Jul 28 19:28:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 19:28:27 2026 +0100"
      },
      "message": "Merge pull request #6078 from apache/nouveau-6075-sort-by-relevance\n\nFix explicit sorting by relevance/score"
    },
    {
      "commit": "b22922c27b93b1113bb0b9e1c5d55e861f429f86",
      "tree": "9d3c3ca4f189d4238a6302bb31b2ab8885fe4973",
      "parents": [
        "977fecb535c4e50a2d1356469b670c6da0e6d7b9"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Jul 28 13:30:18 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Tue Jul 28 14:01:07 2026 +0100"
      },
      "message": "Fix explicit sorting by relevance/score\n\nAlso fixed some misleading docs (from the original import from previous search docs)\n\nCloses https://github.com/apache/couchdb/issues/6075\n"
    },
    {
      "commit": "977fecb535c4e50a2d1356469b670c6da0e6d7b9",
      "tree": "ed5d37f06caabac8db1c459e44b1ffb830ca7a07",
      "parents": [
        "c2a97ae6829f7617e8be7612501c90aba6785f19"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Jul 27 18:02:16 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Jul 28 08:43:54 2026 -0400"
      },
      "message": "Quadratic speed up in _bulk_docs in pair_write_info\n\nPreviously lists:keyfind scan inside a lists:map was essentially a guadratic\npenalty right in the middle of _bulk_docs hotpath. Even with individual doc\nupdates, because couch db updater coalesces batches together this should help\neven individual doc updates running concurrently.\n"
    },
    {
      "commit": "c2a97ae6829f7617e8be7612501c90aba6785f19",
      "tree": "ec01f775dc3af105f32ff72c0cb29207f77fbc0d",
      "parents": [
        "91cc9619c359ae5514ab2cae53f0555b544ddc59"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Jul 27 03:03:16 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Mon Jul 27 09:50:39 2026 -0400"
      },
      "message": "Simplify chttpd_db_doc_size_tests with sigils\n\nSince OTP 27 we can use sigils to avoid escaping strings, especially since we\nhave a bunch of json strings everywhere. Pick a test file as an example to see\nhow it look chttpd_db_doc_size_tests\n"
    },
    {
      "commit": "91cc9619c359ae5514ab2cae53f0555b544ddc59",
      "tree": "7336f8d8bb108b5fd2ba2b22f5894db13a660fe8",
      "parents": [
        "a2eedd4af19f40d9f92de3fd52ab3e922668748a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Fri Jul 24 12:19:35 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Sat Jul 25 03:38:33 2026 -0400"
      },
      "message": "Handle empty ddocs in ddoc_features scanner plugin\n\nWe had too strong of an assert that design docs should not be empty (and to be\nuseful they shouldn\u0027t be) but if user did have some empty ddoc it would crash\nthe scanner plugin, so fix it to anticipate that case.\n"
    },
    {
      "commit": "a2eedd4af19f40d9f92de3fd52ab3e922668748a",
      "tree": "65d6c6bfc7b69c7312ab1f5b796131aa525dac1b",
      "parents": [
        "3ebff7dae9eea9c9a52d5e908629b6e799c0214a"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jul 15 12:06:31 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Fri Jul 24 02:34:58 2026 -0400"
      },
      "message": "Try to re-enable s390x and ppc64le\n\nPrevious failures were often from picking up ASF Jenkins generic workers with\n`s390x` and `ppc64le` labels. Those workers were often over-subscribed and\npretty flaky. To avoid that use different label that only our project would\nmatch.\n\ns390x seems to have a slower disk and times out on a disk heavy prop test, so\nlet\u0027s bump the timeout value there a bit.\n"
    },
    {
      "commit": "3ebff7dae9eea9c9a52d5e908629b6e799c0214a",
      "tree": "70132cc70937e010a2c1775b64f66a6eb88308fa",
      "parents": [
        "84aa91700c011a82e242b18e99e875d80cb57331"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jul 22 16:24:49 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jul 22 18:22:47 2026 -0400"
      },
      "message": "Fix all stream attachments for serialize_worker_startup\n\nIn #6071 we fixed multipart attachment uploads but we forgot to fix plain\nattachment uploads with `PUT /db/doc/attachment`. We should apply the same fix\nfor these too, otherwise they\u0027ll also buffer whole attachment in memory when\nsws\u003dtrue, defeating the whole purpose of incremental attachment streaming.\n\nAnd add a few parsing tests, especially testing how workers wait on others and\nhow the parser should behave if the attachment is too short\n"
    },
    {
      "commit": "84aa91700c011a82e242b18e99e875d80cb57331",
      "tree": "aed87d69741711878465003d9d065a9ae4713346",
      "parents": [
        "c4fd3366c3fcd073a92e8d14027fdd3fa7ad7c10"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Wed Jul 22 01:11:24 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Wed Jul 22 11:59:58 2026 -0400"
      },
      "message": "Fix multipart attachments with serialize_worker_startup\n\nPreviously, if a multipart parser reached an eof before the declared length, it\nstill let the writer wait and timeout (300s). This was especially noticed if\nusers toggled `serialize_worker_startup\u003dtrue`. Then, the first worker would\nbuffer all the data (another undesirable behavior) until it reached a premature\neof and then get stuck. Other workers wouldn\u0027t start either and the request\nwould eventually crash.\n\nHere we fix both issues:\n\n 1) If we detect serialize_worker_startup\u003dtrue then we switch back to the\n default parallel worker startup pattern. This how the MP parser was built to\n work. Otherwise it would buffer the whole attachment into memory until the\n first worker wasn\u0027t done and the others started. That defies the purpose of\n incremental attachment uploads. So to go with the grain of MP parser design we\n switch back to parallel worker startup.\n\n 2) Let writers which wait on an EOF exit instead of deadlocking until a\n timeout. Writer waits for more bytes when the stream already reached EOF is\n because the user uploaded less than the declared number of bytes (attachment\n is too short). In that case we exit normally and let the parser monitors fire\n with `\"attachment shorter than expected\"` error.\n\nReproducer for the issue:\n\n * start dev/run cluster with 3 nodes\n * `s:multicall(fun() -\u003e config:set(\"fabric\", \"serialize_worker_startup\",\"true\") end)`\n * curl -XPUT \u0027http://adm:pass@127.0.0.1:15984/mptest\u0027\n\nBefore PR:\n\n```\ncurl  --max-time 10 -XPUT \u0027http://adm:pass@127.0.0.1:15984/mptest/short\u0027 -H \u0027Content-Type: multipart/related;boundary\u003d\"abc123\"\u0027 --data-binary $\u0027--abc123\\r\\nContent-Type: application/json\\r\\n\\r\\n{\"_attachments\":{\"ohai\":{\"follows\":true,\"content_type\":\"text/plain\",\"length\": 4}}}\\r\\n--abc123\\r\\n\\r\\noha\\r\\n--abc123--\u0027\ncurl: (28) Operation timed out after 10005 milliseconds with 0 bytes received\n```\n\nAfter PR\n```\ncurl  --max-time 10 -X PUT \u0027http://adm:pass@127.0.0.1:15984/mptest/short\u0027 -H \u0027Content-Type: multipart/related;boundary\u003d\"abc123\"\u0027 --data-binary $\u0027--abc123\\r\\nContent-Type: application/json\\r\\n\\r\\n{\"_attachments\":{\"ohai\":{\"follows\":true,\"content_type\":\"text/plain\",\"length\": 4}}}\\r\\n--abc123\\r\\n\\r\\noha\\r\\n--abc123--\u0027\n{\"error\":\"bad_request\",\"reason\":\"attachment shorter than expected\"}\n```\n"
    },
    {
      "commit": "c4fd3366c3fcd073a92e8d14027fdd3fa7ad7c10",
      "tree": "3245a9a257aacc5f517bb7a51ac87d3fdeb21265",
      "parents": [
        "0ea4747403a1b4ba3b25d45a1827c5b67b1579b4"
      ],
      "author": {
        "name": "Nick Vatamaniuc",
        "email": "vatamane@gmail.com",
        "time": "Mon Jul 20 17:54:57 2026 -0400"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Tue Jul 21 09:14:00 2026 -0400"
      },
      "message": "Supervisor-level replicator auth plugin callbacks\n\nAs discussed in the comments of the new IAM plugin in [1], it would be nice to\nhave a per-plugin supervisor-level context for each plugin. So, for example,\nthey can create some kind of a ETS cache table for their tokens. This is what\nwe implement here. The API is simple:\n\n  * `sup_initialize() -\u003e Ctx`\n  * `sup_cleanup(Ctx) -\u003e ok`\n\nThe APIs are optional to implement. The name pattern mirror the regular plugin\nAPI names: `initialize(...) -\u003e {ok, ..., Ctx}` and `cleanup(Ctx) -\u003e ok`\n\n[1] https://github.com/apache/couchdb/pull/6069\n"
    },
    {
      "commit": "0ea4747403a1b4ba3b25d45a1827c5b67b1579b4",
      "tree": "b156977590dc3b0fa141aa3e61b10827fb1a75eb",
      "parents": [
        "2eed4886d1853b97459ffd4f0c827e0cdd816a91",
        "307e4d9751165cd632153399129f0315ab08e116"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Jul 20 21:32:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 21:32:14 2026 +0100"
      },
      "message": "Merge pull request #6063 from apache/custom-peer-header\n\nconfigurable request header for determining peer"
    },
    {
      "commit": "307e4d9751165cd632153399129f0315ab08e116",
      "tree": "b156977590dc3b0fa141aa3e61b10827fb1a75eb",
      "parents": [
        "2eed4886d1853b97459ffd4f0c827e0cdd816a91"
      ],
      "author": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Thu Jul 02 16:24:02 2026 +0100"
      },
      "committer": {
        "name": "Robert Newson",
        "email": "rnewson@apache.org",
        "time": "Mon Jul 20 20:16:55 2026 +0100"
      },
      "message": "configurable request header for determining peer\n"
    },
    {
      "commit": "2eed4886d1853b97459ffd4f0c827e0cdd816a91",
      "tree": "ca07dcf740b90154a91826ff8ecd258d2b5253ce",
      "parents": [
        "d4067c4f9274b93a0f07dda6c5f75ab451858bcd"
      ],
      "author": {
        "name": "Sam Smith",
        "email": "sam@samsmith.xyz",
        "time": "Thu Jul 16 10:48:35 2026 +0100"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Jul 16 09:59:18 2026 -0400"
      },
      "message": "sq - update gauge in dec_count and inc_count\n"
    },
    {
      "commit": "d4067c4f9274b93a0f07dda6c5f75ab451858bcd",
      "tree": "645074b22bb39e16e9b220741e001f7a2e1170db",
      "parents": [
        "803542b6ddddb41d1c02a8c64a2f56212796e5e7"
      ],
      "author": {
        "name": "Sam Smith",
        "email": "sam@samsmith.xyz",
        "time": "Wed Jul 15 15:47:01 2026 +0100"
      },
      "committer": {
        "name": "Nick Vatamaniuc",
        "email": "nickva@users.noreply.github.com",
        "time": "Thu Jul 16 09:59:18 2026 -0400"
      },
      "message": "feat(couch): add process_count gauge to query server manager\n\nTrack the number of active query server processes to provide\nvisibility into resource usage. The gauge is updated when processes\nspawn/remove.\n"
    }
  ],
  "next": "803542b6ddddb41d1c02a8c64a2f56212796e5e7"
}
