)]}'
{
  "log": [
    {
      "commit": "684e77a424d9acdf1bd812fbac23b3721b19c436",
      "tree": "b3ad0179e835ecc9f12e1af8bde4ae0058d42683",
      "parents": [
        "611d866a44846e46726827d9d47910c92bfb6f13"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 22:51:31 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Jun 20 01:40:46 2026 -0700"
      },
      "message": "Add Jenkinsfile for CI verification\n\nChange-Id: I5b72667c8497ed2397166e2756bd51457e941f27\n"
    },
    {
      "commit": "611d866a44846e46726827d9d47910c92bfb6f13",
      "tree": "efebf17102832e6fc156205b62c9dc8aae3cfa9e",
      "parents": [
        "a149960fdcfd657bb6625e6769247d81e7ce421b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 19 23:30:07 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 19 23:38:57 2026 +0100"
      },
      "message": "Don\u0027t build test dependencies for manual tests\n\nThe `owners-ts-tests` target is only used for tests that\nthemselves are not automatically run. Running `bazelisk build //...`\nwould still build that target, which is unnecessary and would fail\nbecause of unknown import of \u0027sinon\u0027.\n\nChange-Id: Iba13fa92003825678118df41d38638c080a7cad2\n"
    },
    {
      "commit": "a149960fdcfd657bb6625e6769247d81e7ce421b",
      "tree": "39b2c539b48b0aff6094cc8a200fef0d929a7c36",
      "parents": [
        "52fb128d29e62644c975eda4fa90ce660ac4237e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 21:31:30 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 08:46:06 2026 +0100"
      },
      "message": "Convert to bzlmod\n\nConvert the project bzlmod using the latest\nGerrit master definition template.\n\nCo-Authored-By: Daniele Sassoli \u003cdanielesassoli@gmail.com\u003e\nChange-Id: I9670fa722b838fb2b9e912d76d6628c35a4e58f7\n"
    },
    {
      "commit": "52fb128d29e62644c975eda4fa90ce660ac4237e",
      "tree": "ddc2dd3de21e052ba58bf6575e85e98eefed0b9c",
      "parents": [
        "5626ac597b16ab597f37c74e4616d106d0d05bcf"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 09 15:27:05 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jun 17 08:45:25 2026 +0100"
      },
      "message": "Initial commit of the standalone owners plugin\n\nReset the whole repository to contain the owners plugin only.\nThis refactoring allows an easier management of the lifecycle\nof the plugin and also simpler and more standard discovery\nand validation.\n\nChange-Id: I5cb9f69d02f7b82a70c64bc02ee3703ef46be0b9\n"
    },
    {
      "commit": "5626ac597b16ab597f37c74e4616d106d0d05bcf",
      "tree": "468aca726fe659155421ea00a0d1f1a7266ed2b7",
      "parents": [
        "ffa04bda867fd8fb95facc1f827ca91d33b97b49"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Jun 03 20:42:56 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jun 04 00:28:17 2026 -0700"
      },
      "message": "Add Luca\u0027s deep dive into Owners plugin to docs\n\nChange-Id: If39ebad34260ef4b94b9d3e6413ca4c03d57a70c\n"
    },
    {
      "commit": "ffa04bda867fd8fb95facc1f827ca91d33b97b49",
      "tree": "3fd8b031f72d9886af95c7ba6173e52f8bc2a50c",
      "parents": [
        "df7c8e4fad2b9a92d511d54250b06cfe34e8effb",
        "75e9eb0940557498e5909d12df5f779652b00038"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:28:26 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:29:26 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.14\u0027\n\n* stable-3.14:\n  Improve documentation for auto-owners-approval\n  Convert FilesOwnersResponse to a record\n  Show auto-approved owner approvals in the UI\n  Expose auto-approved files in the owners REST API\n  Extract shared auto-owners-approved logic\n  Swtich auto-owners-approved to a allowlist model\n  Default auto-owners-approved to false\n\nChange-Id: If71c81eed1a825138652aa72883d1080d5f80ada\n"
    },
    {
      "commit": "75e9eb0940557498e5909d12df5f779652b00038",
      "tree": "3fd8b031f72d9886af95c7ba6173e52f8bc2a50c",
      "parents": [
        "8cc5ce470bc9ce5fee8fc7e46a62436577e4e2eb",
        "6a51a4342696367f1b267e0e3e30395ccdce01e2"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:23:02 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:24:27 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.13\u0027 into stable-3.14\n\n* stable-3.13:\n  Improve documentation for auto-owners-approval\n  Convert FilesOwnersResponse to a record\n  Show auto-approved owner approvals in the UI\n  Expose auto-approved files in the owners REST API\n  Extract shared auto-owners-approved logic\n  Swtich auto-owners-approved to a allowlist model\n  Default auto-owners-approved to false\n\nChange-Id: I8a13302b5bdeb4f1bceea5a5a2226c1b5e077c6d\n"
    },
    {
      "commit": "6a51a4342696367f1b267e0e3e30395ccdce01e2",
      "tree": "c354b0e93f9f43d6d750ef5f69db2203f509236c",
      "parents": [
        "5441e227330d0f379a24ae39129f01a5e5375153",
        "82d551f68bf69c641569fe2288d711619a455638"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:18:12 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon May 18 11:21:06 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Improve documentation for auto-owners-approval\n  Convert FilesOwnersResponse to a record\n  Show auto-approved owner approvals in the UI\n  Expose auto-approved files in the owners REST API\n  Extract shared auto-owners-approved logic\n  Swtich auto-owners-approved to a allowlist model\n  Default auto-owners-approved to false\n\nNOTE: Adapt GetFilesOwnersITAbstract tests to change I305ff2d2c0, which\nnow requires using ChangeIdentifier rather than Change.Id.\n\nChange-Id: I34e6dae2f889ffde6de70f18a211c76c77c21e0e\n"
    },
    {
      "commit": "82d551f68bf69c641569fe2288d711619a455638",
      "tree": "fd39ebb4678521bfea9c6216de4e708ca446073f",
      "parents": [
        "c237ca5ca4a5b53bc5c88bfb7a848cba64dd2cab"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu May 07 14:43:16 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri May 15 11:50:35 2026 +0200"
      },
      "message": "Improve documentation for auto-owners-approval\n\nConsolidated the documentation under the `copy-conditions.md` markdown\nfile, in order to have all copy-condition related documentation in one\nplace rather than partially scattered documentation across\n`configuration.md` and `copy-conditions.md`.\n\nAlso, extend the documentation on auto-owners-approved logic behaviour,\nincluding examples and snapshots.\n\nChange-Id: I9e9a01b82819f43f198b35ed935ad283efbbaa75\n"
    },
    {
      "commit": "c237ca5ca4a5b53bc5c88bfb7a848cba64dd2cab",
      "tree": "873ea4ed209fdecd3c14da0829fe184a29fe3282",
      "parents": [
        "90d0955afae421ea4738e19f5622a335d05bef5e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Apr 17 15:37:54 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Apr 20 15:10:46 2026 +0200"
      },
      "message": "Convert FilesOwnersResponse to a record\n\nReplace the manual implementation with a Java record and update the\naffected REST tests to use record accessors.\n\nChange-Id: Ib859eb52e0d414303b39794a6845e8a4a4a8fa26\n"
    },
    {
      "commit": "90d0955afae421ea4738e19f5622a335d05bef5e",
      "tree": "c1cb25e0f1fc9f1db6d91a218eb856d9007f10b9",
      "parents": [
        "bb36d44be3ed0ae4946ece4402d71f74b8b7a6c1"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Apr 08 19:09:50 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Apr 20 06:09:18 2026 -0700"
      },
      "message": "Show auto-approved owner approvals in the UI\n\nExtend the owners UI to distinguish files approved by copied\nauto-owners-approved votes from files approved explicitly.\n\nRender a dedicated icon for auto-approved files, show the corresponding\nowners in the hovercard, and treat files_auto_approved as a separate\napproved state from files_approved in both the file list and the owned\nfiles tab.\n\nUpdate the web models and tests to cover the new files_auto_approved\nREST field and the new UI behavior.\n\nBug: Issue 498512068\nChange-Id: I0090475a6cef4bcea1d33671e364531b2418be2d\n"
    },
    {
      "commit": "bb36d44be3ed0ae4946ece4402d71f74b8b7a6c1",
      "tree": "101df3d4fe3c580b9118f257994365333d508669",
      "parents": [
        "710086e779ce4d50ef49597326b7cbb5e0b7e154"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Apr 08 15:43:13 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Apr 20 14:40:18 2026 +0200"
      },
      "message": "Expose auto-approved files in the owners REST API\n\nExtend the owners~files-owners response with a new files_auto_approved\nsection so the UI can tell when the label was copied even if owned files\nwere modified between patchsets, due to the auto-approval logic.\n\nKeep the new field aligned with the existing payload shape by returning\nthe same owner details as files and files_approved.\n\nMake files_auto_approved and files_approved mutually exclusive: a file\nthat is auto-approved is returned only in files_auto_approved. Files\nthat also have a sufficient explicit owner vote on the current patch set\nare unchanged and returned as before.\n\nBug: Issue 498512068\nChange-Id: I0c252e21391daaf2e884519c8d27133641635e3a\n"
    },
    {
      "commit": "710086e779ce4d50ef49597326b7cbb5e0b7e154",
      "tree": "33dafcc157cc8c041950458d24674acf8b3a76b8",
      "parents": [
        "b17e6b7478c3a19e7fc6d95233a813d4be6d75ba"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Apr 08 14:18:06 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Apr 16 17:26:12 2026 +0200"
      },
      "message": "Extract shared auto-owners-approved logic\n\nMove the shared auto-owners-approved checks into a small helper so the\ncopy-condition predicate no longer carries that logic inline.\n\nThis extracts the patch set diff loading, touched-path collection, and\nowned-only self-update check into one place, keeping the current\nbehavior unchanged while preparing the same logic to be reused by other\nowners code paths.\n\nBug: Issue 498512068\nChange-Id: I206922e44ddd25cc0036dd1c67a0bc3558986583\n"
    },
    {
      "commit": "b17e6b7478c3a19e7fc6d95233a813d4be6d75ba",
      "tree": "5671a39312b9948ad6de5d5d11f93576b362c9e5",
      "parents": [
        "1fd8e1bda9fb3e7c897cdbc59c12c54978fdcd9a"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Apr 08 11:20:12 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Apr 15 23:45:07 2026 -0700"
      },
      "message": "Swtich auto-owners-approved to a allowlist model\n\nChange Ieb7ddedede switched auto-owners-approved to default to false.\n\nWith this new default, the internal blocklist model is the wrong fit for\nthe feature, because it would end up tracking all files most of the\ntimes, using more heap and CPU for adding the file names to the\nin-memory set.\n\nThe common case is now that files are not eligible unless they are\nexplicitly allowed.\n\nTrack files that allow auto approval instead of files that are banned\nfrom it. This matches the rule more directly, keeps the code easier to\nreason about, and avoids storing the default negative case as state.\n\nBug: Issue 497884157\nChange-Id: I8987e0bdb1e211945acb2921f61ed84f2ad3c77a\n"
    },
    {
      "commit": "1fd8e1bda9fb3e7c897cdbc59c12c54978fdcd9a",
      "tree": "e50020f69e422c114caed3ab05f410bf4ac0076b",
      "parents": [
        "b347a794a5ca4c51a563a559b08c5911df82e18b"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 31 17:34:55 2026 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Apr 09 09:40:09 2026 +0200"
      },
      "message": "Default auto-owners-approved to false\n\nToday, when `auto-owners-approved` is not set in an `OWNERS` file or\nmatcher, the `approverin:already-approved-by_owners` copy-condition may\nstill keep an owner\u0027s vote across patch sets when the approver owns all\nthe modified files (and is also change owners and uploader).\n\nThis makes the self-update shortcut too permissive by default.\nThe safer behavior should be the default.\n\nThis change flips the default of `auto-owners-approved` from true to\nfalse, so the shortcut applies only when it is explicitly enabled in\n`OWNERS` or on a matcher.\n\nRepositories that want the extra stickiness can still enable it where it\nmakes sense, but it is no longer applied implicitly.\n\nUpdate the documentation and the affected tests to reflect the new\ndefault behavior.\n\nBug: Issue 497884157\nChange-Id: Ieb7ddededece3c51a79f14a73e987dd9d43e9aca\n"
    },
    {
      "commit": "df7c8e4fad2b9a92d511d54250b06cfe34e8effb",
      "tree": "7068cd1e73bfa5d0f8f226c932b2ea950b6043d2",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "8cc5ce470bc9ce5fee8fc7e46a62436577e4e2eb"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:36:59 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:36:59 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.14\u0027\n\n* stable-3.14:\n  Add ESLint configuration\n  Adapt prolog-runtime dependency to rules_jvm_external\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: I19ce5ba0649caf19b2531499db4dc4ec698957a1\n"
    },
    {
      "commit": "8cc5ce470bc9ce5fee8fc7e46a62436577e4e2eb",
      "tree": "7068cd1e73bfa5d0f8f226c932b2ea950b6043d2",
      "parents": [
        "8df6b62a8fe639081808d52ccdd5ea47baae7c4d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:10:18 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 21:10:18 2026 +0000"
      },
      "message": "Add ESLint configuration\n\nChange-Id: Ib63002e08006dd8b5b99bdf9d237b73b179f42b7\n"
    },
    {
      "commit": "8df6b62a8fe639081808d52ccdd5ea47baae7c4d",
      "tree": "1f5b7a702c1daedec1e01384bc00a3b23b7a23c6",
      "parents": [
        "0ee3dbc990e84c1421ae028d03d530c162184a96"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 15:47:29 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 14:00:32 2026 -0700"
      },
      "message": "Adapt prolog-runtime dependency to rules_jvm_external\n\nGerrit does not include the prolog runtime externally\ntherefore it needs to be explicitly included as external dep with\na neverlink directive.\n\nChange-Id: Ia677d551a3259d3cf51291bebc469afd4526cb67\n"
    },
    {
      "commit": "0ee3dbc990e84c1421ae028d03d530c162184a96",
      "tree": "24787b6bb5a8db5d7226f9ed7de5e5d1be7e7d33",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "5441e227330d0f379a24ae39129f01a5e5375153"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:58:38 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:58:38 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.13\u0027 into stable-3.14\n\n* stable-3.13:\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: Id00b1831049719a3bdd3e24b629ed2c7d6778b96\n"
    },
    {
      "commit": "5441e227330d0f379a24ae39129f01a5e5375153",
      "tree": "24787b6bb5a8db5d7226f9ed7de5e5d1be7e7d33",
      "parents": [
        "e2e15c99909b11cccad4831422f210e19cd69a4b",
        "b347a794a5ca4c51a563a559b08c5911df82e18b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:32:26 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 25 20:57:33 2026 +0000"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Allow matchers to override auto-owners-approved\n  Refactor tests in copy-condition IT\n  Remove unneeded @Nullable on rootEntry in PathOwners\n  Avoid nullable PathOwnersEntry associated with projects\n  Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n  Add auto-owners-approved to OWNERS\n  Make fields PathOwners field final\n  Ignore commit message diffs in already-approved-by_owners\n  Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n  Avoid passing rootEntry to calculateCurrentEntry()\n  Fix import of com.google.common.collect.Sets\n  Remove definition of owners-common as a plugin\n  Open JDK internals for PowerMock in owners-common tests\n  Disambiguate Truth assertions in owners-common tests\n  Reformat with GJF 1.24\n\nChange-Id: I5d7b4b837151ff9c1296b5451dbd1ba2c6fa03a7\n"
    },
    {
      "commit": "b347a794a5ca4c51a563a559b08c5911df82e18b",
      "tree": "3bc9a006126559130b9f6222acbcd0c17edc9b19",
      "parents": [
        "eacf0b00a1511a780cacb4ca762a661495680558"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 14:59:24 2026 +0000"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Mar 23 10:49:23 2026 +0000"
      },
      "message": "Allow matchers to override auto-owners-approved\n\nSupport `auto-owners-approved` on individual OWNERS matchers so matcher\nrules can override the setting defined at the file level.\n\nAn explicit matcher value now wins over the surrounding OWNERS setting\nfor the files that matcher selects, while unset matchers continue to\ninherit the existing behavior.\n\nBug: Issue 489671151\nChange-Id: I3f39026fc3b6059b7c80cc4dea22e623bcb009a1\n"
    },
    {
      "commit": "eacf0b00a1511a780cacb4ca762a661495680558",
      "tree": "cbb164f366e5237985dcc32c9654b0c2182eea13",
      "parents": [
        "1f9a7f10ee92ea5fd9ce308b2783b8b18b882ef5"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 15:28:57 2026 +0000"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Mar 20 17:10:55 2026 +0000"
      },
      "message": "Refactor tests in copy-condition IT\n\nExtract the repeated scenarios in AlreadyApprovedByCopyConditionIT into\na small helper that varies only the OWNERS config, change owner,\nuploader, and expected vote.\n\nChange-Id: I0bfa91e3b9a199f9daa23425cca94af845702bc8\n"
    },
    {
      "commit": "1f9a7f10ee92ea5fd9ce308b2783b8b18b882ef5",
      "tree": "8b3a43a21bf6a69f23a934af7339314629e76f91",
      "parents": [
        "b8692642d7cce650de29ba7888c8da51fc91f8b3"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 23:39:23 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 20 08:10:34 2026 -0700"
      },
      "message": "Remove unneeded @Nullable on rootEntry in PathOwners\n\nThe rootEntry in PathOwners is never null, because has a fallback\nvalue to an empty instance in case the root OWNERS file is missing.\n\nRemove both the @Nullable annotation and the null checks.\n\nChange-Id: Id0872040be5262090e7e7c686b96bd7d78b2334c\n"
    },
    {
      "commit": "b8692642d7cce650de29ba7888c8da51fc91f8b3",
      "tree": "07d688b69cd092892fc9804a1d06bc3257fe0439",
      "parents": [
        "771ee30ea83176ee593c0f2cb1bfb7d6fe2c8b2c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 23:28:40 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 20 03:52:02 2026 -0700"
      },
      "message": "Avoid nullable PathOwnersEntry associated with projects\n\nDo not pass null PathOwnersEntry in PathOwners and rely on\nsafer Optional\u003c\u003e which allows to manage emptiness rather than\nnull pointers checks.\n\nChange-Id: I16a486d8c47cea5e2695feb7575a40d0503c6596\n"
    },
    {
      "commit": "771ee30ea83176ee593c0f2cb1bfb7d6fe2c8b2c",
      "tree": "08d1d9ab6a0fef2cf68768ba3a23decf9c998788",
      "parents": [
        "5ccc6692d755b6e4d7329e979d364b01513fa4ca"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 22:26:35 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 18 15:28:44 2026 -0700"
      },
      "message": "Add AlreadyApprovedByCopyConditionsIT hierarchy OWNERS test cases\n\nThe current integration tests did not include enough test cases where\nthe OWNERS file was tested for hierarchy from the refs/meta/config to\nroot and subdirectory files.\n\nChange-Id: I7d509d4e3b7d4c5e6edb32b3373073ffdf96841f\n"
    },
    {
      "commit": "5ccc6692d755b6e4d7329e979d364b01513fa4ca",
      "tree": "b1d1ed5329601566f197aa5b40c056e0d84765f2",
      "parents": [
        "86cb6e6ffe25941c944b5a09852b5e020addd923"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Mar 16 09:38:00 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 18 19:40:18 2026 +0100"
      },
      "message": "Add auto-owners-approved to OWNERS\n\nAdd an `auto-owners-approved` setting to OWNERS files to control when\nowner approvals can be copied over to the next patchset.\n\nThe goal is to avoid unnecessary re-approval when an owner updates only\nfiles they already own on their own change. In that case, loosing the\nexisting vote adds little review value since they will need to\nre-approve it anyway.\n\nAt the same time, this setting lets repositories turn that shortcut off\nin sensitive paths where every update should get a fresh owner review.\n\nA vote is now copied over only when the approver is also the change\nowner and patch set uploader, all modified files are owned by that user,\nand none of those files disable auto approval.\n\nBug: Issue 489671151\nChange-Id: Icd3d7a95234db6192932253153f178525f3ef268\n"
    },
    {
      "commit": "86cb6e6ffe25941c944b5a09852b5e020addd923",
      "tree": "ada89d29631463f9aa4a97fce11bdd6ecfe19759",
      "parents": [
        "1f01cd7a035182c8231b83a0a83b2101830b9244"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 16:33:12 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 08:36:37 2026 -0700"
      },
      "message": "Make fields PathOwners field final\n\nMake matchers, fileOwners and fileGroupOwners final.\n\nChange-Id: Idacfca342bce9042307cfe990b1db11b5462a6ab\n"
    },
    {
      "commit": "1f01cd7a035182c8231b83a0a83b2101830b9244",
      "tree": "98d01bf7e7d0b523e3dad4c69ed83bc81558e0ad",
      "parents": [
        "1087de4e5a1db4f416ee3dc5d5908c13c7dfc0ca"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 09:55:06 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Mar 17 12:27:33 2026 +0100"
      },
      "message": "Ignore commit message diffs in already-approved-by_owners\n\nFilter out /COMMIT_MSG before evaluating file ownership in\nAlreadyApprovedByPredicate.\n\nWithout this, a patch set that only changes the commit message could be\ntreated as modifying an owned file when ownership comes from a\ndirectory-level OWNERS file. That caused approverin:already-approved-\nby_owners to drop copied votes even though commit messages do not have\nowners.\n\nBy excluding the virtual commit message path from diff evaluation, the\npredicate continues to consider only real repository files when checking\nowner-based approval copying.\n\nChange-Id: I88d2b0b9f91bd035d7a2ff1c4691607bfe5975ef\n"
    },
    {
      "commit": "1087de4e5a1db4f416ee3dc5d5908c13c7dfc0ca",
      "tree": "f01e34354b529029aa3e1e95c2e497edd24f6e0f",
      "parents": [
        "cdea3e1c0b2a29a7569586f22139ac2fbd986743"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:24:11 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 08:51:34 2026 +0000"
      },
      "message": "Replace use of static EMPTY ReadOnlyPathOwnersEntry with Optional\u003c\u003e\n\nThe use of EMPTY PathOwnersEntry with everything empty inside was an\nartificial simulation of an optional which made the code more complex to\nunderstand and also more inefficient.\n\nJust skip the evaluation of owners when there are no OWNERS\nconfiguration, making the code clearer and faster.\n\nChange-Id: I99acdfd03672d2ff67fa03ecf4d168f95d4b1cf9\n"
    },
    {
      "commit": "cdea3e1c0b2a29a7569586f22139ac2fbd986743",
      "tree": "9aea6ddd1261473f7e48a5c6ac10e085b84ebdf6",
      "parents": [
        "e0cf800fe21430b8376d1a31be5f7c6cae61239c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:44:11 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 01:45:22 2026 +0000"
      },
      "message": "Avoid passing rootEntry to calculateCurrentEntry()\n\nThe PathOwners.calculateCurrentEntry() did not use at all\nthe root entry config but simply checked its inheritance flag.\n\nAvoid passing the root entry config as parameter and resolve\nthe if/then/else conditional externally.\n\nChange-Id: Ie6bc00509b0da680c45e4a02efb68e6c1851eefb\n"
    },
    {
      "commit": "e0cf800fe21430b8376d1a31be5f7c6cae61239c",
      "tree": "95e028c4ccf2f2b5e1e712b2950189d8fe772e5e",
      "parents": [
        "3f8f169143c20aac9938339ae5c80ec01eddbf45"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 15 00:55:35 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 17:57:07 2026 -0700"
      },
      "message": "Fix import of com.google.common.collect.Sets\n\nThe Sets was wrongly imported from org.apache.commons.compress.utils\ninstead of Guava.\n\nChange-Id: I7729fed267bb7658944c745351c26fcc895b09ba\n"
    },
    {
      "commit": "3f8f169143c20aac9938339ae5c80ec01eddbf45",
      "tree": "7f25881de31abea5184eaef210b8e45d605718ce",
      "parents": [
        "fc1f52ff974dfa25d61743b78e42b87182aa6be2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 17:41:58 2026 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 14 10:46:28 2026 -0700"
      },
      "message": "Remove definition of owners-common as a plugin\n\nThe owners-common module of the owners\u0027 plugin isn\u0027t a plugin itself but\nsimply a Java library definition of classes shared between owners and\nowners-autoassign.\n\nRemove the plugin definition of owners-common and resume the correct\nbuild of the module.\n\nChange-Id: I05e7d96f66bccbdfc67bf26c65437edbe73d3906\n"
    },
    {
      "commit": "fc1f52ff974dfa25d61743b78e42b87182aa6be2",
      "tree": "c66884b115c4420d0dbc033376f5d592269d937e",
      "parents": [
        "1a09713cc3b0c370feb500b822921cddd0d2fcf0"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 15:50:33 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 16:09:50 2026 +0100"
      },
      "message": "Open JDK internals for PowerMock in owners-common tests\n\nAdd JVM flags to //owners-common:test to open:\n- java.base/java.lang\n- java.base/java.util\n- java.base/java.util.stream\n\nowners-common unit tests use PowerMock and fail on JDKs \u003e\u003d 17 with\n\n\"InaccessibleObjectException when reflective access to JDK internals is\nblocked (e.g. java.lang.Object.finalize, HashMap internals, stream pipeline\nmethods)\"\n\nThis behavior became strict as the JDK moved from relaxed reflective\naccess to strong encapsulation:\n- JDK 16 set strong encapsulation by default (JEP 396)\n- JDK 17 removed the relaxed escape hatch (JEP 403)\n\nReferences:\n- https://openjdk.org/jeps/396\n- https://openjdk.org/jeps/403\n- https://github.com/powermock/powermock/issues/1161\n\nChange-Id: I2a2f1f34f10349ea85e758c085cdc61761ba1cef\n"
    },
    {
      "commit": "1a09713cc3b0c370feb500b822921cddd0d2fcf0",
      "tree": "2c5020945d070c96931a326387bf86fe2a919e1a",
      "parents": [
        "c37f09512cec1c162fed820d90c97011609c0138"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 15:49:34 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 16:07:01 2026 +0100"
      },
      "message": "Disambiguate Truth assertions in owners-common tests\n\nAvoid ambiguous static resolution of assertThat by keeping\nTruth.assertThat for general subjects and using Truth8.assertThat\nexplicitly for Optional and OptionalInt assertions.\n\nowners-common tests were failing to compile since d8caea6712f9 with the\nfollowing error message:\n\n```\nboth method assertThat(Optional\u003c?\u003e) in Truth8 and method assertThat(Optional\u003c?\u003e) in Truth match\nowners-common/...: error: reference to assertThat is ambiguous\n```\n\nThis was because both Truth.assertThat and Truth8.assertThat were\nstatically imported.\n\nSwitch Optional assertions to explicit Truth8.assertThat(...) so that\ntheir usage is no longer ambiguous.\n\nChange-Id: I38fc5ef5a06aa0408fb9ced578ff1f4652f2e55f\n"
    },
    {
      "commit": "c37f09512cec1c162fed820d90c97011609c0138",
      "tree": "fe0857f9329afd07153e387cabbe4701766e9f48",
      "parents": [
        "511c6a9f9812e6df93fd7709cd0c36b1f97da56b"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 14:26:13 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Mar 04 14:26:13 2026 +0100"
      },
      "message": "Reformat with GJF 1.24\n\nChange-Id: Iee6114d880ae10045d7c262ad79a1a0edd7ef0b3\n"
    },
    {
      "commit": "e2e15c99909b11cccad4831422f210e19cd69a4b",
      "tree": "88120a6d35e133b9e8d6a7a19c464fabeb874e54",
      "parents": [
        "511c6a9f9812e6df93fd7709cd0c36b1f97da56b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Feb 19 18:59:10 2026 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Feb 19 19:02:37 2026 -0800"
      },
      "message": "Use new ChangeIdentifier to identify changes in tests\n\nChange I305ff2d2c0 introduced a new way of handling change identifiers\nin order to make it easier to use the GerritApi for changes created by\nthe test API. However, this broke the owners plugin tests that relied on\nthe previous way of identifying changes.\n\nUpdate Owners plugins test to correctly use the new ChangeIdentifier.\n\nBug: Issue 485945890\nChange-Id: Iff525ab5683f64973680094bb9533fc4e2c26565\n"
    },
    {
      "commit": "511c6a9f9812e6df93fd7709cd0c36b1f97da56b",
      "tree": "6eeb30bc87fcc4a76ccd1d93a1ede5a93f6bb7bc",
      "parents": [
        "8d124d493378e12ace569dbef78e4ea077e159eb"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Jan 15 18:18:09 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Jan 22 13:01:43 2026 +0100"
      },
      "message": "Preserve owner approvals for rebase-only file changes\n\nThe owners plugin currently removes approvals guarded by\napproverin:already-approved-by_owners whenever the newest patch set\nmodifies files owned by the approver.\n\nThis also happens when the apparent modifications are caused solely by a\nrebase, where file content shifts due to base movement rather than\nmanual edits by the uploader. In these cases, the owner has already\nreviewed the effective change, yet is forced to re-approve\nunnecessarily.\n\nExtend the already-approved-by_owners predicate so that owned files\nmodified only by rebase operations are treated as unchanged. Rebase-only\ndiff hunks, no longer cause owner approvals to be cleared.\n\nThis preserves owner approvals across rebase-only patch sets while still\nclearing them when genuine content changes are introduced.\n\nBug: Issue 475579558\nChange-Id: Icf649f1bcbc833a92853f0bf5c2c59ae5f245590\n"
    },
    {
      "commit": "8d124d493378e12ace569dbef78e4ea077e159eb",
      "tree": "940be0210abd9187fd7e6f5c44666538eea4866e",
      "parents": [
        "0a509d897aa02b86ae6ae98c0a64654b57cb2a8d"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Jan 21 14:24:57 2026 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Jan 21 16:36:08 2026 +0100"
      },
      "message": "Set explicit project when creating test changes\n\nAlreadyApprovedByCopyConditionIT created changes without binding them to\nthe project under test, so individual tests could accidentally operate\non an arbitrary project and become flaky or misleading.\n\nSpecify the current `project` for each `newChange()` to ensure changes\nare always created in the expected repository.\n\nChange-Id: I87b988aae60a6dae6be5fc1845e06257ff057578\n"
    },
    {
      "commit": "0a509d897aa02b86ae6ae98c0a64654b57cb2a8d",
      "tree": "09da5a5a1196f21f8d5f3321fbc2ae03ae247574",
      "parents": [
        "35febff8677f369c2e0f547a56545dbbf557d5cc"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Nov 11 19:42:46 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Jan 08 09:57:55 2026 +0100"
      },
      "message": "Add predicate for sticky owner approvals\n\nIntroduce a new approval query operand, `already-approved-by_owners`,\nthat allows copying owner approvals across patch sets only when it is\nsafe to do so.\n\n`AlreadyApprovedByOwnerOperand` registers a `UserInOperandFactory` for\nthe new operand, and `AlreadyApprovedByOwnerPredicate` implements the\nmatching logic. When evaluating a copy condition for an approval, the\npredicate:\n\n- Computes the set of files modified between the source and target\n  patch sets using `DiffOperations`.\n- Checks whether any of the newly modified files are owned by the\n  current approver. If so, the approval is not copied and the owner\n  must re-approve.\n- If none of the newly modified files are owned by the approver, copies\n  the approval only when the approver has owned at least one file in the\n  previous patchset.\n\nTo support this, `GetFilesOwners` is extended with an `isAnyFileOwnedBy`\nhelper that computes ownership for a given set of paths, and the\nconstruction of `PathOwners` is factored into a private `getPathOwners`\nmethod reused by both the REST endpoint and the new predicate.\n\nFinally, `OwnersModule` is updated to install the new operand module so\nthat the `alreadyApprovedBy` operand is available to approval query\nexpressions.\n\nBug: Issue 458084508\nChange-Id: I1fb57d70756e1a04cae19475afe80b2a329a4d11\n"
    },
    {
      "commit": "35febff8677f369c2e0f547a56545dbbf557d5cc",
      "tree": "9f140346369221e1d6ace455842d6947ff14ab0e",
      "parents": [
        "0b2cb14b87c1135044c7eb823e16da2d3ff36943",
        "c020b99fa1127d25fe3cdbde040fd8f022fdbbfe"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:33:06 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:33:06 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Fix owners-autoassign compilation issue.\n\nChange-Id: I32310b6fafcd9bf66c928678fa244ed4693b527b\n"
    },
    {
      "commit": "c020b99fa1127d25fe3cdbde040fd8f022fdbbfe",
      "tree": "d9182c73ff15bc1f184af04eda898ece083adebe",
      "parents": [
        "8b1a0d94ca58955d9f9b156d89d0775686651e00"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 16:49:14 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 28 21:28:56 2025 +0100"
      },
      "message": "Fix owners-autoassign compilation issue.\n\nI32cbcbe0 caused owners-autossign to fail even to compile.\nJudging from Idbeb9c5c, this was simply mismerged.\n\nChange-Id: If3421ed45331f74feeb6645f3dc6ad22a1c7eab2\n"
    },
    {
      "commit": "0b2cb14b87c1135044c7eb823e16da2d3ff36943",
      "tree": "424abfb6e980c37179e79f388431ae3f44d80ec6",
      "parents": [
        "c91797c0880079316b83ef72ff0955dfe9de25ac",
        "8b1a0d94ca58955d9f9b156d89d0775686651e00"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:19:32 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:19:32 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Iae674221a0efac3d8e2e0604e0009b425df59991\n"
    },
    {
      "commit": "8b1a0d94ca58955d9f9b156d89d0775686651e00",
      "tree": "04cbe48428d9b6eed6a25fc0b2d3f26ea43cdb66",
      "parents": [
        "37fa52b14eee7257af9a33b26df58e8e5d5d484d",
        "b32b39d49ec19048d5e2fc223fd3f04111e6c884"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:18:49 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:18:49 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: I32cbcbe0015d84644132fdfa956e87ddbfdc3286\n"
    },
    {
      "commit": "b32b39d49ec19048d5e2fc223fd3f04111e6c884",
      "tree": "eb879b9413d5c24dd9ade811aadf26ff09cb2fa3",
      "parents": [
        "185a5fd3e3b78d97ff03456160a590a0d87ae2bc",
        "03b26e88c5cb8d45bc5d4168144837085654a237"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:43 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:43 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ia757d7e6ecd11b1c60726f7ebf47d51368e92c5f\n"
    },
    {
      "commit": "03b26e88c5cb8d45bc5d4168144837085654a237",
      "tree": "b3b556ae8ce3a8c623007a6d15d1b9c33a80351a",
      "parents": [
        "958287afc1406272247af7b9d4dc5189bcbadbe4",
        "17c8f739bdda4f633eb3288aef9c918a932288a9"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:22 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:16:22 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ie7b2c045469cbb018033af81b16ce6aa22964441\n"
    },
    {
      "commit": "17c8f739bdda4f633eb3288aef9c918a932288a9",
      "tree": "60780803ca4096aecc469807b056cda28f197f50",
      "parents": [
        "e8889908079c4d977118a1a4d731ea1b43b14ea3",
        "2a4c49247fcc7d07ef41d5d71e8cd919bc6cbae6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:51 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:51 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Iec42189b51505789cd55f63e68f6ebde327fa4b2\n"
    },
    {
      "commit": "2a4c49247fcc7d07ef41d5d71e8cd919bc6cbae6",
      "tree": "f55a59b28513f4735113749fff022f27dc0e210e",
      "parents": [
        "ab7e38909a8715486be9677c8849ce30f9d5d59f",
        "950fa978f8c23adea39c877654b2cebb67822cef"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:23 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:15:23 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: I1d2e2ffac2cba19da3dd70aa408df7be04fa46a9\n"
    },
    {
      "commit": "950fa978f8c23adea39c877654b2cebb67822cef",
      "tree": "f55a59b28513f4735113749fff022f27dc0e210e",
      "parents": [
        "ba786da84900daf3f7df54fb20952d999d145be3",
        "500c45a1073716894da0d8b633819307b904a8a2"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:14:48 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 16:14:48 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Fix NPE in SyncReviewerManager\n\nChange-Id: Ib84e7a0b88993ebb30f1a6d22f0f86eaf274dcaa\n"
    },
    {
      "commit": "500c45a1073716894da0d8b633819307b904a8a2",
      "tree": "52f3f84db516c18fa398f6190bb6db2c7be358ed",
      "parents": [
        "aff1876bee63dba446a4b9a4a2c824390855418e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 13:39:39 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Jun 16 13:39:39 2025 +0200"
      },
      "message": "Fix NPE in SyncReviewerManager\n\nA NullPointerException occurred when attempting to auto-assign reviewers\nsynchronously, without explicitly registering the AutoassignModule in\ngerrit.config. This prevented reviewers from being assigned to changes.\n\nThis was caused by a mismerge of 3.4 (Iff9b12), which needlessly kept\ncalling `addToAttentionSet` even when the full list of reviewers had\nalready been computed.\n\nBug: Issue 353080249\nChange-Id: Idbeb9c5ce2235e4b97f2ca4daa18f0f8e234093f\n"
    },
    {
      "commit": "c91797c0880079316b83ef72ff0955dfe9de25ac",
      "tree": "d2a5917f82fe3ec4379d4f2d36838346ca242982",
      "parents": [
        "1b0dd568f2d80a87d1e20fe3bba8dad36e92d7cb"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:39:19 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:39:36 2025 -0700"
      },
      "message": "Fix path to tsconfig in web_test_runner.sh\n\nChange-Id: I14406c2b28dec69bf933dd766cda68952c4f8271\n"
    },
    {
      "commit": "1b0dd568f2d80a87d1e20fe3bba8dad36e92d7cb",
      "tree": "58d35ce4c5adb91fee35341226c7a693b6db8366",
      "parents": [
        "b0ff50c5d571118ca8d4882ba53e3eda903bdcea",
        "282518bcc95ee13b087975e0570a4b1a35b3f6a1"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 10:35:56 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 09 10:35:56 2025 -0700"
      },
      "message": "Merge \"Fix path to tsconfig-plugins-base.json\""
    },
    {
      "commit": "b0ff50c5d571118ca8d4882ba53e3eda903bdcea",
      "tree": "53bd303c531ca4ebe3ebf7811282c43350aed556",
      "parents": [
        "b74e35e7b3eee75c452855f468fff65abbb8d06b"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:15:23 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:16:51 2025 -0700"
      },
      "message": "README: Update command for cloning gerrit to include --recurse-submodules\n\nChange-Id: I6539500d20b20a4c67e23fae16519703dfadd024\n"
    },
    {
      "commit": "282518bcc95ee13b087975e0570a4b1a35b3f6a1",
      "tree": "52d556118b28665031b8502dc369c69cdb1ffc17",
      "parents": [
        "b74e35e7b3eee75c452855f468fff65abbb8d06b"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:10:31 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Fri May 09 10:11:14 2025 -0700"
      },
      "message": "Fix path to tsconfig-plugins-base.json\n\nI didn\u0027t read [0]. I just presumed that it was like all other plugins\nwhere you clone under gerrit/plugins and run bazel build plugins/\u003cname\u003e.\n\n[0] https://gerrit.googlesource.com/plugins/owners/+/refs/heads/master/README.md#build-in-gerrit-tree\n\nChange-Id: I4061eeaed16c86381262096cb089a47c0e5c92ee\n"
    },
    {
      "commit": "b74e35e7b3eee75c452855f468fff65abbb8d06b",
      "tree": "3fdc1f381a6ea513a93ec1e097813051525bb31c",
      "parents": [
        "429e6680e47c2ebe4db8ef07a37428b45dabb4f2"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 17:08:51 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri May 09 17:08:51 2025 +0100"
      },
      "message": "Remove $ sign so whole block of commands can be copied at once\n\nChange-Id: I007acfb6c643d520e28d305d5de433a53ba13106\n"
    },
    {
      "commit": "429e6680e47c2ebe4db8ef07a37428b45dabb4f2",
      "tree": "aa16056be3ae5359b92b7b38bbf42dcc49ad18a3",
      "parents": [
        "9ece265e1b5e2128b1609452c4d03de91e7b93b8"
      ],
      "author": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Thu Apr 24 09:12:11 2025 -0700"
      },
      "committer": {
        "name": "Paladox none",
        "email": "thomasmulhall410@yahoo.com",
        "time": "Thu Apr 24 09:20:35 2025 -0700"
      },
      "message": "Migrate from karma to web-test-runner\n\nWe want to get rid of the final remnants of karma from gerrit core.\nThe recommended way to run tests is with web-test-runner.\n\nChange-Id: I2a30d9193f91e41b56a17dde9f402da077dd71c2\n"
    },
    {
      "commit": "9ece265e1b5e2128b1609452c4d03de91e7b93b8",
      "tree": "4ad8aab525cbe2be918b4b3a4bef1ae529042175",
      "parents": [
        "5e9eeaa3dc61704d359b57b113b5f80504c517fe",
        "37fa52b14eee7257af9a33b26df58e8e5d5d484d"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:41 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:41 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I625d6279a2e1955da186e77badc3688645a489a4\n"
    },
    {
      "commit": "37fa52b14eee7257af9a33b26df58e8e5d5d484d",
      "tree": "5b326d31e484382ac5a12fee2bb1c917218cf5fc",
      "parents": [
        "48e702bafb26ad324151313100fc896d7bced26f",
        "185a5fd3e3b78d97ff03456160a590a0d87ae2bc"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:18 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:58:18 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: Iaa0d99b8530e488f05f5973bbf001e390d889878\n"
    },
    {
      "commit": "185a5fd3e3b78d97ff03456160a590a0d87ae2bc",
      "tree": "1a480bd0a77f6b0303164b89dcda112fa8cbe110",
      "parents": [
        "fddc91ca6a6778e9f73005f47e72c3a67be41ced",
        "958287afc1406272247af7b9d4dc5189bcbadbe4"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:48 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:48 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I2a47316538a0d7275f38dd719ee9764c33266b35\n"
    },
    {
      "commit": "958287afc1406272247af7b9d4dc5189bcbadbe4",
      "tree": "aa41ad3adf619843c07510682bb8dae3be8cfbf3",
      "parents": [
        "e88e680b47719f2a677274e2bda6d3ee81928133",
        "e8889908079c4d977118a1a4d731ea1b43b14ea3"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:19 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:57:19 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  API should take into account the configured approval label\n  Fix GJF 1.7 formatting on java files\n\nChange-Id: I6260d5df05e3bd02eb7942d84fd41c4a35b72818\n"
    },
    {
      "commit": "e8889908079c4d977118a1a4d731ea1b43b14ea3",
      "tree": "5eca0aab8df9eab6e02f706425aa677a33ccb947",
      "parents": [
        "5993225294e78fb95f782b5f0c81017bf908d73e"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 18:38:44 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Mar 19 10:51:08 2025 +0000"
      },
      "message": "API should take into account the configured approval label\n\nCurrently the file owners api always disregards what\u0027s configured in the\nowners file unless default submit requirement is enabled and falls back\nto the max value for Code-Review label. There is no correlation between\nthe default submit requirement being enabled and which label should be\nused as approval label.\n\nRemove check on enableSubmitRequirement flag being set in order to\ncorrectly parse approval label.\n\nBug: Issue 404555670\nChange-Id: I2df61c49115653c423de7344e7d778d1805a6a2e\n"
    },
    {
      "commit": "5993225294e78fb95f782b5f0c81017bf908d73e",
      "tree": "23fa45c18e8c888f1a68d2e9d8642a01809ea73e",
      "parents": [
        "68a6c9316c72b6586c815f61421185fc9ba3b2ce"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Mar 19 08:10:23 2025 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Mar 19 08:10:23 2025 +0100"
      },
      "message": "Fix GJF 1.7 formatting on java files\n\nChange-Id: I03cda881d4dec7b9fdd919f83f60deac5debd319\n"
    },
    {
      "commit": "5e9eeaa3dc61704d359b57b113b5f80504c517fe",
      "tree": "c99c913f4a1bc9286b1eb97b2712bff8a114809a",
      "parents": [
        "89f4c873c3f7dcca5d45c020c2335437d907af5b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 13:11:28 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Mar 18 06:14:46 2025 -0700"
      },
      "message": "Owners plugin tests should only test owners plugin functionality\n\nCurrently we\u0027re testing default Gerrit core behaviours that could change\nanytime, and in fact this have changed in master causing one of the\ntests to be redundant.\n\nChange-Id: I119dbaeadddc33c9b17fdceca5c961a0d1386c71\n"
    },
    {
      "commit": "89f4c873c3f7dcca5d45c020c2335437d907af5b",
      "tree": "53467c050a043818d5db2b33668f0c99c5a8ee1c",
      "parents": [
        "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
        "48e702bafb26ad324151313100fc896d7bced26f"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:01:27 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:01:27 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: If4f35b8d0af04a22b4216cf402083cd6ec59f443\n"
    },
    {
      "commit": "48e702bafb26ad324151313100fc896d7bced26f",
      "tree": "53467c050a043818d5db2b33668f0c99c5a8ee1c",
      "parents": [
        "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
        "fddc91ca6a6778e9f73005f47e72c3a67be41ced"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:46 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:46 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I208e4b20e59ef178e8d11be5aadc1f968fef7314\n"
    },
    {
      "commit": "fddc91ca6a6778e9f73005f47e72c3a67be41ced",
      "tree": "1ffdfb5c692bef6e88f0596894c712edcbdbb0b2",
      "parents": [
        "2be86bddb179905620241544da08ed262d112eab",
        "e88e680b47719f2a677274e2bda6d3ee81928133"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:22 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 22:00:22 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I928501a89a49911ab8406b36c3943711c3219ce3\n"
    },
    {
      "commit": "e88e680b47719f2a677274e2bda6d3ee81928133",
      "tree": "3596c886979d268f038a4ae46756d6de875387e5",
      "parents": [
        "e7c04ae22d78d1de349f3dc8371f8f6d483196eb",
        "68a6c9316c72b6586c815f61421185fc9ba3b2ce"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 21:59:53 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 21:59:53 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Warn about off-line reindexing when using the owners\u0027 plugin\n  Specify when owners.config label definition is required\n\nChange-Id: I23a8ce65daee991f397f956e22f41d710539ec5e\n"
    },
    {
      "commit": "68a6c9316c72b6586c815f61421185fc9ba3b2ce",
      "tree": "a2c5cc742451f8112021e4e769fdf624abfda1f4",
      "parents": [
        "74abb9e1b0c145656e497a2c89677168e30d1a6c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 13 20:18:54 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 13 20:18:54 2025 +0000"
      },
      "message": "Warn about off-line reindexing when using the owners\u0027 plugin\n\nThe owners plugin does not provide its predicates and functions\nwhen running the off-line reindexing, however, the documentation did\nnot contain any note about it.\n\nAdd one specific note in the plugin\u0027s overview with the explicit\nwarning about the plugin NOT providing its functionality when\nrunning off-line reindexing and the suggested command to use\nfor reindexing projects using the owners plugin.\n\nChange-Id: I55c2028c72450f68604aee8d8d1e37d9d4ab851e\n"
    },
    {
      "commit": "74abb9e1b0c145656e497a2c89677168e30d1a6c",
      "tree": "b416005fbe29a516e4ce35caec716a50f5d8001a",
      "parents": [
        "eafc579f8ba4d193b792679d27ff9188e4585897"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 18:02:27 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Mar 13 13:00:59 2025 -0700"
      },
      "message": "Specify when owners.config label definition is required\n\nWhen no label functions are defined, as it should be now label.functions\nhave been deprecated for some time, the submit requirement and the\nfile owners api behave differently, leading to potential inconsistencies\nin the UI, where the submit requirement appears satisfied but files\nare still waiting for review, and viceversa.\n\nChange-Id: Id4fc9c848e8ddfa04439980595ae2d105f1d10ee\n"
    },
    {
      "commit": "5d085bfcf1a2653d6d83a2c4d8d130fd377fff1d",
      "tree": "586b51e8db6424b8dd510b58399c4f8cc401380c",
      "parents": [
        "b6fa286ed98a2870da29126773c32f53b885f33b"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 24 10:01:51 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 24 10:01:51 2025 +0000"
      },
      "message": "Fix typo in README.md\n\nChange-Id: Id508714fbe077e90a45142a12d17e52fbeb0eb46\n"
    },
    {
      "commit": "b6fa286ed98a2870da29126773c32f53b885f33b",
      "tree": "a836ad7d223eb52b97e9aea9dbdd513b68c0557f",
      "parents": [
        "4c2e5fffa07eb2d88f047fc80fbe1716f7f40fcc"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 10:33:18 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 06:35:24 2025 -0800"
      },
      "message": "Clarify what enableSubmitRequirement\u003dtrue does\n\nChange-Id: I3c4fb99fa12ea7dad81c88674e6f864999eb8cbf\n"
    },
    {
      "commit": "4c2e5fffa07eb2d88f047fc80fbe1716f7f40fcc",
      "tree": "bc55ba9b9a1738ab74b51f390b46064063aa2e9a",
      "parents": [
        "cda8e99fc38a8a806fd5786f44a9d080562e3535"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 14:05:41 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 10:26:37 2025 +0000"
      },
      "message": "Remove prolog examples from owners config.md\n\nChange-Id: Ic7bca9b0006532fc127426eef9ddf4b00033b11a\n"
    },
    {
      "commit": "cda8e99fc38a8a806fd5786f44a9d080562e3535",
      "tree": "f9d577697aa5291fb35a0bede1fb8b78a48ea531",
      "parents": [
        "224d6760d563c7a9d623d3e8a30a88c1fd5cf499"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 15:27:20 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Jan 23 01:04:31 2025 -0800"
      },
      "message": "Add link to plugin overview presentation\n\nChange-Id: I974340007578ad560b14b12f2b550ea7f8a44129\n"
    },
    {
      "commit": "224d6760d563c7a9d623d3e8a30a88c1fd5cf499",
      "tree": "6eef2d7e69a6f655b05f8ca5566f76a5ff9fc56b",
      "parents": [
        "ac55d1a6518c77c820a6e4a1a6225507b181afea"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 17 05:45:16 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Jan 22 23:42:02 2025 -0800"
      },
      "message": "Make over-arching owners plugin docs more generic\n\nThere is no need to explain the details of either owners or\nowners-autoassign at the repository level, a brief introduction is more\nthan enough. Each plugin section can then be much more specific\nwith examples and extensive config options.\n\nChange-Id: Id7b7db57d328962d9819402ea2befc06c83d7406\n"
    },
    {
      "commit": "ac55d1a6518c77c820a6e4a1a6225507b181afea",
      "tree": "996e863367f58831a836b8b997c0d5fa0223d81a",
      "parents": [
        "ca4ea06b2bfd9a114240313db3845a18be62b471"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Jan 14 09:35:53 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 07:34:35 2025 -0800"
      },
      "message": "Update owners plugin to clarify that prolog really is deprecated\n\nChange-Id: I126fbcd222bd463cd0fc1b45f87ca28ae3c9fab6\n"
    },
    {
      "commit": "ca4ea06b2bfd9a114240313db3845a18be62b471",
      "tree": "9e03f4ba98b34b518eadd65606d858277b4f7701",
      "parents": [
        "3e573a09a6c8f50219eeaef3efb40f70bfe9e2d6"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Jan 14 09:17:04 2025 -0800"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jan 20 07:29:54 2025 -0800"
      },
      "message": "Clarify owners-autoassign setup docs\n\nChange-Id: I159883c31c3a7954ef7255cca2b23248676c36bf\n"
    },
    {
      "commit": "3e573a09a6c8f50219eeaef3efb40f70bfe9e2d6",
      "tree": "cb006f7da036a2ed2acc2c19cea308158a75a8c5",
      "parents": [
        "4e0737a376b01fa392fe928761e1e88edbb4e549"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 10 10:31:02 2025 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Jan 10 10:31:02 2025 +0000"
      },
      "message": "Fix typo in owners-autoassign config.md\n\nChange-Id: Ie4a4a372ce66eec1921cc470420112685d009d46\n"
    },
    {
      "commit": "4e0737a376b01fa392fe928761e1e88edbb4e549",
      "tree": "9b7f36cd4018b5f7a883be38f1da6ff3ae9eef70",
      "parents": [
        "387d4dfdbd7e16bfe7214f2b5f84f6fcd54c2346",
        "2be86bddb179905620241544da08ed262d112eab"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:11:18 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:11:21 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I57d7ab110be6729e437e86add05df408b7c2ec9e\n"
    },
    {
      "commit": "2be86bddb179905620241544da08ed262d112eab",
      "tree": "e15967f4fc1e89dd724c89810ca7e3d53d8423f5",
      "parents": [
        "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f",
        "e7c04ae22d78d1de349f3dc8371f8f6d483196eb"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:09:25 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:09:35 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Improve owners how-to-use.md\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n  Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n  Document owners status on the change screen\n  Add `Status` column to the `Owned Files` tab\n\nChange-Id: Icdac09cf936763ddd599e615032bea3a9abcb123\n"
    },
    {
      "commit": "e7c04ae22d78d1de349f3dc8371f8f6d483196eb",
      "tree": "015b7dde9ec4fe45d62852b9e04eeabf2966d3ac",
      "parents": [
        "1d8c14ae107df17553a96519b04d947c40409bbe",
        "eafc579f8ba4d193b792679d27ff9188e4585897"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:05:55 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:06:01 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Document Owned Files tab in the Change screen\u0027s owners UI\n  Improve owners how-to-use.md\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n  Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n  Document owners status on the change screen\n  Add `Status` column to the `Owned Files` tab\n\nChange-Id: I79291d4180d3999507c5ccbd41d308d6a5d93a26\n"
    },
    {
      "commit": "eafc579f8ba4d193b792679d27ff9188e4585897",
      "tree": "486ba81b24dd7857b1e3a0c552ee976341b4ef83",
      "parents": [
        "6adf78d98cdce4fadbf163767a7c8d86771ba51f",
        "ab7e38909a8715486be9677c8849ce30f9d5d59f"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:04:40 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:04:44 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I8a663c170802746415ff0d4fc4259a16e3f26dfe\n"
    },
    {
      "commit": "ab7e38909a8715486be9677c8849ce30f9d5d59f",
      "tree": "239efb6aa41ae1bee29918e9a6fedf804c7431db",
      "parents": [
        "7f465ed471589da38e449c60c02c0384d34bfa56",
        "ba786da84900daf3f7df54fb20952d999d145be3"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:01:46 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 16:01:50 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id:  Ia79257fe2e9c76c0c1285187bf7c88649f135c62\n"
    },
    {
      "commit": "ba786da84900daf3f7df54fb20952d999d145be3",
      "tree": "239efb6aa41ae1bee29918e9a6fedf804c7431db",
      "parents": [
        "038b04519903a980b8d077dd81e25af109b76973",
        "aff1876bee63dba446a4b9a4a2c824390855418e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:59:46 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:59:53 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I6ffad8525b95a5bdbce8122cd99f695bd798fd37\n"
    },
    {
      "commit": "aff1876bee63dba446a4b9a4a2c824390855418e",
      "tree": "597912a580fdb93d3f78b5a2d9c7c331e309accd",
      "parents": [
        "b9f14145d5b665d7ea214314be9bf133d4cdedc9",
        "a98e78ba821840f77240acf04d093f9411da8552"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:57:06 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Dec 23 15:57:23 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  Expire the owners cache after 1 minute and make it unlimited\n  Optimize the \u0027path_owners_entries\u0027 cache eviction\n  Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I038f21524b7df93422b0ccd0f95afc5b9819828a\n"
    },
    {
      "commit": "6adf78d98cdce4fadbf163767a7c8d86771ba51f",
      "tree": "80f963e2a12d8f428cc4cec898350046c9ca7bd8",
      "parents": [
        "34ce461240ffbb5765632a89092ead16c9da56d0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 23:05:34 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 23 03:57:49 2024 -0800"
      },
      "message": "Document Owned Files tab in the Change screen\u0027s owners UI\n\nThe owners plugin UI has a new tab displaying the list of files\nowned by the current user.\n\nDocument the UI behaviour and meaning, including the limitation\nof its inaccuracy in case of having owners.expandGroups \u003d false.\n\nChange-Id: I88a676da97fc1f009b6c7ed4bc7e385ab7cfebbc\n"
    },
    {
      "commit": "387d4dfdbd7e16bfe7214f2b5f84f6fcd54c2346",
      "tree": "d34bee66396225f70ce1096e41dab3947ec9aefc",
      "parents": [
        "3f6e06965e678b7e52108b82809f923a201bb0cd",
        "c60596b52ba7e63df8170fd0113c222aa27b7ca1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 14:17:43 2024 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 19 14:17:43 2024 -0800"
      },
      "message": "Merge \"Remove references to replacement mode\""
    },
    {
      "commit": "c60596b52ba7e63df8170fd0113c222aa27b7ca1",
      "tree": "c934517231bc39baa96dc2f76b1bbce6cdf3d264",
      "parents": [
        "34ce461240ffbb5765632a89092ead16c9da56d0"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 22:13:30 2024 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 22:15:28 2024 +0000"
      },
      "message": "Remove references to replacement mode\n\nChange-Id: I048468500386352c2db661cbdc64ddb21c8207a4\n"
    },
    {
      "commit": "34ce461240ffbb5765632a89092ead16c9da56d0",
      "tree": "dd249015c3b599b7e0dce890477b9104d1fed6c5",
      "parents": [
        "71a50eac1ac81558fc1ebf6bbb3774782cf7658c"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 20:56:16 2024 +0000"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Dec 19 13:55:13 2024 -0800"
      },
      "message": "Improve owners how-to-use.md\n\nAddressing post merge comments from I4b8a26533 to improve clarity and\nreadability.\n\nChange-Id: I9ee44ca647eebb0241b372aa6ecb9c84d02232d6\n"
    },
    {
      "commit": "a98e78ba821840f77240acf04d093f9411da8552",
      "tree": "a5a607d0939a4a3983ceb4f0dc18da6ebb8f9c2d",
      "parents": [
        "99c5c56b4b636d147e2eb9f3002c00ce877073d7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 02 10:52:18 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 08:42:45 2024 -0800"
      },
      "message": "Expire the owners cache after 1 minute and make it unlimited\n\nChange-Id: I64ecf6d4b721cec0185d79cbc30c94b291d763dc\n"
    },
    {
      "commit": "99c5c56b4b636d147e2eb9f3002c00ce877073d7",
      "tree": "10c34d98fa971d6898d1d5b1885ba152b87757d5",
      "parents": [
        "965169d6541118e78363c8059cdd4ec77bb32224"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Sat Apr 15 16:10:59 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 08:42:37 2024 -0800"
      },
      "message": "Optimize the \u0027path_owners_entries\u0027 cache eviction\n\nThe OWNERS file can be present either under the `refs/meta/config` or\n`refs/heads/*` ref. Ignore evictions to All-Users project and to other\n(gerrit technical refs).\n\nBug: Issue 16830\nChange-Id: I2c2d4a6ec3950f7890ae1d8e372f71bffcc7796b\n"
    },
    {
      "commit": "965169d6541118e78363c8059cdd4ec77bb32224",
      "tree": "4666cbff2d82f5519365263d536025c62b1c826b",
      "parents": [
        "03030bb4dce948f6f626a2ca5608ed725ae3a59b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 02 10:03:07 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Dec 19 16:37:48 2024 +0000"
      },
      "message": "Introduce PathOwners cache from Ic7d61de07\n\nChange-Id: I7a77d356137b12b179bbdd98041ab2ccd8b3bb66\n"
    },
    {
      "commit": "71a50eac1ac81558fc1ebf6bbb3774782cf7658c",
      "tree": "17b485e569b9070ed42db59159d4ca373c7f792e",
      "parents": [
        "15d3d207b9a63705e1cc251e6e9409b2f124337b"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Dec 19 08:05:10 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Thu Dec 19 08:05:10 2024 +0100"
      },
      "message": "Include Gerrit\u0027s `shared-styles` in `Owned Files` tab\n\nAdd common Gerrit\u0027s styles to `Owned Files` components so that they get\nconsistently styled e.g. links are highlighted in the same color etc.\n\nBug: Issue 384100207\nChange-Id: I80360f56f425d36b7b129694dabe7ad99e82cf55\n"
    },
    {
      "commit": "15d3d207b9a63705e1cc251e6e9409b2f124337b",
      "tree": "46bbf62a647fa2b069bf9e68afc1b307a3da0a29",
      "parents": [
        "bdb4e8a7f8cc71d2583141cb909162ee7caaf4a7",
        "b2eeaab1556382d7a9f469dbc1a598ca96f74e9c"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Dec 18 02:01:44 2024 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 18 02:01:44 2024 -0800"
      },
      "message": "Merge \"Document owners status on the change screen\" into stable-3.8"
    },
    {
      "commit": "b2eeaab1556382d7a9f469dbc1a598ca96f74e9c",
      "tree": "3a0bc3f12c8c1b8fa42da1e4592f0d7c4974434e",
      "parents": [
        "a0b6cf369f2791e4d2f0b700e9112f2b00025178"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 11 19:42:56 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 10:58:48 2024 +0100"
      },
      "message": "Document owners status on the change screen\n\nSubmit requirements panel and `Files` tab owner\u0027s plugin additions were\ndocumented in both submit requirements and replacement modes.\n\nThe `Owned Files` tab and UI behaviour when `owners.expandGroups \u003d\nfalse` will be covered in the follow ups.\n\nBug: Issue 382509294\nChange-Id: I4b8a26533166b3b7464a8c2a7e1515da3e3a8130\n"
    },
    {
      "commit": "bdb4e8a7f8cc71d2583141cb909162ee7caaf4a7",
      "tree": "0f0cce55667f719d5deafc947e21ae015eb4d7f6",
      "parents": [
        "7f12b9241539f5f0d4e54e0042372e938902b4ab"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 07:34:23 2024 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Wed Dec 18 10:33:40 2024 +0100"
      },
      "message": "Add `Status` column to the `Owned Files` tab\n\nPrior to this change it wasn\u0027t clear which owned files are already\napproved (for instance by other reviewers that own subset of files).\nAdd a `Status` column (before `File`) that:\n* contains orange clock icon for each file that still needs to be\n  approved\n* contains green ✓ icon for file that was approved by someone else\n\nBug: Issue 384100207\nChange-Id: I1dc8ce4b1d3bc90cdb58817a0f92a88c83611400\n"
    },
    {
      "commit": "3f6e06965e678b7e52108b82809f923a201bb0cd",
      "tree": "875467047b248413e44dd0257cc8ac02a5dfd554",
      "parents": [
        "2642dae503087b74dd04ffef2c6bae1646c2d7f2",
        "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:49:39 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:49:45 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n\nChange-Id: I33933afd073b253066f8fde0d88a25fe54a8bfd3\n"
    },
    {
      "commit": "0cd6015d4f0ef7a571b33e1a7223651c4a7faf2f",
      "tree": "baed7a8967b8d45f4f8e00a830a20226d18c6f7b",
      "parents": [
        "e01297788b0e8351cf7f31730ab0e6999dfa4861",
        "1d8c14ae107df17553a96519b04d947c40409bbe"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:48:42 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:48:59 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n  Ensure that `Owned Files` is not switchable when no files are owned\n  Match Owned Files entries even when owners.expandGroups \u003d\u003d false\n\nChange-Id: I13ca03f357426a8971a376dcc624f1f419929a32\n"
    },
    {
      "commit": "1d8c14ae107df17553a96519b04d947c40409bbe",
      "tree": "6375b492601bfb5337d42097949f7dda4f65f7fd",
      "parents": [
        "5ef862d663c0fdbffd5bbe9547cd3e55ef86e333",
        "7f12b9241539f5f0d4e54e0042372e938902b4ab"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:47:06 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:47:18 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Fix `Owned Files` status icon when some files are already approved\n  Fix misleading log message when adding reviewers\n  Add status icon to the `Owned Files` tab header\n  Unify check if change contains owners submit requirements\n  Show owners files statuses and `Owned Files` tab in replacment mode\n  Remove `allFilesApproved` state from the `OwnersState`\n  Show `Owned Files` even when all files were approved\n  Don\u0027t display `Owned Files` when not current PS is viewed\n  Ensure that `Owned Files` is not switchable when no files are owned\n  Match Owned Files entries even when owners.expandGroups \u003d\u003d false\n\nChange-Id: Ie2310548b34f2bc4332c0604c5e69d3b79c7b76d\n"
    },
    {
      "commit": "7f12b9241539f5f0d4e54e0042372e938902b4ab",
      "tree": "e89a43e0bd02f953114dc139761452fb0057aa81",
      "parents": [
        "1b5c3287b4b2e3a07fa1258e99cd3752de4768ce",
        "7f465ed471589da38e449c60c02c0384d34bfa56"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:45:47 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:45:53 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Fix misleading log message when adding reviewers\n\nChange-Id: Ie94419ca4e2b3a49a5b88a55b4be020bd0841a61\n"
    },
    {
      "commit": "7f465ed471589da38e449c60c02c0384d34bfa56",
      "tree": "cc253c9f117b72ba2d5e77c928fe7d2f546dd21a",
      "parents": [
        "4f4bcc5ba11676f16a99bd724cf20a62f356cdca",
        "038b04519903a980b8d077dd81e25af109b76973"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:39:16 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:40:47 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Fix misleading log message when adding reviewers\n\nChange-Id: I6660cb2fc3205b279f37a5d7ce3376e61ec79c6c\n"
    },
    {
      "commit": "038b04519903a980b8d077dd81e25af109b76973",
      "tree": "cc253c9f117b72ba2d5e77c928fe7d2f546dd21a",
      "parents": [
        "50cea7f4c7d5c67239b591b877f492f1d2625ebe",
        "b9f14145d5b665d7ea214314be9bf133d4cdedc9"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:38:05 2024 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Dec 17 15:38:18 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Fix misleading log message when adding reviewers\n\nChange-Id: Iebaa35a3620ee047c5d1ead8e650e6c3121956a3\n"
    }
  ],
  "next": "b9f14145d5b665d7ea214314be9bf133d4cdedc9"
}
