)]}'
{
  "log": [
    {
      "commit": "a5cf91a82bed12d29bd9562c5dd8578283f56cad",
      "tree": "b5eb6a75630f9f3e608dc35af090b030fea95ed5",
      "parents": [
        "1c6730047356fbcd9a60a283f39828b1ed6fc22f",
        "7967a1613897bba862f94fe9b134137d9af9c04b"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Tue Jul 14 16:21:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:21:21 2026 +0200"
      },
      "message": "Merge pull request #2139 from tti0/tti0/repr-impl-docs\n\nFastEnum: implement __str__ and __repr__ to match StrEnum for docs reproducibility"
    },
    {
      "commit": "7967a1613897bba862f94fe9b134137d9af9c04b",
      "tree": "b5eb6a75630f9f3e608dc35af090b030fea95ed5",
      "parents": [
        "153ea04e3274cd939901594ab3f41679329c27bd"
      ],
      "author": {
        "name": "Theodore Tucker",
        "email": "theodore@tti0.net",
        "time": "Sat Jul 11 17:00:00 2026 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Jul 13 16:01:19 2026 +0200"
      },
      "message": "cli: stringify FastEnum\u0027s passed as Click defaults\n\nThis should mean the StrEnum-style repr is used by sphinx-click when\nrendering the default in documentation, resulting in `all` rather than\n`\u003cbuildstream.types._PipelineSelection object at 0xabc\u003e`.\n"
    },
    {
      "commit": "153ea04e3274cd939901594ab3f41679329c27bd",
      "tree": "b392d86b4800b1256d76ff0959d07e142e1bd485",
      "parents": [
        "1c6730047356fbcd9a60a283f39828b1ed6fc22f"
      ],
      "author": {
        "name": "Theodore Tucker",
        "email": "theodore@tti0.net",
        "time": "Sat Jul 11 16:57:16 2026 +0100"
      },
      "committer": {
        "name": "Theodore Tucker",
        "email": "theodore@tti0.net",
        "time": "Mon Jul 13 14:56:40 2026 +0100"
      },
      "message": "FastEnum: update __repr__ and __str__ to behave like StrEnum\n\nThis means we can drop the redundant __str__ implementation on\nthe subclass _PipelineSelection.\n"
    },
    {
      "commit": "1c6730047356fbcd9a60a283f39828b1ed6fc22f",
      "tree": "81481c1c6b49903710d0c8f3d58e165d3143bb85",
      "parents": [
        "f0c7edd69235f71bfca987920140769cc101a5d0",
        "caf012e6ec68c2763b74cb7e2470adbba396f317"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jul 10 15:15:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 15:15:19 2026 +0200"
      },
      "message": "Merge pull request #2146 from nathanwilliams-ct/nathan/questions\n\nREADME.rst: Update communication channels"
    },
    {
      "commit": "f0c7edd69235f71bfca987920140769cc101a5d0",
      "tree": "b53938dce40d7a08c2ed4fbfd86b82fa84ba2fd9",
      "parents": [
        "c24c132738b9f066929d4c5106278420bdac3296",
        "042523a96865c81767d13d244a30aea0f4553132"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jul 10 15:11:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 15:11:53 2026 +0200"
      },
      "message": "Merge pull request #2126 from apache/jbilleter/doc-buildelement-buildsteps\n\ndoc/source/core_buildelement.rst: Add \u0027Build steps\u0027 section"
    },
    {
      "commit": "c24c132738b9f066929d4c5106278420bdac3296",
      "tree": "498886e32d0398ffbc5a9adefd5aa65dd9bc636a",
      "parents": [
        "bbbe58144a53625296b702f95cbc0f0d3b450529",
        "4a2fe3783beffe91b31f096c83f38a5166f0427f"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jul 10 15:07:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 15:07:37 2026 +0200"
      },
      "message": "Merge pull request #2135 from apache/jbilleter/status-interactive-only\n\n_frontend: Disable status printer in non-interactive mode"
    },
    {
      "commit": "caf012e6ec68c2763b74cb7e2470adbba396f317",
      "tree": "b28b20a8bdcea4e2530c1e6d2280fb0911305509",
      "parents": [
        "bbbe58144a53625296b702f95cbc0f0d3b450529"
      ],
      "author": {
        "name": "Nathan Williams",
        "email": "nathan.williams@codethink.co.uk",
        "time": "Fri Jul 03 12:04:46 2026 +0100"
      },
      "committer": {
        "name": "Nathan Williams",
        "email": "nathan.williams@codethink.co.uk",
        "time": "Tue Jul 07 12:25:13 2026 +0100"
      },
      "message": "README.rst: Update communication channels\n\n- Remove link to the old irc server, that has been discontinued\n- Add link to the unoffical channel on matrix.org\n- Add link to the official mailing list on apache.org\n"
    },
    {
      "commit": "4a2fe3783beffe91b31f096c83f38a5166f0427f",
      "tree": "498886e32d0398ffbc5a9adefd5aa65dd9bc636a",
      "parents": [
        "bbbe58144a53625296b702f95cbc0f0d3b450529"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Jun 22 19:51:55 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Jun 22 19:51:55 2026 +0200"
      },
      "message": "_frontend: Disable status printer in non-interactive mode\n\nIt was already disabled if the output streams weren\u0027t connected to a\nterminal. However, the CLI option `--no-interactive` accidentally\nenabled the status printer.\n"
    },
    {
      "commit": "bbbe58144a53625296b702f95cbc0f0d3b450529",
      "tree": "e49c973fa28d39c5ee0eb22cec32646b04e6663b",
      "parents": [
        "8149575d5dce9fdf7ea02bdfd1c82d92700dc67e",
        "13b3e25c3062c1ab7a61deea38b75fe5db5b5ab4"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jun 19 12:24:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 12:24:26 2026 +0200"
      },
      "message": "Merge pull request #2123 from apache/infrastructure-ruleset-bot/default-branch-protection\n\n[INFRA] Set up default rulesets for default and release branches"
    },
    {
      "commit": "8149575d5dce9fdf7ea02bdfd1c82d92700dc67e",
      "tree": "1c0fc44611c2c61fb406cfb78495dddc4fda9d59",
      "parents": [
        "eca772f6f1175a5a8e867733651616eeed1d62ca",
        "641451e36e952960c29144f9efe8065153565e34"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jun 19 12:09:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 12:09:17 2026 +0200"
      },
      "message": "Merge pull request #2125 from kotborealis/fix/workspace-reset-nested-name\n\nfix: use full element names in workspace reset"
    },
    {
      "commit": "eca772f6f1175a5a8e867733651616eeed1d62ca",
      "tree": "443468d13422ed9a79f74c933c70b4954f889464",
      "parents": [
        "f31b72e0ba900944eb8f6f35ddc1cf974b77c832",
        "c10c9e7e0415ac618cddd74325ddbe99a4b42bee"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jun 19 11:07:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 11:07:38 2026 +0200"
      },
      "message": "Merge pull request #2133 from kotborealis/normalize-paths-elements\n\nloader: normalize ./-prefixed element names (#2132)"
    },
    {
      "commit": "f31b72e0ba900944eb8f6f35ddc1cf974b77c832",
      "tree": "f611391480249e25213ca29f57c613650cb998d3",
      "parents": [
        "914b2dead1ed80b4dd9eaf0f37728a0697675c91",
        "006d6b663b477272ea031d75b8fb73570cea7233"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Jun 17 10:54:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 10:54:41 2026 +0200"
      },
      "message": "Merge pull request #2089 from apache/abderrahim/ruamel-yaml-malformed\n\n_yaml: Split error reporting for parser initialisation"
    },
    {
      "commit": "006d6b663b477272ea031d75b8fb73570cea7233",
      "tree": "f611391480249e25213ca29f57c613650cb998d3",
      "parents": [
        "914b2dead1ed80b4dd9eaf0f37728a0697675c91"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Mon Nov 10 12:18:02 2025 +0100"
      },
      "committer": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Mon Jun 15 16:44:29 2026 +0100"
      },
      "message": "_yaml: Split error reporting for parser initialisation\n\nSome versions of ruamel-yaml-clib have a defective aarch64 wheel, but\nbuildstream was reporting \"Severely malformed YAML\" instead.\n"
    },
    {
      "commit": "914b2dead1ed80b4dd9eaf0f37728a0697675c91",
      "tree": "8bb4c54098662b367f65c7b6c38b70e75929e3e8",
      "parents": [
        "4c7fac5fa41dbd485fdde23b8eff9f5748ea0f66",
        "033b530ee8d5b150d1134c1606e9e19b0708481d"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Jun 13 19:18:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 19:18:38 2026 +0200"
      },
      "message": "Merge pull request #2134 from apache/jbilleter/cython-names\n\nnode.pyx: Fix incorrect use of class private names"
    },
    {
      "commit": "033b530ee8d5b150d1134c1606e9e19b0708481d",
      "tree": "8bb4c54098662b367f65c7b6c38b70e75929e3e8",
      "parents": [
        "4c7fac5fa41dbd485fdde23b8eff9f5748ea0f66"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Jun 13 11:08:49 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Jun 13 11:08:49 2026 +0200"
      },
      "message": "node.pyx: Fix incorrect use of class private names\n\nThis fixes the following Cython warning:\n\n    warning: src/buildstream/node.pyx:1626:0: Global name __CompositeError matched from within class scope in contradiction to Python \u0027class private name\u0027 rules. This may change in a future release.\n\nSee https://github.com/cython/cython/issues/3544.\n\nFixes #1981.\n"
    },
    {
      "commit": "c10c9e7e0415ac618cddd74325ddbe99a4b42bee",
      "tree": "1e71b5999c49337bc791f5517cb6a8835bedf663",
      "parents": [
        "0d8149a2f9dc79ecda67933264240ecd1d04c957"
      ],
      "author": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Thu Jun 11 19:18:55 2026 +0300"
      },
      "committer": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Fri Jun 12 14:18:13 2026 +0300"
      },
      "message": "loader: normalize ./-prefixed element names (#2132)\n"
    },
    {
      "commit": "4c7fac5fa41dbd485fdde23b8eff9f5748ea0f66",
      "tree": "d8ba68544377a26a688701d348a0cedab2cbcf72",
      "parents": [
        "0d8149a2f9dc79ecda67933264240ecd1d04c957",
        "39a6146551e4fccb40bee37773c0dc1b6d16deb0"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jun 12 12:21:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 12 12:21:16 2026 +0200"
      },
      "message": "Merge pull request #2131 from kotborealis/fix-generate-scripts-docs\n\nelement.py: Update error message for missing `generate_script`"
    },
    {
      "commit": "39a6146551e4fccb40bee37773c0dc1b6d16deb0",
      "tree": "d8ba68544377a26a688701d348a0cedab2cbcf72",
      "parents": [
        "0d8149a2f9dc79ecda67933264240ecd1d04c957"
      ],
      "author": {
        "name": "Evgeny Pistun",
        "email": "kotborealis@awooo.ru",
        "time": "Thu Jun 11 12:30:48 2026 +0300"
      },
      "committer": {
        "name": "Evgeny Pistun",
        "email": "kotborealis@awooo.ru",
        "time": "Thu Jun 11 12:33:01 2026 +0300"
      },
      "message": "chore: update error message for missing `generate_script`\n\nUpdated error message for non-implemented `generate_script`:\nit was referencing `write_script`, which is misleading.\n"
    },
    {
      "commit": "0d8149a2f9dc79ecda67933264240ecd1d04c957",
      "tree": "55f1924bb7e3ce2c8fac3857c5c6c30524b04ace",
      "parents": [
        "9412787d990eedb54d42c4d71dc56259dddfbb12",
        "7746237fe6886ad8caaf97b6237710c6c0bb267a"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Mon Jun 08 13:55:57 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:55:57 2026 +0100"
      },
      "message": "Merge pull request #2127 from pixlxip/patch-3\n\ndocs: \"lets\" → \"let\u0027s\" in tutorial"
    },
    {
      "commit": "9412787d990eedb54d42c4d71dc56259dddfbb12",
      "tree": "5c00b3042ecd4a9d2109352c0378b4de63073e70",
      "parents": [
        "a508a35458015f5e59f4c1a607662b4cae17c3c1",
        "77ad56be5b2f47e69ff4a775c0233b0694bb758b"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Wed Jun 03 18:56:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 18:56:26 2026 +0100"
      },
      "message": "Merge pull request #2128 from joshua-zivkovic/JZ/installation-docs\n\nUpdate links to installation documentation"
    },
    {
      "commit": "77ad56be5b2f47e69ff4a775c0233b0694bb758b",
      "tree": "5c00b3042ecd4a9d2109352c0378b4de63073e70",
      "parents": [
        "a508a35458015f5e59f4c1a607662b4cae17c3c1"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Mon Jun 01 11:50:32 2026 +0100"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Mon Jun 01 12:26:28 2026 +0100"
      },
      "message": "Update links to installation documentation\n"
    },
    {
      "commit": "7746237fe6886ad8caaf97b6237710c6c0bb267a",
      "tree": "6c372b380b2943e6f45e63d6a4da286371d5fd7d",
      "parents": [
        "a508a35458015f5e59f4c1a607662b4cae17c3c1"
      ],
      "author": {
        "name": "pixl_xip",
        "email": "braydenrischke30@gmail.com",
        "time": "Sat May 30 10:02:57 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 10:02:57 2026 -0400"
      },
      "message": "\"lets\" → \"let\u0027s\" in tutorial\n\nFix a small typo."
    },
    {
      "commit": "042523a96865c81767d13d244a30aea0f4553132",
      "tree": "e4140628c2f21685410f55475774e7ad8c0598ce",
      "parents": [
        "a508a35458015f5e59f4c1a607662b4cae17c3c1"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 29 16:47:15 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 29 18:00:04 2026 +0200"
      },
      "message": "doc/source/core_buildelement.rst: Add \u0027Build steps\u0027 section\n\nCo-authored-by: Dom Rodriguez \u003cdom.rodriguez@codethink.co.uk\u003e\n"
    },
    {
      "commit": "a508a35458015f5e59f4c1a607662b4cae17c3c1",
      "tree": "5d6c34f672f29cbe7721385cc54f19ddcc548ca2",
      "parents": [
        "937c00a101ec53317591887a3cadd7fb520b38d4",
        "18351338955e6299eacd29931f171177f7bd2fe4"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 29 14:34:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 14:34:31 2026 +0200"
      },
      "message": "Merge pull request #2124 from joshua-zivkovic/JZ/installation-docs\n\nAdd install docs from buildstream-site"
    },
    {
      "commit": "18351338955e6299eacd29931f171177f7bd2fe4",
      "tree": "5d6c34f672f29cbe7721385cc54f19ddcc548ca2",
      "parents": [
        "937c00a101ec53317591887a3cadd7fb520b38d4"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Wed May 20 11:37:37 2026 +0100"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Fri May 29 13:16:41 2026 +0100"
      },
      "message": "doc/source/main_install.rst: Add install docs from buildstream-site\n"
    },
    {
      "commit": "937c00a101ec53317591887a3cadd7fb520b38d4",
      "tree": "48de18679d23f54ed9591a595540a30eb22eb6c1",
      "parents": [
        "f6371f77f4c5f1aa7862220f3e9f491d7e6764cc",
        "8e99604ebbb261ad02a3ba56ba7ca866ea9e5154"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 22 17:03:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 17:03:46 2026 +0200"
      },
      "message": "Merge pull request #2119 from apache/jbilleter/junction-provenance\n\nDefer source provenance check until the project is fully loaded"
    },
    {
      "commit": "f6371f77f4c5f1aa7862220f3e9f491d7e6764cc",
      "tree": "858756ce599e9f4e534f5ed53449ba250e640cd7",
      "parents": [
        "5349c6c84b23c31fcaee98a2e6101a0aa2668258",
        "1312bd8f51c3b70d3c96b75e4fc490dea8154f6c"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Thu May 21 20:03:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 20:03:53 2026 +0200"
      },
      "message": "Merge pull request #2122 from apache/jbilleter/doc-buildelement\n\ndocs: Move BuildElement\u0027s \"Built-in functionality\" to a new page"
    },
    {
      "commit": "641451e36e952960c29144f9efe8065153565e34",
      "tree": "dbbb0ac3dde3d3f4ddc868ca269550182b03fbf2",
      "parents": [
        "5349c6c84b23c31fcaee98a2e6101a0aa2668258"
      ],
      "author": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Wed May 20 13:43:37 2026 +0300"
      },
      "committer": {
        "name": "Evgeny Pistun",
        "email": "Evgeny.Pistun@kaspersky.com",
        "time": "Wed May 20 21:08:54 2026 +0300"
      },
      "message": "fix: use full element names in workspace reset\n\nFixes a bug where `workspace reset` did not work for junctions.\n\nFor example, we have a project with struct like this:\n```\nnested.bst:hello.bst\n```\n\nSo the root project has one element `nested.bst`, which is a junction to\nanother project, and the junction has one element `hello.bst`.\n\nIf we try to open this element as workspace, it works:\n```\nbst workspace open nested.bst:hello.bst\n```\n\nIf we try to close this workspace, it works:\n```\nbst workspace close nested.bst:hello.bst\n```\n\nHowever, if we try `bst workspace reset` command on it, it fails with\nerror `Workspace does not exist`.\nThe error is that `workspace_reset` method called `workspace_exists`\nwith `element.name`, which was resolved to just `hello.bst`.\nIn comparsion, a few lines down, it uses `get_workspace` with\n`element._get_full_name()`, which is `nested.bst:hello.bst`.\n\nThis patch updates `workspace_reset` function to check existence using\nelement full name to support junctions.\n"
    },
    {
      "commit": "13b3e25c3062c1ab7a61deea38b75fe5db5b5ab4",
      "tree": "b01ef14e4b940f41e199baef3c397c80a3d658d4",
      "parents": [
        "5349c6c84b23c31fcaee98a2e6101a0aa2668258"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 14:01:52 2026 -0500"
      },
      "committer": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 14:01:52 2026 -0500"
      },
      "message": "Set up default protection ruleset for default and release branches"
    },
    {
      "commit": "1312bd8f51c3b70d3c96b75e4fc490dea8154f6c",
      "tree": "858756ce599e9f4e534f5ed53449ba250e640cd7",
      "parents": [
        "5349c6c84b23c31fcaee98a2e6101a0aa2668258"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 08 17:36:21 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 08 17:59:24 2026 +0200"
      },
      "message": "docs: Move BuildElement\u0027s \"Built-in functionality\" to a new page\n\nThe documentation of how to use the common features provided by the\n`BuildElement` base class is currently part of the API reference even\nthough it\u0027s more relevant to project authors than plugin developers.\n\nThis moves that section to a new page in the \"Reference\" section, next\nto other plugin-specific documentation.\n\nCo-authored-by: Dom Rodriguez \u003cdom.rodriguez@codethink.co.uk\u003e\n"
    },
    {
      "commit": "5349c6c84b23c31fcaee98a2e6101a0aa2668258",
      "tree": "4605c817c805f1414254d8d93a223cd0d97804b6",
      "parents": [
        "4c92f3003cfba379edd9d653a72d860ded013445",
        "e71137667af24bb17819ac3d6b112d1f943a3294"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Thu May 07 09:41:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 09:41:54 2026 +0200"
      },
      "message": "Merge pull request #2121 from joshua-zivkovic/JZ/link-typo\n\ndoc/source/main_install.rst: Fix typo in link syntax"
    },
    {
      "commit": "e71137667af24bb17819ac3d6b112d1f943a3294",
      "tree": "4605c817c805f1414254d8d93a223cd0d97804b6",
      "parents": [
        "4c92f3003cfba379edd9d653a72d860ded013445"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Thu May 07 08:05:16 2026 +0100"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Thu May 07 08:06:43 2026 +0100"
      },
      "message": "doc/source/main_install.rst: Fix typo in link syntax\n"
    },
    {
      "commit": "8e99604ebbb261ad02a3ba56ba7ca866ea9e5154",
      "tree": "c9b1ec1324be781721f634d04804d967250fe773",
      "parents": [
        "4d47d482c385a245273719d157b04904d0420038"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Apr 26 17:02:52 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 18:44:47 2026 +0200"
      },
      "message": "tests/sources/source_provenance_attributes.py: Test junction provenance\n\nJunctions may be loaded before a project is fully loaded, which means\nthat the source provenance attribute project configuration may not be\navailable yet.\n"
    },
    {
      "commit": "4d47d482c385a245273719d157b04904d0420038",
      "tree": "c1f334c93e9882e385789625c293e7ae6a834704",
      "parents": [
        "d07808b2f76234445616132ee798da8a9f45af3f"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 14:50:45 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 18:44:47 2026 +0200"
      },
      "message": "_stream.py: Ensure all projects are fully loaded\n\nSpecifying only a junction as target may otherwise leave the project in\na partially loaded state.\n"
    },
    {
      "commit": "d07808b2f76234445616132ee798da8a9f45af3f",
      "tree": "5aa90b21bce79379df8efe1c55ed209683d27d99",
      "parents": [
        "4c92f3003cfba379edd9d653a72d860ded013445"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 11:39:51 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 18:44:47 2026 +0200"
      },
      "message": "Defer source provenance check until the project is fully loaded\n\nJunctions may be loaded before a project is fully loaded, which means\nthat the source provenance attribute project configuration may not be\navailable yet.\n\nThis adds a callback mechanism to defer the source provenance attribute\ncheck if the project is not fully loaded when a junction element with a\nprovenance node is loaded.\n\n      File \"src/buildstream/element.py\", line 1075, in _new_from_load_element\n        element.__load_sources(load_element)\n        ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^\n      File \"src/buildstream/element.py\", line 2642, in __load_sources\n        provenance_node.validate_keys(project.source_provenance_attributes.keys())\n                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    AttributeError: \u0027NoneType\u0027 object has no attribute \u0027keys\u0027\n\nFixes #2116.\n"
    },
    {
      "commit": "4c92f3003cfba379edd9d653a72d860ded013445",
      "tree": "bcad059ff9361d17c5803d7cbbc9993b52fe95e7",
      "parents": [
        "e39af277cb009c0fc2e255f453c234258a2fe2a4",
        "e6ac735a6ad17629be59ca9ffb3be6a4dc2e6de3"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri May 01 10:08:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 10:08:19 2026 +0200"
      },
      "message": "Merge pull request #2115 from apache/jbilleter/requirements\n\nUpdate requirements"
    },
    {
      "commit": "e39af277cb009c0fc2e255f453c234258a2fe2a4",
      "tree": "bf7d44ed1fd3f410f48857d19fc4698c0228baa4",
      "parents": [
        "16e45332b3e8fad38411d23032b445799c48aff7",
        "9f0c6dace105b51c2470baa6ade863c541ab0bf5"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Thu Apr 30 11:39:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 11:39:28 2026 +0200"
      },
      "message": "Merge pull request #2114 from apache/jbilleter/loader\n\nFix circular reference errors with junction overrides"
    },
    {
      "commit": "e6ac735a6ad17629be59ca9ffb3be6a4dc2e6de3",
      "tree": "08501898d0c3b6c09d17f9df6f8e9177de0d66c3",
      "parents": [
        "f90b64db78da2361d64cb5ae0b9d7958ef3b3db4"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 12:21:00 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 12:22:39 2026 +0200"
      },
      "message": "Update black to version 26.3\n\nThis is required for compatibility with Python 3.14.\n"
    },
    {
      "commit": "f90b64db78da2361d64cb5ae0b9d7958ef3b3db4",
      "tree": "114365184442d4eed7dd0bb2af026e75cbd6d7d1",
      "parents": [
        "16e45332b3e8fad38411d23032b445799c48aff7"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 12:06:36 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 12:06:36 2026 +0200"
      },
      "message": "Update requirements\n"
    },
    {
      "commit": "9f0c6dace105b51c2470baa6ade863c541ab0bf5",
      "tree": "bf7d44ed1fd3f410f48857d19fc4698c0228baa4",
      "parents": [
        "dc0a2656d05a10b39cffdf57b9604396a1d08eff"
      ],
      "author": {
        "name": "Harry Sarson",
        "email": "harry.sarson@codethink.co.uk",
        "time": "Wed Aug 13 15:43:11 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 11:43:04 2026 +0200"
      },
      "message": "tests/format/junctions.py: Test include from nested junction\n\nThis creates a variant of the include-complex test project where the\nsubproject is moved into a new intermediate project and the\nsubproject.bst junction element is replaced by a link element. Including\na file from a nested junction via a link element in the top level\nproject.conf file tests more code paths in the loader.\n\nThis change shows a bug in the loader, running `bst show --deps none\ntarget.bst` in the `tests/format/junctions/include-complex-nested`\ndirectory gives the following output:\n\n```\n20:02:32 --:--:--              main:core activity                  START   Loading elements\n20:02:32 00:00:00              main:core activity                  FAILURE Loading elements\n\nintermediate-project.bst:project.conf [line 5 column 2]: Circular reference while searching for \u0027subproject.bst\u0027\n\n    Already searching for \u0027subproject.bst\u0027 at: subproject.bst [line 4 column 10]\n```\n"
    },
    {
      "commit": "dc0a2656d05a10b39cffdf57b9604396a1d08eff",
      "tree": "2794dd79d0b0b63cf68242b03bd01cd0405047dc",
      "parents": [
        "7134c7ce5db865fced601c20df9f5b09ca74c3d1"
      ],
      "author": {
        "name": "Harry Sarson",
        "email": "harry.sarson@codethink.co.uk",
        "time": "Wed Aug 13 15:40:08 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 11:31:40 2026 +0200"
      },
      "message": "tests/format/junctions.py: Add override-self test for nested-link bug\n\nThis commit adds an additional level of nesting to a copy of the\noverride-self buildstream test project by a new subproject and moving\nthe self-junction into the subproject.\n\nBoth the `link.bst` and the `nested-link.bst` elements point to the\nsubproject\u0027s `target.bst` element but `nested-link.bst` does so via the\nself-junction, hence the \"nesting\".\n\nRunning `bst show --deps none nested-link.bst` in the directory\n`tests/format/junctions/override-self-link` gives the following output:\n\n```\n20:17:48 --:--:--              main:core activity                  START   Loading elements\n20:17:48 00:00:00              main:core activity                  FAILURE Loading elements\n\nproject.conf [line 6 column 2]: Circular reference while searching for \u0027subproject.bst:self-junction.bst\u0027\n\n    Already searching for \u0027subproject.bst:self-junction.bst\u0027 at: nested-link.bst [line 4 column 10]\n```\n"
    },
    {
      "commit": "7134c7ce5db865fced601c20df9f5b09ca74c3d1",
      "tree": "3f4be61aca01203a81e40219d2616adb78ee39d2",
      "parents": [
        "202dc9d606262d991fdc1580102da48057a32f99"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 10:52:20 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 10:58:38 2026 +0200"
      },
      "message": "_loader: Don\u0027t trigger second pass loading for junction overrides\n\nShallow override loading is needed only to discover link elements for\ncorrect link resolution. Defer loading of elements that require the\nproject to be fully loaded, as second pass loading during shallow\noverride loading can trigger a circular reference error.\n\nFixes #2037.\n"
    },
    {
      "commit": "202dc9d606262d991fdc1580102da48057a32f99",
      "tree": "f5169a754cdd1dbc6ad43ce8c6045c677d8b542d",
      "parents": [
        "16e45332b3e8fad38411d23032b445799c48aff7"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 10:35:29 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sat Apr 25 10:58:38 2026 +0200"
      },
      "message": "_loader: Drop redundant `ensure_fully_loaded()` for CLI targets\n\nDifferent behavior for `provenance_node is None` is not ideal. And since\ncommit 07a1e45183 (\"Ensure that the parent project is fully loaded...\"),\nit\u0027s no longer needed.\n"
    },
    {
      "commit": "16e45332b3e8fad38411d23032b445799c48aff7",
      "tree": "b1f288b7965c7bdfa7569385b3a765eda31f31b6",
      "parents": [
        "ffd6c1a1641ffbc6cfae842b5dacf7d508ea9fd9",
        "d7eef4c6badcf6f67964029de66c34e4a0da07f0"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Sat Apr 18 21:20:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 21:20:35 2026 +0100"
      },
      "message": "Merge pull request #2112 from apache/jbilleter/mirrors\n\nsource.py: Fix mirror usage in subprojects"
    },
    {
      "commit": "d7eef4c6badcf6f67964029de66c34e4a0da07f0",
      "tree": "b1f288b7965c7bdfa7569385b3a765eda31f31b6",
      "parents": [
        "af5d69a3be4cbc51de233d632805b81254334a5a"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Apr 17 16:36:06 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Apr 17 17:25:58 2026 +0200"
      },
      "message": "tests/frontend/mirror.py: Test plugins that don\u0027t use SourceFetcher\n"
    },
    {
      "commit": "af5d69a3be4cbc51de233d632805b81254334a5a",
      "tree": "4a4a670a2361f0b2edccdbd61b9b7759b7267d11",
      "parents": [
        "ffd6c1a1641ffbc6cfae842b5dacf7d508ea9fd9"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Apr 17 14:29:07 2026 +0200"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Apr 17 16:19:33 2026 +0200"
      },
      "message": "source.py: Fix mirror usage in subprojects\n\nDon\u0027t skip source cloning if there are no mirrors configured in the\nelement\u0027s project. With alias mapping, the mirror configuration of the\nparent project matters.\n\nFor `fetch()`, this bug only affected source plugins that don\u0027t use\n`SourceFetcher` objects. For `track()`, all source plugins were\naffected.\n\nFixes #2110.\n"
    },
    {
      "commit": "ffd6c1a1641ffbc6cfae842b5dacf7d508ea9fd9",
      "tree": "e38d2aee87494f0fcc9ead8226d3db86a35de9a8",
      "parents": [
        "e4dcda0551f59e3a9e397aaabd620d25b71fc95a",
        "e83783a1c1a10ec33f3c9ac2ef5d371a3090b7f7"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Mar 20 07:47:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 07:47:06 2026 +0100"
      },
      "message": "Merge pull request #2108 from apache/jbilleter/bst-plugins-community\n\nci: Fix buildstream-plugins-community version for `plugins-master`"
    },
    {
      "commit": "e83783a1c1a10ec33f3c9ac2ef5d371a3090b7f7",
      "tree": "e38d2aee87494f0fcc9ead8226d3db86a35de9a8",
      "parents": [
        "e4dcda0551f59e3a9e397aaabd620d25b71fc95a"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Mar 13 08:18:04 2026 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Mar 13 08:18:59 2026 +0100"
      },
      "message": "ci: Fix buildstream-plugins-community version for `plugins-master`\n\nFixes #2096.\n\nReported-by: Dor Askayo \u003cdor.askayo@gmail.com\u003e\n"
    },
    {
      "commit": "e4dcda0551f59e3a9e397aaabd620d25b71fc95a",
      "tree": "2247f00714c599e60fdba25b06e22474bcfc7d13",
      "parents": [
        "ceff55def10389a936ab8ac5c0900b9e4133ed5d",
        "cff15ffddca1aad97b9806222f1ae7a88bf200c1"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 20 16:03:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 16:03:27 2026 +0100"
      },
      "message": "Merge pull request #2107 from apache/jbilleter/bst-init-2.7\n\n_frontend/cli.py: Update default min-version for `bst init`"
    },
    {
      "commit": "ceff55def10389a936ab8ac5c0900b9e4133ed5d",
      "tree": "aefb679dc25adf84d325a63f0a12bfb5b3bb6a41",
      "parents": [
        "71565ca2c0c76fb758ba36649a5ff613b4d66ec9",
        "d582f469579c4deb9ecbe2f2a6ba3324f9bd0afb"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 20 13:30:12 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 13:30:12 2026 +0100"
      },
      "message": "Merge pull request #2061 from shymega-ct/domrodriguez/add-linux-disclaimer-docs\n\ndocs/README: Add note to make OS requirement clear"
    },
    {
      "commit": "cff15ffddca1aad97b9806222f1ae7a88bf200c1",
      "tree": "1a0c1c7b9b562c06281d37c0e68bff83742ab067",
      "parents": [
        "71565ca2c0c76fb758ba36649a5ff613b4d66ec9"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 20 13:26:19 2026 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 20 13:26:19 2026 +0100"
      },
      "message": "_frontend/cli.py: Update default min-version for `bst init`\n\nThis is implicitly required by tests after creating the 2.7.0.dev0 tag.\n"
    },
    {
      "commit": "d582f469579c4deb9ecbe2f2a6ba3324f9bd0afb",
      "tree": "39a74c5964e88a076e42d4777163df29924ef636",
      "parents": [
        "1a7651a1261926d1b47133ee723f747b4a9505fb"
      ],
      "author": {
        "name": "Dom Rodriguez",
        "email": "dom.rodriguez@codethink.co.uk",
        "time": "Mon Sep 15 21:00:23 2025 +0100"
      },
      "committer": {
        "name": "Dom Rodriguez",
        "email": "dom.rodriguez@codethink.co.uk",
        "time": "Wed Feb 18 18:38:21 2026 +0000"
      },
      "message": "docs/README: Add note to reiterate supported platforms\n"
    },
    {
      "commit": "71565ca2c0c76fb758ba36649a5ff613b4d66ec9",
      "tree": "267a158da3055e1c8e790252044b480d27ae0d02",
      "parents": [
        "1102d0504de0f0b87d8fdc8bd4b4074124d228b4",
        "c59ff0ef2a057f97f1f149ef7d80365aacd490db"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 13 15:30:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 15:30:50 2026 +0100"
      },
      "message": "Merge pull request #2105 from apache/jbilleter/2.7.0\n\nPrepare for 2.7.0"
    },
    {
      "commit": "c59ff0ef2a057f97f1f149ef7d80365aacd490db",
      "tree": "267a158da3055e1c8e790252044b480d27ae0d02",
      "parents": [
        "5957103d7afe2de6b60c15de2bf53e19acee368c"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 06 14:24:11 2026 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 13 14:54:08 2026 +0100"
      },
      "message": "NEWS: Prepare for 2.7.0\n"
    },
    {
      "commit": "5957103d7afe2de6b60c15de2bf53e19acee368c",
      "tree": "ea02ed31c7bd96f7c486e78398e8bef6011727ae",
      "parents": [
        "1102d0504de0f0b87d8fdc8bd4b4074124d228b4"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 06 14:05:58 2026 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 06 14:05:58 2026 +0100"
      },
      "message": "ci: Update images\n\nUpdate BuildBox to 1.3.52.\n"
    },
    {
      "commit": "1102d0504de0f0b87d8fdc8bd4b4074124d228b4",
      "tree": "6709e7a7ed3ca06d10d019d4cab6790b0fe36444",
      "parents": [
        "1a7651a1261926d1b47133ee723f747b4a9505fb",
        "595e60e534cd805314fa25aad208e5215a0a199d"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Feb 06 09:59:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 09:59:20 2026 +0100"
      },
      "message": "Merge pull request #2102 from apache/abderrahim/build-deps-none\n\n_stream: Don\u0027t require runtime deps when building with --deps none"
    },
    {
      "commit": "595e60e534cd805314fa25aad208e5215a0a199d",
      "tree": "edf3844642fa2a8cde08a0dbf6a476455c9d9c6b",
      "parents": [
        "7f01252e05971fb4809e49d8960998d6ea6511c0"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Tue Feb 03 15:03:36 2026 +0000"
      },
      "committer": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Thu Feb 05 15:11:20 2026 +0000"
      },
      "message": "Update test for dynamic build plan\n"
    },
    {
      "commit": "7f01252e05971fb4809e49d8960998d6ea6511c0",
      "tree": "9331be892fd7d5d6608afc51a1454ae3c166cc3a",
      "parents": [
        "4a497d0294d675173eb26b3935fed063d4f86d27"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Thu Jan 29 20:35:25 2026 +0100"
      },
      "committer": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Tue Feb 03 15:03:53 2026 +0000"
      },
      "message": "Add config option for `dependencies: run`\n\nIn addition to `none` and `all`, this commit adds `run` and makes it the\ndefault instead of `none`. The previous commit changed the meaning of\n`--deps none` to be different from `--deps run`, so we change the default to be\n`run`.\n"
    },
    {
      "commit": "1a7651a1261926d1b47133ee723f747b4a9505fb",
      "tree": "fdbb9d42b0ebf6df26fd3e1f63ffa86d07893473",
      "parents": [
        "56a4b794d8bc63bb7057d48f5a0ea561439e3e3f",
        "834c4432dcfe2e894864ca27ee69ccdd2cd6f700"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Tue Feb 03 10:01:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 10:01:23 2026 +0100"
      },
      "message": "Merge pull request #2099 from joshua-zivkovic/JZ/source-provenance\n\nGeneric Source Provenance"
    },
    {
      "commit": "834c4432dcfe2e894864ca27ee69ccdd2cd6f700",
      "tree": "fdbb9d42b0ebf6df26fd3e1f63ffa86d07893473",
      "parents": [
        "760806dd563379e68657d613d84d8da3b7dc972a"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Fri Jan 16 15:55:46 2026 +0000"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Mon Feb 02 09:22:24 2026 +0000"
      },
      "message": "Add source provenance attribute tests\n"
    },
    {
      "commit": "760806dd563379e68657d613d84d8da3b7dc972a",
      "tree": "a1052d7f00681933e979d49eb25a007a79772cea",
      "parents": [
        "56a4b794d8bc63bb7057d48f5a0ea561439e3e3f"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Fri Jan 16 15:55:09 2026 +0000"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Mon Feb 02 09:22:24 2026 +0000"
      },
      "message": "Make source provenance generic\n\nRemove harcoded SPDX attributes and make them be generic instead.\nProject allowed attributes are configured via the project config,\nthese supported values a determined by buildstream-sbom\u0027s support\n\nCo-authored-by: Jürg Billeter \u003cj@bitron.ch\u003e\nCo-authored-by: Joshua Zivkovic \u003cjoshuazivkovic@codethink.co.uk\u003e\n"
    },
    {
      "commit": "4a497d0294d675173eb26b3935fed063d4f86d27",
      "tree": "cf39be01205658ea23b1672a309468db7eae624e",
      "parents": [
        "56a4b794d8bc63bb7057d48f5a0ea561439e3e3f"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Thu Jan 29 18:11:50 2026 +0100"
      },
      "committer": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Thu Jan 29 18:11:50 2026 +0100"
      },
      "message": "_stream: Don\u0027t require runtime deps when building with --deps none\n\nBefore this change, running a build with `--deps none` would also build / pull\nruntime dependencies. This commit changes the elements on the command line to\nnot require their runtime dependencies if we\u0027re using `--deps none`\n"
    },
    {
      "commit": "56a4b794d8bc63bb7057d48f5a0ea561439e3e3f",
      "tree": "9a0ef61dd25428c27d9cfa1096d3b29fd5a430cd",
      "parents": [
        "86a950aba52ef6aa2cb868bf13fb24e20de37679",
        "84e490e615685a355437d33311407769c6eca28f"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Tue Jan 27 14:40:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 14:40:16 2026 +0100"
      },
      "message": "Merge pull request #2098 from joshua-zivkovic/JZ/multi-source-provenance\n\nSupport multi source source provenance info"
    },
    {
      "commit": "84e490e615685a355437d33311407769c6eca28f",
      "tree": "9a0ef61dd25428c27d9cfa1096d3b29fd5a430cd",
      "parents": [
        "9273039398f3f26dd14db3caed78cf8795253570"
      ],
      "author": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Fri Jan 16 15:55:46 2026 +0000"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Tue Jan 27 10:52:30 2026 +0000"
      },
      "message": "Add source provenance attribute tests\n"
    },
    {
      "commit": "9273039398f3f26dd14db3caed78cf8795253570",
      "tree": "b299ffb9e4d8a17e3665aa9295b05a8f11ec5291",
      "parents": [
        "e479787b9d5fbe4b06264c2bd325d42ce7a0540a"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Jan 09 16:37:15 2026 +0100"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Tue Jan 27 10:52:30 2026 +0000"
      },
      "message": "tests/frontend/show.py: Add source info test for multi-source plugin\n"
    },
    {
      "commit": "e479787b9d5fbe4b06264c2bd325d42ce7a0540a",
      "tree": "e4c373aeb0db81be390e654a0fd1739569abcfdb",
      "parents": [
        "86a950aba52ef6aa2cb868bf13fb24e20de37679"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Dec 19 11:13:37 2025 +0100"
      },
      "committer": {
        "name": "Joshua Zivkovic",
        "email": "joshua.zivkovic@codethink.co.uk",
        "time": "Mon Jan 26 08:06:25 2026 +0000"
      },
      "message": "source.py: Allow source provenance info to be overridden\n\nThis allows multi-source source plugins to provide this information per\nsource rather than as a singular top level.\n\nThis is done by adding a `provenance_node` parameter to\n`create_source_info()` that when specified overrides the use of the\nsource\u0027s top level source provenance info.\n\nCo-authored-by: Joshua Zivkovic \u003cjoshua.zivkovic@codethink.co.uk\u003e\n"
    },
    {
      "commit": "86a950aba52ef6aa2cb868bf13fb24e20de37679",
      "tree": "f103b668f1a9706716640a4e797f3a97f261d086",
      "parents": [
        "12b11f89c5983c87f9eed7cdfdfb3a2b49c5cdb4",
        "172671ebef61af7fde7bd3cbdcc91b3d7ca1bd8d"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Sun Dec 14 12:41:53 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 14 12:41:53 2025 +0100"
      },
      "message": "Merge pull request #2084 from kotborealis/master\n\nfix: use find_spec for pip plugins"
    },
    {
      "commit": "172671ebef61af7fde7bd3cbdcc91b3d7ca1bd8d",
      "tree": "f103b668f1a9706716640a4e797f3a97f261d086",
      "parents": [
        "12b11f89c5983c87f9eed7cdfdfb3a2b49c5cdb4"
      ],
      "author": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Sat Nov 01 15:01:58 2025 +0300"
      },
      "committer": {
        "name": "Abderrahim Kitouni",
        "email": "abderrahim.kitouni@codethink.co.uk",
        "time": "Sun Dec 14 12:01:35 2025 +0100"
      },
      "message": "fix: use find_spec for pip plugins\n\nFor pip plugins installed in editable mode, via `pip install -e ...`,\nbuildstream failed to resolve the actual location of source files of a\nplugin.\nThis is caused because `importlib.metadata` does not honor editable\npackages with `pth` files.\n\nThis patch updates `pluginoriginpip.py` to use `find_spec` to find\nfiles. This works for editable packages.\n"
    },
    {
      "commit": "12b11f89c5983c87f9eed7cdfdfb3a2b49c5cdb4",
      "tree": "d4d9242503354e5f3fe3b0368233c33a880d244b",
      "parents": [
        "a5072d4adadfbd0fdebb3f7eab6a0de8a52ac224",
        "e90c2463b725a98fb26fc18067561628f659b807"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Nov 26 12:55:49 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 12:55:49 2025 +0100"
      },
      "message": "Merge pull request #2097 from apache/jbilleter/links\n\nMerge duplicate dependencies via link elements"
    },
    {
      "commit": "a5072d4adadfbd0fdebb3f7eab6a0de8a52ac224",
      "tree": "f2cc03ce804b7880836814055ce0e09e275f0876",
      "parents": [
        "15733f2f820d5d7918526f774f447e04440e493e",
        "d81b23009d228052480b59fcad1a084ba3922a2b"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Sat Nov 22 16:43:51 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 22 16:43:51 2025 +0100"
      },
      "message": "Merge pull request #2087 from kotborealis/fix-typo\n\nfix: typo truple -\u003e tuple"
    },
    {
      "commit": "e90c2463b725a98fb26fc18067561628f659b807",
      "tree": "b02e11390d9a263e6fd66a53b15ac3b306ce4461",
      "parents": [
        "9ed6aa573839c17cfa61c31e4e7efe4ef9cffe29"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 10:28:02 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 15:26:20 2025 +0100"
      },
      "message": "tests/format/link.py: Add test for multiple links with the same target\n\nThis is a regression test for #2002.\n"
    },
    {
      "commit": "9ed6aa573839c17cfa61c31e4e7efe4ef9cffe29",
      "tree": "b28417023faf19dfec3a1455edbb0fa787a8d170",
      "parents": [
        "4392664c500364a5850fe16ce6dd8facbf6e6854"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 15:09:52 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 15:26:20 2025 +0100"
      },
      "message": "_loader: Merge duplicate dependencies via link elements\n\nDuplicate dependencies are normally merged already in\n`extract_depends_from_node()`. However, that only works for dependencies\nthat are declared with the same filename. If a link element is in a\ndependency list, merging may still be required but can be done only\nafter the link element has been loaded.\n\nThe element state updates don\u0027t work correctly if there are duplicate\ndependencies that aren\u0027t merged.\n\nFixes #2002.\n"
    },
    {
      "commit": "4392664c500364a5850fe16ce6dd8facbf6e6854",
      "tree": "95fd8578edc7f7d3d48a76468fd81d91c721ff31",
      "parents": [
        "15733f2f820d5d7918526f774f447e04440e493e"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 14:55:30 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 15:18:55 2025 +0100"
      },
      "message": "_loader: Drop unused dependency list\n"
    },
    {
      "commit": "15733f2f820d5d7918526f774f447e04440e493e",
      "tree": "1be18c9f5706abbd64e3b143973664ada0b879a0",
      "parents": [
        "828035e2f780af4d3f5428564612153b6d0d2ee0",
        "46c29eb3fab2042608e239b0e310b01f15473f31"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 11:41:29 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 11:41:29 2025 +0100"
      },
      "message": "Merge pull request #2093 from apache/jbilleter/buildtree-shell\n\nStore marked directories in Artifact proto"
    },
    {
      "commit": "828035e2f780af4d3f5428564612153b6d0d2ee0",
      "tree": "f2fdd18d40ae11f263fb4244e3456227132b8791",
      "parents": [
        "30145c65918bbfa3c14fabe42e5022bf740067ff",
        "d3e88440226382b2a16670e3ada392d69216469b"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 21 10:31:25 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 10:31:25 2025 +0100"
      },
      "message": "Merge pull request #2091 from apache/jbilleter/remoteasset\n\nArtifact cache fixes"
    },
    {
      "commit": "30145c65918bbfa3c14fabe42e5022bf740067ff",
      "tree": "91fd62f6b6d6ea9bd5e01f5ee32a8a8fa6b559ae",
      "parents": [
        "40673537a7dc430ee2c6f2318fb4eadd3e5e29ee",
        "ccb6f5580b4f9211a1168c5e7f7fa33fde1067be"
      ],
      "author": {
        "name": "Tristan Van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Tue Nov 18 15:41:13 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 18 15:41:13 2025 +0900"
      },
      "message": "Merge pull request #2088 from apache/tristan/artifact-show-remote\n\nSupport artifact remote options in `bst artifact show`"
    },
    {
      "commit": "46c29eb3fab2042608e239b0e310b01f15473f31",
      "tree": "56cb94b013ac58880931af3f6b233b5bc9ac57ef",
      "parents": [
        "3ed8f422e97d7bc381cce306d2f4b74ece99d927"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:10:10 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:16:16 2025 +0100"
      },
      "message": "tests/integration/shellbuildtrees.py: Test that filesystem is writable\n"
    },
    {
      "commit": "3ed8f422e97d7bc381cce306d2f4b74ece99d927",
      "tree": "1ec1ec09dde63e65d5d489421c1be231cfaa5ac8",
      "parents": [
        "b52382a333c9099594a76cae6e99163b2b38e2b6"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 13:39:09 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:11:42 2025 +0100"
      },
      "message": "_artifact.py: Store marked directories in Artifact proto\n\nFixes #2092.\n"
    },
    {
      "commit": "b52382a333c9099594a76cae6e99163b2b38e2b6",
      "tree": "65dd8a77fb720996fb68a9a0c804e07e7e0ad4bf",
      "parents": [
        "1a669b5fc96d03e2d58dca0a6968d56779b67d07"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 13:34:55 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:11:42 2025 +0100"
      },
      "message": "artifact.proto: Add marked directories to the build sandbox state\n"
    },
    {
      "commit": "1a669b5fc96d03e2d58dca0a6968d56779b67d07",
      "tree": "fcda52c41b78ad83b79b1bccbc4194545fe0e209",
      "parents": [
        "40673537a7dc430ee2c6f2318fb4eadd3e5e29ee"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:07:29 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 14:11:42 2025 +0100"
      },
      "message": "tests/integration/shellbuildtrees.py: Test working directory in artifact\n\nAdjust `test_shell_pull_artifact_cached_buildtree` now that the working\ndirectory is stored in the artifact.\n"
    },
    {
      "commit": "d3e88440226382b2a16670e3ada392d69216469b",
      "tree": "5ad1d1f5fb167ae59ebb9d6f3e8e747de9b2bd55",
      "parents": [
        "2013156c4088462f60d35c1ad05b82b7f2607434"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:54:34 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:57:19 2025 +0100"
      },
      "message": "_artifactcache.py: Push and fetch sources\n\nThe source digest is already stored in the artifact proto and added to\nthe list of referenced directories if the buildtree is cached, however,\nthe actual push and fetch was missing.\n"
    },
    {
      "commit": "2013156c4088462f60d35c1ad05b82b7f2607434",
      "tree": "b944a4e2e03778f503a68428ded9dabb55e4f291",
      "parents": [
        "0cea83a8b803ea062e16b2ae0ba95d581f534757"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:48:09 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:57:19 2025 +0100"
      },
      "message": "_artifactcache.py: Add `public_data` to list of referenced blobs\n"
    },
    {
      "commit": "0cea83a8b803ea062e16b2ae0ba95d581f534757",
      "tree": "7a23fa8a6addcfde0f132b1b57340ce3542c22ef",
      "parents": [
        "40673537a7dc430ee2c6f2318fb4eadd3e5e29ee"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:41:19 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 14 09:57:19 2025 +0100"
      },
      "message": "_artifactcache.py: Fix presence checks of protobuf digest fields\n\nPython truth values can\u0027t be used for presence checks of embedded\nprotobuf message fields. Use `HasField()` instead. This prevents passing\ninvalid digests to the Remote Asset server.\n\nFixes #2090.\n"
    },
    {
      "commit": "40673537a7dc430ee2c6f2318fb4eadd3e5e29ee",
      "tree": "13f53d6603459a09e51893874288fdde3e3fad23",
      "parents": [
        "d00fe5c2afe1f7967d5075f70bc15a6fa64ded51",
        "e5fc2f5c166600c5f30a8e3c49e3290d6a7c2d6e"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 10 09:41:36 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 10 09:41:36 2025 +0100"
      },
      "message": "Merge pull request #2086 from apache/jbilleter/buildgrid\n\nci: Update BuildGrid setup to use PostgreSQL"
    },
    {
      "commit": "ccb6f5580b4f9211a1168c5e7f7fa33fde1067be",
      "tree": "e0cf78a8a651143fd9f463fa2188db5afcd33cc5",
      "parents": [
        "1c31c6ece8f90453b51c25e562f54e8d2a1ff913"
      ],
      "author": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:39:37 2025 +0900"
      },
      "committer": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:44:50 2025 +0900"
      },
      "message": "tests/frontend/artifact_show.py: Add coverage for newly added options\n\nAdded tests to cover --artifact-remote and --ignore-project-artifact-remotes.\n\nThis also improves overall coverage of test_artifact_show_available_remotely\nto cover all three methods of setting the remotes (project, user config, and\nnow CLI options), plus test this by providing the element name and the\nartifact name separately (except for when the remote is specified by the\nproject, because project.conf is intentionally ignored when loading artifact\nnames).\n"
    },
    {
      "commit": "1c31c6ece8f90453b51c25e562f54e8d2a1ff913",
      "tree": "374d1d98151f6420e86ffde8e5ee5222c418805e",
      "parents": [
        "870cd66867de7783b18e45b6bc0acfb87ba8dc5a"
      ],
      "author": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:16:41 2025 +0900"
      },
      "committer": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:44:50 2025 +0900"
      },
      "message": "Fixup implementation\n"
    },
    {
      "commit": "870cd66867de7783b18e45b6bc0acfb87ba8dc5a",
      "tree": "82ef6cdea9a03624132c5562de302c773b0487fb",
      "parents": [
        "878fa52512871c20ca08e13716ca80e6082953c6"
      ],
      "author": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 13:27:08 2025 +0900"
      },
      "committer": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:44:50 2025 +0900"
      },
      "message": "tests/frontend/artifact_show.py: Split out test files from common data dir\n\nThis just follows the new, improved policy to not share data files across\ntest cases, leading to the huge crazy shared mess that is found in\ntests/frontend/project, where any change here for a given test risks\naffecting many adjacent tests.\n"
    },
    {
      "commit": "878fa52512871c20ca08e13716ca80e6082953c6",
      "tree": "b6725af693221b14ff0a72aaf7b7c231641e294f",
      "parents": [
        "d00fe5c2afe1f7967d5075f70bc15a6fa64ded51"
      ],
      "author": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 04:20:01 2025 +0900"
      },
      "committer": {
        "name": "Tristan van Berkom",
        "email": "tristan.vanberkom@codethink.co.uk",
        "time": "Sun Nov 09 14:44:50 2025 +0900"
      },
      "message": "Support artifact remote arguments in bst artifact show command.\n\nThis is useful for ensuring that the shallow artifacts have been downloaded\nfrom the remotes, without requiring heavy duty `bst artifact pull`, and\nis particularly useful with the advent of `%{artifact-cas-digest}` being\navailable in `bst show` output.\n\nThis updates the CLI to support the new arguments which we missed\nadding previously, and adds the glue code in Stream() object to\nload the pipeline with the artifact remote related arguments.\n"
    },
    {
      "commit": "d81b23009d228052480b59fcad1a084ba3922a2b",
      "tree": "cea3595e8c58579349f20fb7de5a65e0bf636cca",
      "parents": [
        "d00fe5c2afe1f7967d5075f70bc15a6fa64ded51"
      ],
      "author": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Fri Nov 07 14:45:30 2025 +0300"
      },
      "committer": {
        "name": "kotborealis",
        "email": "kotborealis@awooo.ru",
        "time": "Fri Nov 07 14:47:12 2025 +0300"
      },
      "message": "fix: typo truple -\u003e tuple\n"
    },
    {
      "commit": "e5fc2f5c166600c5f30a8e3c49e3290d6a7c2d6e",
      "tree": "13f53d6603459a09e51893874288fdde3e3fad23",
      "parents": [
        "c2c8b2361243866cf4dc76cc80c5f9607f620706"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Nov 05 11:38:35 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Fri Nov 07 07:42:14 2025 +0100"
      },
      "message": ".github/compose/ci.buildgrid.yml: Switch to PostgreSQL\n\nSQLite support is deprecated in BuildGrid and the default configuration\nnow requires PostgreSQL instead.\n"
    },
    {
      "commit": "c2c8b2361243866cf4dc76cc80c5f9607f620706",
      "tree": "db6f28773ce0ce9ca4878825b2cc7439e46c1d54",
      "parents": [
        "d00fe5c2afe1f7967d5075f70bc15a6fa64ded51"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Nov 05 11:11:52 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Nov 05 11:11:52 2025 +0100"
      },
      "message": ".github/compose/ci.buildgrid.yml: Remove unused storage service\n\nBuildGrid itself doesn\u0027t offer a Remote Asset service and CI is\ncurrently only testing remote execution with BuildGrid.\n"
    },
    {
      "commit": "d00fe5c2afe1f7967d5075f70bc15a6fa64ded51",
      "tree": "febd4583ae47ab1be75ecb87cc0156974ec02dcc",
      "parents": [
        "85be4410c660990528a72b40a4fb49a15620014e",
        "89f7314cac96aaf477533df58a9dca5ab830e5ee"
      ],
      "author": {
        "name": "Abderrahim Kitouni",
        "email": "akitouni@apache.org",
        "time": "Tue Nov 04 12:15:40 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 04 12:15:40 2025 +0100"
      },
      "message": "Merge pull request #2078 from ignapk/fix-buildstream-plugins-link\n\ndoc/source/core_plugins.rst: Fix link to buildstream-plugins"
    },
    {
      "commit": "85be4410c660990528a72b40a4fb49a15620014e",
      "tree": "7164e1db806686ad63891c485276657054bdfe7e",
      "parents": [
        "80d16dee42cb1e206010fbb52149983280f1a47f",
        "3256129eb3555dbb0ca769f2f6b66f12681fa5a4"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 16:58:56 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 03 16:58:56 2025 +0100"
      },
      "message": "Merge pull request #2085 from apache/jbilleter/python-3.9\n\nDrop support for Python 3.9"
    },
    {
      "commit": "3256129eb3555dbb0ca769f2f6b66f12681fa5a4",
      "tree": "7164e1db806686ad63891c485276657054bdfe7e",
      "parents": [
        "d4be9b80dd77d726d70ebd172338271be6ea423d"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Nov 02 19:14:35 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:54:39 2025 +0100"
      },
      "message": "Update requirements\n"
    },
    {
      "commit": "d4be9b80dd77d726d70ebd172338271be6ea423d",
      "tree": "389c8fa5e97a83dfc7c85c8c1df5bb83ae38edc1",
      "parents": [
        "af36872ebb0634eff2b24d6d913a0b5622d66223"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Nov 02 18:58:11 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:54:39 2025 +0100"
      },
      "message": "Drop support for Python 3.9\n\nPython 3.9 is no longer maintained upstream and at least one Python\npackage (Click) has dropped support for it.\n"
    },
    {
      "commit": "af36872ebb0634eff2b24d6d913a0b5622d66223",
      "tree": "b7a5b0633d6dab38ddf00fe5062f57513a4c6326",
      "parents": [
        "306938b03cb60e76f39152537b9209e25076c92d"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Nov 02 18:59:23 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:54:39 2025 +0100"
      },
      "message": "ci: Don\u0027t run tests on Debian 11\n\nIt uses Python 3.9, which is no longer maintained upstream.\n"
    },
    {
      "commit": "306938b03cb60e76f39152537b9209e25076c92d",
      "tree": "19a3fe0f92f84b098aef5c10011c2a3bc043b09b",
      "parents": [
        "13ccbe5abbd4fda63f26eb65687b5172ead08ca7"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:22:44 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:54:39 2025 +0100"
      },
      "message": "pyproject.toml: Simplify `cibuildwheel` config\n"
    },
    {
      "commit": "13ccbe5abbd4fda63f26eb65687b5172ead08ca7",
      "tree": "c50d2d00dbede6912ff9dd7d71aa6984a2daa31e",
      "parents": [
        "86c6c8b76781d881e907a5bb5a528eba92939ddd"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:50:43 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Mon Nov 03 12:54:39 2025 +0100"
      },
      "message": "setup.cfg: Add `python_requires`\n\nThis makes it possible to simplify the `cibuildwheel` config. Longer\nterm, we should migrate project metadata to `pyproject.toml`.\n"
    },
    {
      "commit": "86c6c8b76781d881e907a5bb5a528eba92939ddd",
      "tree": "d6ef02a396ca65dc77bb6959b9aa111e1fb6239f",
      "parents": [
        "80d16dee42cb1e206010fbb52149983280f1a47f"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Nov 02 19:43:34 2025 +0100"
      },
      "committer": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Sun Nov 02 20:21:20 2025 +0100"
      },
      "message": "_frontend: Don\u0027t use deprecated `click.parser.split_arg_string()`\n\nThis fixes a pylint error with Click 8.2+.\n"
    },
    {
      "commit": "80d16dee42cb1e206010fbb52149983280f1a47f",
      "tree": "9851f3051ce05cf4d020e463b18942a8b1c96850",
      "parents": [
        "06eb62a45a7e5883589360bfa582eb337b888dab",
        "2fd746bf1af5c17585254e12599e7b8fe118fafd"
      ],
      "author": {
        "name": "Jürg Billeter",
        "email": "j@bitron.ch",
        "time": "Wed Oct 22 17:14:27 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 17:14:27 2025 +0200"
      },
      "message": "Merge pull request #2074 from apache/jbilleter/no-project\n\n_frontend: Fix error for commands without targets outside project dir"
    }
  ],
  "next": "06eb62a45a7e5883589360bfa582eb337b888dab"
}
