)]}'
{
  "log": [
    {
      "commit": "2103e5677c8d7d8eedffc52109ebb9429b7132b6",
      "tree": "6205fc355b4ee69884459604a85e8411a7366936",
      "parents": [
        "823bd8ae78cf772ec3bd51f2fa5f011d03fee316",
        "7bfc083460c3a0f72aa2255fe6ad91aec39195ee"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Fri May 29 08:29:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 08:29:05 2026 +0100"
      },
      "message": "Merge pull request #1430 from zan-mateusz/fixes/coercion-error-logbook-class-filtering-dynamic-update\n\nFixes/coercion error logbook class filtering dynamic update"
    },
    {
      "commit": "7bfc083460c3a0f72aa2255fe6ad91aec39195ee",
      "tree": "6205fc355b4ee69884459604a85e8411a7366936",
      "parents": [
        "5bd75ce8705dc1d2e6c650960adcfccf90458061"
      ],
      "author": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Tue Apr 21 09:44:59 2026 +0100"
      },
      "committer": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Thu May 28 17:21:19 2026 +0100"
      },
      "message": "minor fix for correctly waiting for sensor tasks to complete in AutoFlagsCallbackTest.java test\n"
    },
    {
      "commit": "5bd75ce8705dc1d2e6c650960adcfccf90458061",
      "tree": "4b99095078d7c1b7b3da4e70966fc73d62e4a10b",
      "parents": [
        "1cfb1382647e85a9638bb3be5885bba129c97565"
      ],
      "author": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Tue Apr 21 09:44:22 2026 +0100"
      },
      "committer": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Tue Apr 21 09:44:22 2026 +0100"
      },
      "message": "add capability in logbook to filter based on class/logger name\n"
    },
    {
      "commit": "1cfb1382647e85a9638bb3be5885bba129c97565",
      "tree": "6fbe0a9f703ee56bae902235b316e15c97769295",
      "parents": [
        "823bd8ae78cf772ec3bd51f2fa5f011d03fee316"
      ],
      "author": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Tue Apr 21 09:42:47 2026 +0100"
      },
      "committer": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Pro.local",
        "time": "Tue Apr 21 09:42:47 2026 +0100"
      },
      "message": "fix effector behaviour where yaml list is passed as input\n"
    },
    {
      "commit": "823bd8ae78cf772ec3bd51f2fa5f011d03fee316",
      "tree": "1ccd3a7b64878dea024dba08c6519359817d2208",
      "parents": [
        "ccf8d1fc1ec133e1701d567b962f52155ae9c153",
        "fdc4b37376706c4a0a641db68e77ead49f327700"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Wed Apr 01 11:36:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 11:36:23 2026 +0100"
      },
      "message": "Merge pull request #1428 from zan-mateusz/fix/suppress-secrets-on-custom-types\n\nsuppressing of secrets in complex JSON serializable types"
    },
    {
      "commit": "fdc4b37376706c4a0a641db68e77ead49f327700",
      "tree": "1ccd3a7b64878dea024dba08c6519359817d2208",
      "parents": [
        "c6160c06c4c5868457d75b0924885f1893ebc518"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 01 10:52:48 2026 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 01 10:56:18 2026 +0100"
      },
      "message": "Skip redundant multi-line suppression and add comments\n"
    },
    {
      "commit": "c6160c06c4c5868457d75b0924885f1893ebc518",
      "tree": "0a846a8a50940444eb8ed29c9ad31ea8c6e89779",
      "parents": [
        "ccf8d1fc1ec133e1701d567b962f52155ae9c153"
      ],
      "author": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Air.local",
        "time": "Tue Mar 24 13:57:12 2026 +0000"
      },
      "committer": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Air.local",
        "time": "Tue Mar 24 13:57:12 2026 +0000"
      },
      "message": "suppressing of secrets in complex JSON serializable types\n"
    },
    {
      "commit": "ccf8d1fc1ec133e1701d567b962f52155ae9c153",
      "tree": "e8dea03a0ee88cc8f70ad2f3b4bc9769a7af7b45",
      "parents": [
        "337a5fda6c69de6629042eb0e29b2880d241b74c",
        "b62bf1e3090820d76e29670ade408e837021d82c"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Wed Mar 04 22:53:38 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 04 22:53:38 2026 +0000"
      },
      "message": "Merge pull request #1427 from ahgittin/master\n\nFix unreliable test"
    },
    {
      "commit": "b62bf1e3090820d76e29670ade408e837021d82c",
      "tree": "e8dea03a0ee88cc8f70ad2f3b4bc9769a7af7b45",
      "parents": [
        "337a5fda6c69de6629042eb0e29b2880d241b74c"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Mar 04 22:51:37 2026 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Mar 04 22:52:36 2026 +0000"
      },
      "message": "Fix unreliable test\n\nCould have still had sensors from app creation; starting it ensures we don\u0027t.\nBut make it a better test doing more checks and counts.\n"
    },
    {
      "commit": "337a5fda6c69de6629042eb0e29b2880d241b74c",
      "tree": "beea8d4ab0e84d1fd3879880f23eef3a77391a33",
      "parents": [
        "f3459abdfdc32ef235714459aa915403dee691bb",
        "643a82c2c0e8526a46ed1f6e8b82930a4e7bc36a"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Wed Mar 04 11:24:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 04 11:24:39 2026 +0000"
      },
      "message": "Merge pull request #1426 from zan-mateusz/feature/add-format-query-param-support\n\nallow optional query parameter to specify format to createPoly"
    },
    {
      "commit": "643a82c2c0e8526a46ed1f6e8b82930a4e7bc36a",
      "tree": "beea8d4ab0e84d1fd3879880f23eef3a77391a33",
      "parents": [
        "f3459abdfdc32ef235714459aa915403dee691bb"
      ],
      "author": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Air.local",
        "time": "Tue Feb 24 14:00:18 2026 +0000"
      },
      "committer": {
        "name": "Mateusz Zan",
        "email": "mati@MacBook-Air.local",
        "time": "Tue Feb 24 14:00:18 2026 +0000"
      },
      "message": "allow optional query parameter to specify format to createPoly\n"
    },
    {
      "commit": "f3459abdfdc32ef235714459aa915403dee691bb",
      "tree": "b2c892ac8fdefa04b91d3c07a90dfc51b18400c8",
      "parents": [
        "fe283dbe79ce641388d9f5271c944cb1390432a7",
        "b04fc036a68c3966001b1cc49c4d5054817d5d34"
      ],
      "author": {
        "name": "Iuliana Cosmina",
        "email": "iuliana@cloudsoft.io",
        "time": "Thu Jan 22 14:55:30 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 14:55:30 2026 +0000"
      },
      "message": "Merge pull request #1425 from ahgittin/fix-scope-root\n\nFix ScopeRoot replacement with known root when entities are unpacked and unwrapped"
    },
    {
      "commit": "b04fc036a68c3966001b1cc49c4d5054817d5d34",
      "tree": "b2c892ac8fdefa04b91d3c07a90dfc51b18400c8",
      "parents": [
        "fe283dbe79ce641388d9f5271c944cb1390432a7"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Jan 21 14:54:32 2026 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Jan 21 14:54:32 2026 +0000"
      },
      "message": "Fix ScopeRoot replacement with known root when entities are unpacked and unwrapped\n"
    },
    {
      "commit": "fe283dbe79ce641388d9f5271c944cb1390432a7",
      "tree": "9b86727dbf625a0c12a70fbf406fb570a2ac0864",
      "parents": [
        "d6ee94d7c053367aa64ae12a439aff2b41ead085"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon Oct 06 14:33:49 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon Oct 06 17:14:04 2025 +0100"
      },
      "message": "Add more dependent configuration wait modes\n\nSo on_fire does not break concurrently started items\n"
    },
    {
      "commit": "d6ee94d7c053367aa64ae12a439aff2b41ead085",
      "tree": "718041265c58d1b0c7662a756c6a654c21072485",
      "parents": [
        "335ad0f1b3dc45e9910c1a0130011cfa7addb3d4",
        "4d7f2fe34fe5e6cef6e8b9b4b7ebcff7292c9415"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Fri Sep 19 12:21:47 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 12:21:47 2025 +0100"
      },
      "message": "Merge pull request #1423 from ahgittin/duration\n\nFix Duration maths"
    },
    {
      "commit": "4d7f2fe34fe5e6cef6e8b9b4b7ebcff7292c9415",
      "tree": "718041265c58d1b0c7662a756c6a654c21072485",
      "parents": [
        "0f232129ca6ee73ab815ffe8676ef23cb8375a4b"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu Sep 18 21:55:20 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Sep 19 12:15:36 2025 +0100"
      },
      "message": "If caller specifies AttributeWhenReady options, then use them\n"
    },
    {
      "commit": "0f232129ca6ee73ab815ffe8676ef23cb8375a4b",
      "tree": "fae0b1d71437660d0a7055d14a5d88ad7e8ad532",
      "parents": [
        "9495e643dba8f1d8e79de84719a4b7e6232b8709"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu Sep 18 21:54:53 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Sep 19 12:15:36 2025 +0100"
      },
      "message": "Fix Duration when adding along with FOREVER\n"
    },
    {
      "commit": "9495e643dba8f1d8e79de84719a4b7e6232b8709",
      "tree": "4d4ac160ac0c91bd2600aa3f2a457c67efeb6273",
      "parents": [
        "335ad0f1b3dc45e9910c1a0130011cfa7addb3d4"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu Sep 18 21:55:55 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Sep 19 12:15:36 2025 +0100"
      },
      "message": "Mark elect primary tests which have tiny edge conditions as flaky\n"
    },
    {
      "commit": "335ad0f1b3dc45e9910c1a0130011cfa7addb3d4",
      "tree": "02068b01f894be45e91c6937a51c8a5b37c68859",
      "parents": [
        "ff465778e05d0fbef2110f727d4319b2330155a9",
        "aade9cc7539888912f4eced6c40d495e767cacd9"
      ],
      "author": {
        "name": "Juan Cabrerizo",
        "email": "juan@cabrerizo.es",
        "time": "Thu Sep 18 11:18:17 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 18 11:18:17 2025 +0100"
      },
      "message": "Merge pull request #1422 from iuliana/fixed-rnd-pass-provider\n\nAdded fix for BrooklynUserWithRandomPasswordSecurityProvider and unit…"
    },
    {
      "commit": "aade9cc7539888912f4eced6c40d495e767cacd9",
      "tree": "02068b01f894be45e91c6937a51c8a5b37c68859",
      "parents": [
        "ff465778e05d0fbef2110f727d4319b2330155a9"
      ],
      "author": {
        "name": "iuliana",
        "email": "iuliana@cloudsoft.io",
        "time": "Thu Sep 18 11:00:06 2025 +0100"
      },
      "committer": {
        "name": "iuliana",
        "email": "iuliana@cloudsoft.io",
        "time": "Thu Sep 18 11:00:06 2025 +0100"
      },
      "message": "Added fix for BrooklynUserWithRandomPasswordSecurityProvider and unit test\n"
    },
    {
      "commit": "ff465778e05d0fbef2110f727d4319b2330155a9",
      "tree": "791bbfce86e699de74daed79ba8bbb30f98715a2",
      "parents": [
        "414234ff6b300c804ce80689b5d02d8adc4e2a35",
        "cae2b17f6494ea1ba040df61a51e0fa2ad2e51f4"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Wed Sep 17 17:34:51 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 17:34:51 2025 +0100"
      },
      "message": "Merge pull request #1421 from ahgittin/fix-dsl-brooklyn-external-nested-dsl\n\nAllow external to take nested DSL expressions"
    },
    {
      "commit": "cae2b17f6494ea1ba040df61a51e0fa2ad2e51f4",
      "tree": "791bbfce86e699de74daed79ba8bbb30f98715a2",
      "parents": [
        "414234ff6b300c804ce80689b5d02d8adc4e2a35"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Sep 17 17:12:44 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Sep 17 17:33:52 2025 +0100"
      },
      "message": "Allow external to take nested DSL expressions\n"
    },
    {
      "commit": "414234ff6b300c804ce80689b5d02d8adc4e2a35",
      "tree": "d68042274fcd8903ea17ef08c4f8a385bb4c7264",
      "parents": [
        "6e75f905d6188aa036af3762fb1cf3d2b53ce9ac",
        "866d500ad3d75c268e6a34173fbfdd912640481f"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Wed Sep 17 14:13:28 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 14:13:28 2025 +0100"
      },
      "message": "Merge pull request #1420 from ahgittin/increase-yaml-aliases\n\nIncrease number of aliases allowed when reading YAML"
    },
    {
      "commit": "866d500ad3d75c268e6a34173fbfdd912640481f",
      "tree": "d68042274fcd8903ea17ef08c4f8a385bb4c7264",
      "parents": [
        "6e75f905d6188aa036af3762fb1cf3d2b53ce9ac"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Sep 17 13:27:32 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Sep 17 13:27:32 2025 +0100"
      },
      "message": "Increase number of aliases allowed when reading YAML\n"
    },
    {
      "commit": "6e75f905d6188aa036af3762fb1cf3d2b53ce9ac",
      "tree": "a7ab60d0e2bd742f7830384ebac54bb4939c635a",
      "parents": [
        "e2a8e0f8a2051644d1dff44b4f3a42fe944e5f80",
        "24b45de494b2dc1aee5ead6865f532149e16c117"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Sat Sep 06 10:40:37 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 06 10:40:37 2025 +0100"
      },
      "message": "Merge pull request #1418 from iuliana/sanitize-exception\n\nSanitizing BeanWithType exception message"
    },
    {
      "commit": "24b45de494b2dc1aee5ead6865f532149e16c117",
      "tree": "a7ab60d0e2bd742f7830384ebac54bb4939c635a",
      "parents": [
        "e2a8e0f8a2051644d1dff44b4f3a42fe944e5f80"
      ],
      "author": {
        "name": "iuliana",
        "email": "iuliana@cloudsoft.io",
        "time": "Mon Jul 07 16:33:23 2025 +0100"
      },
      "committer": {
        "name": "iuliana",
        "email": "iuliana@cloudsoft.io",
        "time": "Mon Jul 07 16:33:23 2025 +0100"
      },
      "message": "Sanitizing BeanWithType exception message\n"
    },
    {
      "commit": "e2a8e0f8a2051644d1dff44b4f3a42fe944e5f80",
      "tree": "57ccb1b426d6a2b9a46825e07009bbe71e23880f",
      "parents": [
        "01d2c72394d7277973d16733715b7145acabc91b"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Apr 08 15:55:26 2025 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Apr 08 15:55:26 2025 +0100"
      },
      "message": "fix deserialization to WrappedValue with nested DSL items\n"
    },
    {
      "commit": "01d2c72394d7277973d16733715b7145acabc91b",
      "tree": "e8e5c3bd08b19ccac240e6f7fb5124c841edf21f",
      "parents": [
        "665dc5331a7ce9b9e92087dd3ee2b9e75e5acddc"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Feb 06 02:09:51 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Feb 06 02:09:51 2025 +0000"
      },
      "message": "Allow explicity WinRM exec configuration to override machine configuration, for port, address, etc\n"
    },
    {
      "commit": "665dc5331a7ce9b9e92087dd3ee2b9e75e5acddc",
      "tree": "ea099d1210c0ba712817e42e5b6d546534f09c25",
      "parents": [
        "9f8e8cf43c0705b1b947b6f990902c9ca0a05517"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:14:32 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 22:00:24 2025 +0000"
      },
      "message": "improve wait and recalculation for in-flight racing updates to service up, problems, and expected\n\nsetExpected will wait a while, because that is called explicitly when children tasks have finished\n(and should have concluded their expected) but might not have delivered all their sensors up to the parent;\nit stops waiting if there are no unrelated subscription deliveries in flight\n"
    },
    {
      "commit": "9f8e8cf43c0705b1b947b6f990902c9ca0a05517",
      "tree": "8d2dcc4fd86fc3bc573989266618b1fb18d73beb",
      "parents": [
        "09f01bc83947db32a39febbf28d964ea9eb9b22c"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:14:07 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:14:07 2025 +0000"
      },
      "message": "better logging/tostring to subscriptions and lifecycle transitions\n"
    },
    {
      "commit": "09f01bc83947db32a39febbf28d964ea9eb9b22c",
      "tree": "870fe71fd70042cd3083464eb22d520131308df5",
      "parents": [
        "ea6cc204e8290b438d197b3383e3e2d77eada9e1"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:12:49 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:12:49 2025 +0000"
      },
      "message": "Adjust timing with comment in indeterminately failing test\n"
    },
    {
      "commit": "ea6cc204e8290b438d197b3383e3e2d77eada9e1",
      "tree": "51c5b9978c95cd63fa1058ad86ca2b422362dfb3",
      "parents": [
        "ce769fafb4491e9d414a86d99ecaf44f7b24e8a7"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jan 21 23:28:02 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jan 22 21:12:21 2025 +0000"
      },
      "message": "Add execution mgr support for global tags, including newTaskStartCallback tag\n\nand TaskEndCallback, using context \"Auto-flags\" set automatically on tasks\n"
    },
    {
      "commit": "ce769fafb4491e9d414a86d99ecaf44f7b24e8a7",
      "tree": "b45d0726e6b00f00a0879df49edd956d05bcdd92",
      "parents": [
        "f046b2711541f68575c4896d8ae396957f4232c3"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jan 21 12:55:13 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jan 21 12:55:13 2025 +0000"
      },
      "message": "Further tidy-up of login/logout logging\n"
    },
    {
      "commit": "f046b2711541f68575c4896d8ae396957f4232c3",
      "tree": "b2bcd4ce0ffecbaddfcf7f5f179bfc62b217393f",
      "parents": [
        "a7ccf6a2114a191ef59545869fa8fc15c0ba2f41"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jan 21 12:54:31 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jan 21 12:54:31 2025 +0000"
      },
      "message": "Tidy up of suppressing traces for some users in REST requests, and including a reference and better info\n"
    },
    {
      "commit": "a7ccf6a2114a191ef59545869fa8fc15c0ba2f41",
      "tree": "993cc9dd2a2bf5dc6485a5fb010a34b78814f606",
      "parents": [
        "c584b4de0b74377446a6d463bda31a5cafd856d2"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:44:13 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:44:13 2025 +0000"
      },
      "message": "Sanitize stdout and stderr from scripts\\\n\nUseful where they are used to collect env vars.\n"
    },
    {
      "commit": "c584b4de0b74377446a6d463bda31a5cafd856d2",
      "tree": "b961af70230e6400faa967c1b0e974f6b1fa0641",
      "parents": [
        "21d1dba9bfdcb0abd83c15df34d3bbae051d85ec"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:35:43 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:35:43 2025 +0000"
      },
      "message": "Log sanitized config of external suppliers\n"
    },
    {
      "commit": "21d1dba9bfdcb0abd83c15df34d3bbae051d85ec",
      "tree": "c54c0fdfcec5558ae8184e8641f7ce288d1a5073",
      "parents": [
        "a5974dfab536f65395c9af6ca1a927c26c7f69b0"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:19:25 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 20:19:25 2025 +0000"
      },
      "message": "Fix issue where vault token is not refreshed\n\nNow refreshes (a) if an access fails, or (b) if brooklyn.cfg is modified\n"
    },
    {
      "commit": "a5974dfab536f65395c9af6ca1a927c26c7f69b0",
      "tree": "3b35ce4eda7e14a56506c088457db6ff959f19cd",
      "parents": [
        "bd848cce2a6726d4de6795d5e4607eed03fb5a74"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 18:21:25 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 19:44:23 2025 +0000"
      },
      "message": "Add option to disable traces in REST responses\n"
    },
    {
      "commit": "bd848cce2a6726d4de6795d5e4607eed03fb5a74",
      "tree": "fdd03231e06002a47470110255183d2ddeb6ef13",
      "parents": [
        "169f938b745d1c07ea08bba8442a60ac687c7eb1"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 17:42:50 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 18:26:10 2025 +0000"
      },
      "message": "Add ldap recursive search and group filter support\n"
    },
    {
      "commit": "169f938b745d1c07ea08bba8442a60ac687c7eb1",
      "tree": "08b3b33144f983320aed0fce3bde8d5f7bdb7e85",
      "parents": [
        "1b5f399ba85313fb6a1c44046542b35a71b2b09e"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 16:23:22 2025 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jan 20 16:23:22 2025 +0000"
      },
      "message": "Add explicit logging for user login and logout\n"
    },
    {
      "commit": "1b5f399ba85313fb6a1c44046542b35a71b2b09e",
      "tree": "3c5723eaf1974fed999552fc2e731ee27be1960b",
      "parents": [
        "97e583b744cf8b631b0a571a1703b293b5f18da5"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Nov 25 15:41:43 2024 +0000"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Nov 25 15:41:43 2024 +0000"
      },
      "message": "Disable Jetty sending the Server: header\n\nThere is no known use case for including it, and it is contrary to some security best practices.\n"
    },
    {
      "commit": "97e583b744cf8b631b0a571a1703b293b5f18da5",
      "tree": "94db3d3f2bb2f26aea649d243cb1c63a32d4cc63",
      "parents": [
        "ff295cd4e333d1d37bcdd3c345124e97f283bf8c"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 19:24:10 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 20:26:03 2024 +0100"
      },
      "message": "Recompute service state+up in more cases when entering running\n\nWhen using quorum, there might be service problems that need recomputing, as well as service up.\nThese would be recomputed, but their presence could indicate that a recompute wasn\u0027t necessary.\n"
    },
    {
      "commit": "ff295cd4e333d1d37bcdd3c345124e97f283bf8c",
      "tree": "2a9d0dfc7a129e81f85a4ec2e2426c95edcd253e",
      "parents": [
        "5a8622cc867307a93bf7d164a86f5064647b1805"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 19:23:51 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 19:31:37 2024 +0100"
      },
      "message": "Improve entity creation logging\n"
    },
    {
      "commit": "5a8622cc867307a93bf7d164a86f5064647b1805",
      "tree": "485df5b3402fd6c65bd87286f536227e7e71a0cb",
      "parents": [
        "6118e6bbd413cd1ba6391af726b56f0262c47250"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 19:23:26 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Sep 06 19:23:26 2024 +0100"
      },
      "message": "Value resolution - fix params in deprecated methods\n"
    },
    {
      "commit": "6118e6bbd413cd1ba6391af726b56f0262c47250",
      "tree": "eef461770f6da518cdfc51a2d0b66b8232a22a4d",
      "parents": [
        "9b01234b667bcb7f8c7e2ff9458522236ea2ad22"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Aug 30 14:09:26 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Aug 30 14:09:26 2024 +0100"
      },
      "message": "Test and fix for persisting after importing\n"
    },
    {
      "commit": "9b01234b667bcb7f8c7e2ff9458522236ea2ad22",
      "tree": "a13aeb82e8bd2c8cf7a43ca58216348ff234aa1f",
      "parents": [
        "bbd49196b05429f7005196986f0cafd4a7932e5b"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 12:46:18 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 12:49:46 2024 +0100"
      },
      "message": "optimize immediate evaluation and task cancellation\n"
    },
    {
      "commit": "bbd49196b05429f7005196986f0cafd4a7932e5b",
      "tree": "3811543f3e5bab37d56e7456f626941e7b8052fe",
      "parents": [
        "2e8ba6e5998d8dc1c61d1ba16983b6f7ed51e218"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 11:13:55 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 11:21:31 2024 +0100"
      },
      "message": "ensure validation only done once\n\nwas done recursively, inside a recursive call\n"
    },
    {
      "commit": "2e8ba6e5998d8dc1c61d1ba16983b6f7ed51e218",
      "tree": "55af68ca08d9608e2b49402268141c02b39eb551",
      "parents": [
        "15c749a9b34f2d0eb932b1890c673849713657d7"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 10:56:36 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 11:21:31 2024 +0100"
      },
      "message": "better logging for entity id and name on creation\n"
    },
    {
      "commit": "15c749a9b34f2d0eb932b1890c673849713657d7",
      "tree": "a7bb30bd9cfba192ccfff78ff536369dce9c6f99",
      "parents": [
        "f07615de619ecbde54dd2f6100418fd2bf1f850b"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 10:50:18 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 11:21:25 2024 +0100"
      },
      "message": "defend against ConcurrentModError when doing attrWhenReady waits\n"
    },
    {
      "commit": "f07615de619ecbde54dd2f6100418fd2bf1f850b",
      "tree": "6dd977197e8c8e9b897ef36b31e7a0fa8cf42a85",
      "parents": [
        "b9ade38c0e8c69fa681e03c2de98352222c2c4f9"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 09:35:01 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Tue Jul 30 09:35:01 2024 +0100"
      },
      "message": "fix for intermittent test failure\n"
    },
    {
      "commit": "b9ade38c0e8c69fa681e03c2de98352222c2c4f9",
      "tree": "5010f35d26b47ae38fa9bdeda4c7a6f290959e1b",
      "parents": [
        "c10b07b15102a31ce3e02c5eab2682be8db4a1f4",
        "e1b0eeb618e597473f28197801b1a2c878cd53bb"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 29 12:48:36 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 29 12:48:36 2024 +0100"
      },
      "message": "Merge branch \u0027master\u0027 of https://gitbox.apache.org/repos/asf/brooklyn-server\n"
    },
    {
      "commit": "c10b07b15102a31ce3e02c5eab2682be8db4a1f4",
      "tree": "834d876473e27f7fd0cba1690fb1ff72e5cc4685",
      "parents": [
        "1006bff329d66683f503f347f248be5ec065dcfb"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 29 12:43:54 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 29 12:48:03 2024 +0100"
      },
      "message": "fix for intermittent initializer test failure, now that it might run async with creation\n\nasync initializer might not complete until after startup completes.\nnotes on possible future enhancements.\n"
    },
    {
      "commit": "e1b0eeb618e597473f28197801b1a2c878cd53bb",
      "tree": "84d79c52f48ad9ccd6e0c8dc9713bbd993ef9632",
      "parents": [
        "1006bff329d66683f503f347f248be5ec065dcfb",
        "424951d58ad420109ef4704b17e430af98379d2f"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Mon Jul 22 09:23:16 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 22 09:23:16 2024 +0100"
      },
      "message": "Merge pull request #1417 from ahgittin/retry-move-if-access-denied\n\nadd a retry if file move has a transient access issue"
    },
    {
      "commit": "1006bff329d66683f503f347f248be5ec065dcfb",
      "tree": "fa3da30637fd36ef3875a1faa7865b87e14afeee",
      "parents": [
        "f887c9afd8b10642e53b8a2ada7a418697c4c6db"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 15:43:40 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 21:59:30 2024 +0100"
      },
      "message": "byon locations can be dynamic\n"
    },
    {
      "commit": "f887c9afd8b10642e53b8a2ada7a418697c4c6db",
      "tree": "8742bbe13b7af5512814c3c41d39d095f94f9946",
      "parents": [
        "29069e9da1245f48075ee2a35951c69a064e2863"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 15:28:19 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 21:59:30 2024 +0100"
      },
      "message": "don\u0027t allow blocking when entities are creating\n"
    },
    {
      "commit": "29069e9da1245f48075ee2a35951c69a064e2863",
      "tree": "9759fc68713c5ee60db8f532699b241428e3d079",
      "parents": [
        "2a56281088ef0a0035196523e33bf4f8d57161a1"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 13:37:58 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 13:37:58 2024 +0100"
      },
      "message": "allow AttrWhenReadyOptions fields to be edited\n"
    },
    {
      "commit": "2a56281088ef0a0035196523e33bf4f8d57161a1",
      "tree": "7a93e19a27fdfc4951cdf6700f1851ad68476a9c",
      "parents": [
        "0e4e9439760e6d72f8c8dbc8cce099d1c7673506"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 11:39:55 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 19 11:39:55 2024 +0100"
      },
      "message": "tidy-up of attributeWhenReady options, and tests\n"
    },
    {
      "commit": "424951d58ad420109ef4704b17e430af98379d2f",
      "tree": "2471b80715c1248767b07de9944c0f2486dd9e0d",
      "parents": [
        "0e4e9439760e6d72f8c8dbc8cce099d1c7673506"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jul 18 10:35:38 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jul 18 10:35:38 2024 +0100"
      },
      "message": "add a retry if file move has a transient access issue\n"
    },
    {
      "commit": "0e4e9439760e6d72f8c8dbc8cce099d1c7673506",
      "tree": "ddbd3753b7d500990696c1c222aa93cb89bb84bd",
      "parents": [
        "e1f4a41d2863add5c24e4ead2e6dc32aece3fac0",
        "aef8b330e6a3874bf77dfe458ce46e7c6a77624a"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 17:19:10 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 17:19:10 2024 +0100"
      },
      "message": "Merge branch \u0027attr-when-ready-options\u0027\n"
    },
    {
      "commit": "aef8b330e6a3874bf77dfe458ce46e7c6a77624a",
      "tree": "ddbd3753b7d500990696c1c222aa93cb89bb84bd",
      "parents": [
        "33a68bd303689f99dd4fd7e29c030aeb8ecf5d97"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 15:48:12 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 15:48:12 2024 +0100"
      },
      "message": "expose an attributeWhenReadyAllowingOnFire\n"
    },
    {
      "commit": "33a68bd303689f99dd4fd7e29c030aeb8ecf5d97",
      "tree": "8b78718dbc23a1b1a5695bacf1c863ed1c472ec2",
      "parents": [
        "930309ccd1cecd03d9ef2349b28e374d704ce0a8"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 14:59:52 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 15:45:07 2024 +0100"
      },
      "message": "add support for dsl to take maps as function args, and to chain when necessary\n"
    },
    {
      "commit": "930309ccd1cecd03d9ef2349b28e374d704ce0a8",
      "tree": "f74c106ad92f45a2c2f16849301df931957e6616",
      "parents": [
        "e1f4a41d2863add5c24e4ead2e6dc32aece3fac0"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 14:59:28 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Wed Jul 17 14:59:28 2024 +0100"
      },
      "message": "add basic attr when ready options\n"
    },
    {
      "commit": "e1f4a41d2863add5c24e4ead2e6dc32aece3fac0",
      "tree": "9a7768be8ef6766061394022af0880a669383829",
      "parents": [
        "f018049b3f425240af9bcde14a4e26244f61aef4"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 22:33:40 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 22:33:40 2024 +0100"
      },
      "message": "service up wait tidy up\n\ndon\u0027t recompute service up if the trigger was service up\n"
    },
    {
      "commit": "f018049b3f425240af9bcde14a4e26244f61aef4",
      "tree": "315b30f524f7e76c48706d2bb617bc5284aec0c0",
      "parents": [
        "4c39d30207947433bb994094070581570913e688"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 15:10:47 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 15:10:47 2024 +0100"
      },
      "message": "allow user in byon to be dynamic\n"
    },
    {
      "commit": "4c39d30207947433bb994094070581570913e688",
      "tree": "27e86f983badeb84c310fd6c2c932fee5ec5ccd3",
      "parents": [
        "8f8eb59c0845dd098df3e9cba95fc6d2322455a2"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 14:45:49 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 14:45:49 2024 +0100"
      },
      "message": "skip intermediate service not up indicators triggering failure if cleared soon after\n\nand more logging for service up false\n"
    },
    {
      "commit": "8f8eb59c0845dd098df3e9cba95fc6d2322455a2",
      "tree": "1519e2f0a54cfd60a2aa4ca816ad9b6c618d57b7",
      "parents": [
        "94cb482e175faf7223c191076a19dc34406ec1b1"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 11:42:17 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Mon Jul 15 11:42:17 2024 +0100"
      },
      "message": "allow byon/fixed-list config to be dynamic\n"
    },
    {
      "commit": "94cb482e175faf7223c191076a19dc34406ec1b1",
      "tree": "d5cc4b8fcf0b2db7f33c0d15d0ec4026ac6540e8",
      "parents": [
        "e90fe710f8d65f47445f509d547b905697a0191d"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 12 09:33:48 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Fri Jul 12 09:33:48 2024 +0100"
      },
      "message": "prevent flapping when entity service state has children dependencies\n\nfix one other place where service state is recomputed possibly too early due to race\n"
    },
    {
      "commit": "e90fe710f8d65f47445f509d547b905697a0191d",
      "tree": "a626b104f6c6ad5614e01984c88f35f93379b8c9",
      "parents": [
        "d0ce66d1cda3c0c99b6d862b1b42bc6a2feafae7"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jul 11 18:00:16 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jul 11 18:00:16 2024 +0100"
      },
      "message": "when running service state expected logic, don\u0027t rely on eventual consistency\n\ntry explicitly running the other related enrichers first\n"
    },
    {
      "commit": "d0ce66d1cda3c0c99b6d862b1b42bc6a2feafae7",
      "tree": "5f21602f909e5cab2a091fb5639d062aa0a1c683",
      "parents": [
        "9ed4c13080698aa89eea3407ee14cdeb703cf405"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 17:21:42 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 17:40:39 2024 +0100"
      },
      "message": "support icons on bundles using bundleIconUrl\n\npreviously worked from bom files only, now routine is shared with catalog.bom file in an archive;\nalso sets tags, and searches in the bundle correctly to find the icon.\n"
    },
    {
      "commit": "9ed4c13080698aa89eea3407ee14cdeb703cf405",
      "tree": "4b4899b1eea20f838df2b7e8ab5d123a9f0e6c6a",
      "parents": [
        "77bb2c25156c108e7755f1a33435d6fa0b84c38d",
        "ecb37dc9b2d01446caa26cc7cee4cda8139a1f31"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Thu Jun 27 16:07:18 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 27 16:07:18 2024 +0100"
      },
      "message": "Merge pull request #1416 from duncangrant/fix-rest-username-logging\n\nLookup user using BrooklynSecurityProviderFilterHelper"
    },
    {
      "commit": "77bb2c25156c108e7755f1a33435d6fa0b84c38d",
      "tree": "109ca382145ed49b666cef5cb58177965d89f1ac",
      "parents": [
        "064a4eb145816fbb91948f3c286aeafc1f7f3933"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 14:04:42 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 14:04:42 2024 +0100"
      },
      "message": "remove the WWW-Authenticate header when using the login form\n\nit had been added for errors as part of oauth support,\nbut when using the login form, it triggers a browser login popup\n"
    },
    {
      "commit": "064a4eb145816fbb91948f3c286aeafc1f7f3933",
      "tree": "8fdd62f50aecd0a475d777c0aecbd6a9b461f806",
      "parents": [
        "471161db1f4c46b9766dde4c06d34039acd9fcdc"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 10:51:13 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "git@alex.heneveld.org",
        "time": "Thu Jun 27 10:51:13 2024 +0100"
      },
      "message": "improve handling if ssh expiry set to 0/negative/forever\n"
    },
    {
      "commit": "ecb37dc9b2d01446caa26cc7cee4cda8139a1f31",
      "tree": "e23d73a5c8936fb1f4904fd3069df6e1e9d6f905",
      "parents": [
        "a09fca94e7d5784c79e57d400ef07ed4fef2c229"
      ],
      "author": {
        "name": "Duncan Grant",
        "email": "duncan.grant@cloudsoft.io",
        "time": "Tue Jun 25 14:11:00 2024 +0100"
      },
      "committer": {
        "name": "Duncan Grant",
        "email": "duncan.grant@cloudsoft.io",
        "time": "Tue Jun 25 14:11:00 2024 +0100"
      },
      "message": "Add username to logging context\n"
    },
    {
      "commit": "a09fca94e7d5784c79e57d400ef07ed4fef2c229",
      "tree": "1874b45378ecb1956a8e523c68fae6587e96c629",
      "parents": [
        "471161db1f4c46b9766dde4c06d34039acd9fcdc"
      ],
      "author": {
        "name": "Duncan Grant",
        "email": "duncan.grant@cloudsoft.io",
        "time": "Fri Jun 21 16:00:37 2024 +0100"
      },
      "committer": {
        "name": "Duncan Grant",
        "email": "duncan.grant@cloudsoft.io",
        "time": "Fri Jun 21 16:00:37 2024 +0100"
      },
      "message": "Lookup user using BrooklynSecurityProviderFilterHelper\n\nIf not available in the context\n"
    },
    {
      "commit": "471161db1f4c46b9766dde4c06d34039acd9fcdc",
      "tree": "9045236ff45860168542d063fc77e247d83d380b",
      "parents": [
        "bfe0677f247d15f47f20bb86fa23e1b2b9db87f1"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Mon Jun 17 16:55:45 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Mon Jun 17 16:55:45 2024 +0100"
      },
      "message": "provide a way for extended rest endpoints to indicate the correct path to swagger\n\nwithout this, swagger looks at the @Path annotation and the basepath,\nbut that doesn\u0027t work for osgi blueprints that have an intermediate path that is non-empty,\nand only one can be installed at the base path.\n"
    },
    {
      "commit": "bfe0677f247d15f47f20bb86fa23e1b2b9db87f1",
      "tree": "0fd8ba2cfb112f638e4f04cae0d2b5279d571636",
      "parents": [
        "e9e4852f0cd36383815baff1e6b3c620ff265835"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Mon Jun 17 13:22:39 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex.heneveld@cloudsoftcorp.com",
        "time": "Mon Jun 17 13:29:10 2024 +0100"
      },
      "message": "Change config/sensor to return 200, 204, or 404. Tidy other API documentation bits.\n\n            @ApiResponse(code \u003d 200, message \u003d \"OK\"),\n            @ApiResponse(code \u003d 204, message \u003d \"No Content. The config is known, but unset.\"),\n            @ApiResponse(code \u003d 404, message \u003d \"Could not find application, entity or config key\"),\n\nThe behavior is now as above.  404 is returned if the sensor (or config) is not defined, and 204 if it is defined but unset.\n200 with null or empty string is only returned if the sensor/config is explictly set as such.\n\nAdditionally, some discrepancies where Accepted was used instead of Created or sometimes OK has been fixed,\nand OK is returned in some places where ACCEPTED or CREATED had been where it makes more sense to do so.\n"
    },
    {
      "commit": "e9e4852f0cd36383815baff1e6b3c620ff265835",
      "tree": "6b618443615b53cece8d23a6d425718ff373a93e",
      "parents": [
        "531a72de93496435a70e25c44e121d6b88fd6581"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Tue Jun 04 00:23:39 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Tue Jun 04 00:23:39 2024 +0100"
      },
      "message": "catch and recover on rare CME\n"
    },
    {
      "commit": "531a72de93496435a70e25c44e121d6b88fd6581",
      "tree": "3549bfa4cd961863f152f1fb49743a2bad288060",
      "parents": [
        "ba15bed0f984c2542fcd08fd7e486073114ab5e9"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Sat Jun 01 02:09:11 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Sat Jun 01 02:09:11 2024 +0100"
      },
      "message": "add conveniences for entity tests\n"
    },
    {
      "commit": "ba15bed0f984c2542fcd08fd7e486073114ab5e9",
      "tree": "02e6570bc08be7aaa54585a490ae85ff98a98b1d",
      "parents": [
        "f6716dc8aa4b52955537c8d576191acee2bf5948"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 15:12:26 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 16:23:39 2024 +0100"
      },
      "message": "workflow flow control - labels, output, end semantics\n\n- add a label step to more easily set an id\n- support let output to set the output but without returning\n- goto end will go to the end of the containing list (parent context if inline subworkflow in shorthand)\n"
    },
    {
      "commit": "f6716dc8aa4b52955537c8d576191acee2bf5948",
      "tree": "4588ae1ff09bd8b903d37a4f8ec4f2b3fe78a938",
      "parents": [
        "d55ea77c0bc7f06558468af51c301023b8052ef9"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 10:53:52 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 10:53:52 2024 +0100"
      },
      "message": "allow output from previous step to be accessible in subworkflow\n"
    },
    {
      "commit": "d55ea77c0bc7f06558468af51c301023b8052ef9",
      "tree": "8325c9d39380ab5ad045ec2181221714a1c7d0c6",
      "parents": [
        "737adf8b208f64664562e8be8b9e0e7417998762"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 10:13:02 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 31 10:13:02 2024 +0100"
      },
      "message": "add note and increase timeout for intermittent failure\n"
    },
    {
      "commit": "737adf8b208f64664562e8be8b9e0e7417998762",
      "tree": "d35ef942da900bcead3f150e74116dd25517afab",
      "parents": [
        "74fb372c461e21224950e37f949f9297d2b0e998"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 30 14:03:23 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 30 14:03:23 2024 +0100"
      },
      "message": "easier checking if config is null, and allow explicit null values in workflow\n\nallows values when set, but does not make it easy to set null\n"
    },
    {
      "commit": "74fb372c461e21224950e37f949f9297d2b0e998",
      "tree": "c20b1b5bdee447608a23cdcad2c62aae913280ab",
      "parents": [
        "799907a655b1e4fa8070b6bd521f558b312a6de2"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 30 11:41:12 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 30 11:41:12 2024 +0100"
      },
      "message": "allow workflow scratch to store an explicit null, if somehow it is set\n\nfreemarker will still refuse to return it, but the internal model is now more consistent\n(that is what we do eg for sensors, config, etc; rather than using \u0027null\u0027 as an indication to remove something)\n"
    },
    {
      "commit": "799907a655b1e4fa8070b6bd521f558b312a6de2",
      "tree": "451c3ab6008cd7f293cfa172001390ccbf9a6d5b",
      "parents": [
        "86d519a3a3a8aca65f9d76638683e41f1778ea10"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 27 16:40:40 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 27 16:40:40 2024 +0100"
      },
      "message": "fix patch support with body\n"
    },
    {
      "commit": "86d519a3a3a8aca65f9d76638683e41f1778ea10",
      "tree": "04cfc21699aa2adb6962d03d264297c46f7ba855",
      "parents": [
        "e946424c0cab53c4b120f757f2430f1ad35b8d05"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 27 11:07:47 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 27 11:07:47 2024 +0100"
      },
      "message": "add patch support to http tool\n"
    },
    {
      "commit": "e946424c0cab53c4b120f757f2430f1ad35b8d05",
      "tree": "ed6460fd67f32a65516ce0a5d16ce17e04b68f6b",
      "parents": [
        "e4599a0ab908eb7a27a46f661b4d0b98f7dc2b01"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 23 16:13:59 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu May 23 16:13:59 2024 +0100"
      },
      "message": "improve DSL parsing\n"
    },
    {
      "commit": "e4599a0ab908eb7a27a46f661b4d0b98f7dc2b01",
      "tree": "4bd58a620c935b1be0e5a245a3fc23ed8dc224e6",
      "parents": [
        "a5830edd791b232e5b7987cdbcad8d4664c570f0"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 13 17:34:38 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon May 13 17:34:38 2024 +0100"
      },
      "message": "optimize absent stack trace origin, and improve version serialization for jackson\n"
    },
    {
      "commit": "a5830edd791b232e5b7987cdbcad8d4664c570f0",
      "tree": "31386b7748d000d55c91fc005283bde3be09a891",
      "parents": [
        "c8e7bbbedd729932c137b8fe755bdb96acf16849"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 19:20:26 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 23:48:10 2024 +0100"
      },
      "message": "better resolution of workflow inputs\n\n- prevent confusion with subkeys having dot qualifiers and being omitted when used in sensor/policy definition\n- don\u0027t coerce a supplier to a map\n- allow unknown types under type key in maps, since we now use our deserializers for it\n- allow access to selected workflow.util vars even outwith workflow\n- return entity predicate where required, and better coercion from boolean to conditions\n- remove deprecated findKeys method\n- better error messages\n- more tests\n"
    },
    {
      "commit": "c8e7bbbedd729932c137b8fe755bdb96acf16849",
      "tree": "b4df2914f4859add9d14284fc267cf448ee29277",
      "parents": [
        "f05fe050fbce8404222896481163807abcbe7f15"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 15:09:02 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 15:17:42 2024 +0100"
      },
      "message": "apply type deserialization even into maps and lists by default\n"
    },
    {
      "commit": "f05fe050fbce8404222896481163807abcbe7f15",
      "tree": "637076967ee1d5f9b4a1adc2a3e6849f272c7992",
      "parents": [
        "3bfae5b2fa8d7d25e79703271ecc49bb9b5529df"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 14:04:01 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 10 14:43:41 2024 +0100"
      },
      "message": "better ordering of type coercions, run \"wrong bean\" coercions after standard coercions\n\nnegative indexed coercions run after the standard coercions, and the natural order comparator is used so that 11 runs after 9\n"
    },
    {
      "commit": "3bfae5b2fa8d7d25e79703271ecc49bb9b5529df",
      "tree": "36a9603ac1aae3f83e8d055570fc49fd0fdde660",
      "parents": [
        "0f56dd870491d81370f35ae873f3698c72cc3955"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed May 08 10:46:35 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed May 08 10:46:35 2024 +0100"
      },
      "message": "allow workflow policy and callable to be subclassed\n"
    },
    {
      "commit": "0f56dd870491d81370f35ae873f3698c72cc3955",
      "tree": "53cefc8a8d8eaea2e79cc8222ffca68e3e1a76be",
      "parents": [
        "edca9fb8893bc01b94bce600ca2bbe4880468e8a"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 03 13:56:22 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri May 03 13:56:22 2024 +0100"
      },
      "message": "fix async delay for initializer, and intermittent failing test\n"
    },
    {
      "commit": "edca9fb8893bc01b94bce600ca2bbe4880468e8a",
      "tree": "e52a4735539b52cff3b343e9d129f97a11d7298a",
      "parents": [
        "b9febc09dbcec2f4bad2824616a6ab910a7e20ed"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed May 01 16:29:35 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed May 01 16:29:35 2024 +0100"
      },
      "message": "allow tests to update the external config registry from properties\n"
    },
    {
      "commit": "b9febc09dbcec2f4bad2824616a6ab910a7e20ed",
      "tree": "e69e3ef8168eaee54e8593e485bd795a5c4273a0",
      "parents": [
        "3deb69f856696c17f7df97d7a47118e1b31ba3e3"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon Apr 29 12:51:34 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Mon Apr 29 12:51:34 2024 +0100"
      },
      "message": "expose ability for workflow policy to be invoked\n"
    },
    {
      "commit": "3deb69f856696c17f7df97d7a47118e1b31ba3e3",
      "tree": "8f2964ed32df8562da577d6f0d29a33e06aedca4",
      "parents": [
        "95d3ec329c03abd8f5812256fa00286f149d1989"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Apr 19 16:57:47 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Apr 19 16:57:47 2024 +0100"
      },
      "message": "tidy utility methods, support floor/ceil\n"
    },
    {
      "commit": "95d3ec329c03abd8f5812256fa00286f149d1989",
      "tree": "fe7e523eafb9421ecd656a38988871b8655f886f",
      "parents": [
        "351e1d06390cb5c7ac211ed55a6740f5ea180587"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Apr 12 20:10:10 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Fri Apr 12 20:10:10 2024 +0100"
      },
      "message": "reconstruct search path when set without catalog item id\n"
    },
    {
      "commit": "351e1d06390cb5c7ac211ed55a6740f5ea180587",
      "tree": "84daf8ba7de6651fefcbfd2607fdbea0e19dc94e",
      "parents": [
        "83300f5b6a8fd88de091fbc4fa1804642c3e5957"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu Apr 11 10:52:19 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Thu Apr 11 10:52:19 2024 +0100"
      },
      "message": "remove unnecessary template model wrapping\n\nas it confuses some unwrapping, causing surprising lookups and errors\n"
    },
    {
      "commit": "83300f5b6a8fd88de091fbc4fa1804642c3e5957",
      "tree": "19acc75cbff6d0cf67e5b03e4357d7db1f475d40",
      "parents": [
        "2327001553fef6e61a5c3a2243d106bb50a08820"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 22:21:22 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 22:21:22 2024 +0100"
      },
      "message": "allow prefixes to filter on exceptions to be modified\n"
    },
    {
      "commit": "2327001553fef6e61a5c3a2243d106bb50a08820",
      "tree": "9c32baf0131a9c7f44c53e2308331719b1b3e7ca",
      "parents": [
        "c9228606b7d31ab5ac513968918b19fdf27a7fa2"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 16:03:29 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 16:52:38 2024 +0100"
      },
      "message": "allow checking call stacks across tasks\n\nso recursive checks between threads are found.\nand improve error messages.\n"
    },
    {
      "commit": "c9228606b7d31ab5ac513968918b19fdf27a7fa2",
      "tree": "f9e0973701b3e5aa9edbb43405bf9648b163bfda",
      "parents": [
        "5a5dd2af05ec4ea42193e5d3cbfde547aeaaa071"
      ],
      "author": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 12:06:46 2024 +0100"
      },
      "committer": {
        "name": "Alex Heneveld",
        "email": "alex@cloudsoft.io",
        "time": "Wed Apr 10 12:06:46 2024 +0100"
      },
      "message": "update builder, git already installed here\n"
    }
  ],
  "next": "5a5dd2af05ec4ea42193e5d3cbfde547aeaaa071"
}
