)]}'
{
  "log": [
    {
      "commit": "f377559eea85c5300e815eeef5ef4419674454aa",
      "tree": "87d10de3c8dffe8e58f01e5c53cb21262c486a66",
      "parents": [
        "0b1cfabcc3214989e96afa5e01591b5e57a6c2da",
        "d80d0db26dc1c265e8f6a2679fb8c665ce06d748"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:54:20 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 10:54:20 2026 +0200"
      },
      "message": "Merge pull request #3720 from apache/4044-stable.objspec\n\nCAUSEWAY-4044: Stable Object Spec Identity\n\nStill WIP. There\u0027ll be another follow up."
    },
    {
      "commit": "d80d0db26dc1c265e8f6a2679fb8c665ce06d748",
      "tree": "87d10de3c8dffe8e58f01e5c53cb21262c486a66",
      "parents": [
        "c71ba5af9191f8fe18a3696ee396c67c6fb14569"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:52:44 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:52:44 2026 +0200"
      },
      "message": "CAUSEWAY-4044: prepare merge"
    },
    {
      "commit": "c71ba5af9191f8fe18a3696ee396c67c6fb14569",
      "tree": "75f0a0417acb97ad7804212d4fba3b398eee0e1b",
      "parents": [
        "983b0835386836c2288623d20766b297dae25af7"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:49:05 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:49:05 2026 +0200"
      },
      "message": "CAUSEWAY-4044: rebase on main"
    },
    {
      "commit": "983b0835386836c2288623d20766b297dae25af7",
      "tree": "a9b4edb1b5706ee4568a2a55daf50d00ba2a1688",
      "parents": [
        "245b0700a152d15c60a19a5998c21940ac451e17"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 08:57:24 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:46:09 2026 +0200"
      },
      "message": "CAUSEWAY-4044: decouple internal factories from ObjectSpecification\n\nintroduces a ObjectMetaDataView"
    },
    {
      "commit": "245b0700a152d15c60a19a5998c21940ac451e17",
      "tree": "240c30256640817ee86982ae4a65ae55d7026a0f",
      "parents": [
        "fb35ce3ca58dda7895bc85bb1a1e58e8a2da0c40"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 06:32:00 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:46:08 2026 +0200"
      },
      "message": "CAUSEWAY-4044: work on ObjectSpecificationFacade"
    },
    {
      "commit": "fb35ce3ca58dda7895bc85bb1a1e58e8a2da0c40",
      "tree": "4eac7411464dd1941a5be5a60c1327f52521f121",
      "parents": [
        "c84de8e3aeb8cba3e3e87ef7954df952599f1c90"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 15 23:34:19 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:46:07 2026 +0200"
      },
      "message": "CAUSEWAY-4044: obj spec facade (wip)"
    },
    {
      "commit": "c84de8e3aeb8cba3e3e87ef7954df952599f1c90",
      "tree": "b456df4093c67baea37c569bcd423f89f216c05e",
      "parents": [
        "f1a6d5f861d037871ed2cccde32f558d5ac4f336"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 15 19:37:49 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:46:07 2026 +0200"
      },
      "message": "CAUSEWAY-4044: introduces ObjectSpecificationFacade\n\nrenaming some of methods from getter to fluent style"
    },
    {
      "commit": "f1a6d5f861d037871ed2cccde32f558d5ac4f336",
      "tree": "8289ee5d6576cc537790d4d9ab680b52e7e59cf1",
      "parents": [
        "de87c86787c4cffd36ee92c3026737ebae4523dc"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 15 18:29:19 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:45:31 2026 +0200"
      },
      "message": "CAUSEWAY-4044: moves the potentialOrphans holder out of spec"
    },
    {
      "commit": "de87c86787c4cffd36ee92c3026737ebae4523dc",
      "tree": "7886df38a751f8571d909166e9e048754b831a83",
      "parents": [
        "652be029cfff84b7a7e0e79086af151d254fa33e"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 15 07:29:02 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:45:30 2026 +0200"
      },
      "message": "CAUSEWAY-4044: simplified MethodRemover usage"
    },
    {
      "commit": "652be029cfff84b7a7e0e79086af151d254fa33e",
      "tree": "8c3ff7f10320ff8e07d19e77ba6c8ad48589c5fd",
      "parents": [
        "3cec6d2671fad9f90808b5fcb1e57e38c3222196"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Fri Aug 14 08:08:17 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:45:29 2026 +0200"
      },
      "message": "CAUSEWAY-4044: moves the MethodRemover factory out of\nFacetedMethodsFactory"
    },
    {
      "commit": "3cec6d2671fad9f90808b5fcb1e57e38c3222196",
      "tree": "bd8fb0fb9aadacc1fbc90c6ebd7fae111d58b06c",
      "parents": [
        "a34bd276d704986a8480d953004e1d50480a911c"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Fri Aug 14 07:41:25 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:45:29 2026 +0200"
      },
      "message": "CAUSEWAY-4044: dev notes"
    },
    {
      "commit": "a34bd276d704986a8480d953004e1d50480a911c",
      "tree": "e1fe3caf18532a4a02517bc34b6cbec6ae8e7a4b",
      "parents": [
        "7b5035a68e6fe8befef145db4d8cbf59a7888641"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 21:01:33 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:45:28 2026 +0200"
      },
      "message": "CAUSEWAY-4044: fixes NPE during MM disposal (seen when testing)"
    },
    {
      "commit": "7b5035a68e6fe8befef145db4d8cbf59a7888641",
      "tree": "108c43d736b080a48d718c49b30a2217c73dac92",
      "parents": [
        "c7b6386c44c592b144215716ad9ae9786717c6d4"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 17:48:44 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:44:19 2026 +0200"
      },
      "message": "CAUSEWAY-4044: more robust Hierarchical"
    },
    {
      "commit": "c7b6386c44c592b144215716ad9ae9786717c6d4",
      "tree": "1849c45185c56e84f3db118d6d839c8da2879fc9",
      "parents": [
        "0b1cfabcc3214989e96afa5e01591b5e57a6c2da"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 17:10:37 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 16 10:44:19 2026 +0200"
      },
      "message": "CAUSEWAY-4044: refactors \u0027hierarchical\u0027 in to its own class"
    },
    {
      "commit": "0b1cfabcc3214989e96afa5e01591b5e57a6c2da",
      "tree": "66efe05438a5061883b4c07af8c18a6959c79f1c",
      "parents": [
        "6c9eb2fce48b2ddb090ce519698c9565874b2863"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:07:46 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:07:46 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive page-limit cap and mark second-wave reconciliation complete (MA-16)\n\nSync the page-limit cap requirements into unified-command-manager; move the completed change to archive. All ten completing child changes (MA-1..MA-16) are now archived: mark the second-wave reconciliation complete in the programme plan, ledger, and planned-changes index.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "6c9eb2fce48b2ddb090ce519698c9565874b2863",
      "tree": "98565cf46c613f778893cc0d8dbb1f418c53086e",
      "parents": [
        "eba16761d0efa85c8c4f8e02d18d9a40aa23b7f7"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:05:34 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:05:34 2026 +0100"
      },
      "message": "CAUSEWAY-4042: restore unified-manager page-limit cap of 320 (MA-16)\n\nAdd CommandManager.MAX_LIMIT\u003d320 and cap the effective page limit there (normalizeLimit), so a constructed or memento-encoded limit above 320 is clamped to 320 while a non-positive limit still falls back to DEFAULT_LIMIT\u003d100. HasLimit_changeLimit now accepts only [1,320]. The standard commandlog menu opens the manager at 320; the legacy openCommandManager compatibility shims continue to open at 100 (decision D-C).\n\nTests: added cap + change-limit-range coverage to CommandManagerStateTest; updated CommandLogMenuTest to expect the 320 opening limit. commandlog applib green under JDK 21 (167 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 10 (final) of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "eba16761d0efa85c8c4f8e02d18d9a40aa23b7f7",
      "tree": "8c122e52004b10e14768e1b4cde9ccb6bf880381",
      "parents": [
        "26a517e74d8a15c97d87117db045f5066f79f3ff"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:01:18 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:01:18 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose command-manager page-limit cap (MA-16)\n\nPromote slice 10 (final) to the active OpenSpec change: add MAX_LIMIT\u003d320, cap the effective/change-limit to [1,320], open the standard menu at 320, retain DEFAULT_LIMIT\u003d100 as the memento/non-positive fallback (decision D-C).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "26a517e74d8a15c97d87117db045f5066f79f3ff",
      "tree": "69bdac6f4c83bea5a4826b94f62a789875460bf9",
      "parents": [
        "5a2f497405dffca044543365c97698e8159a5690"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:00:42 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:00:42 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive collection summary-view config reconciliation (MA-12)\n\nAdd the new collection-summary-view-config capability spec; move the completed change to archive. Record slice 9 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5a2f497405dffca044543365c97698e8159a5690",
      "tree": "e15b829e4c99e50ad9df00d9825bd5cbe36187ab",
      "parents": [
        "959b0c326207265ffc452862f4eed18ac360f9e2"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:00:23 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 09:00:23 2026 +0100"
      },
      "message": "CAUSEWAY-4042: add Wicket collection summary-view disable config property (MA-12)\n\nAdd a causeway.viewer.wicket.summary-view-disabled boolean configuration property (default false). When true, CollectionContentsAsSummaryFactory.appliesTo reports DOES_NOT_APPLY, so the BigDecimal-summary collection view is never offered. This re-introduces the v2 capability the Causeway 4 way (a real config property bound through CausewayConfiguration) rather than the v2 System.getenv stop-gap (decision D-B); no environment-variable lookup is used.\n\nTests: added CausewayConfiguration_SummaryViewDisabled_Test (defaults false; binds true). core/config green under JDK 21 (2 tests) and viewers/wicket/ui compiles; strict OpenSpec validation passes.\n\nImplements slice 9 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "959b0c326207265ffc452862f4eed18ac360f9e2",
      "tree": "7c99b90fe4922ca278644972a503ee9953a24ee3",
      "parents": [
        "0bb3655eefdb529941042852cd035eb0da49e151"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:52 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:52 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose Wicket collection summary-view disable config (MA-12)\n\nPromote slice 9 to the active OpenSpec change: add a causeway.viewer.wicket.summary-view-disabled config property that makes CollectionContentsAsSummaryFactory report DOES_NOT_APPLY, replacing the v2 getenv stop-gap (decision D-B).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0bb3655eefdb529941042852cd035eb0da49e151",
      "tree": "780763b9d23d0646f04f1a62e95df53ba95186f2",
      "parents": [
        "61f1c6326faaa56810dcc4b86c8b5f8c64912d69"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:21:11 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:16 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive command-YAML strictness reconciliation (MA-11)\n\nSync the strict-decoder requirement into command-result-metadata; move the completed change to archive. Record slice 8 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "61f1c6326faaa56810dcc4b86c8b5f8c64912d69",
      "tree": "19ec852a62ff10b13c2ef94cbb2e0808faf4bfac",
      "parents": [
        "4728bd611d4ba57cb9da402f991dce1adbcd0423"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:20:52 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:16 2026 +0100"
      },
      "message": "CAUSEWAY-4042: route legacy command importer through strict YAML decoder (MA-11)\n\nThe retained legacy CommandReplayManager.importCommands now decodes with CommandDtoUtils.fromYamlForReplay (as the unified importer does) instead of the lenient fromYaml: malformed replay YAML is rejected rather than silently imported as an empty list, the wrapped-export and legacy multi-document forms are accepted, and a present result bookmark is stored. Closes the last live surface that swallowed a bad upload; completes decision D-D (legacy managers retained). The general-purpose CommandDtoUtils.fromYaml API is unchanged.\n\nTests: added CommandReplayManagerImportStrictnessTest (malformed rejected, nothing imported; valid legacy multi-doc imported). commandlog applib green under JDK 21 (165 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 8 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "4728bd611d4ba57cb9da402f991dce1adbcd0423",
      "tree": "93bf538100929a297fe5f6a15c85f6145ec99b40",
      "parents": [
        "aafb9ae8820a9fcd2acceb5c9e3db2f8faf23877"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:15:50 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:16 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose command-YAML strictness for legacy importer (MA-11)\n\nPromote slice 8 to the active OpenSpec change: route the legacy CommandReplayManager.importCommands through the strict fromYamlForReplay decoder so malformed replay YAML is rejected rather than silently imported as empty, and the wrapped/legacy multi-document forms are accepted.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "aafb9ae8820a9fcd2acceb5c9e3db2f8faf23877",
      "tree": "1e5a6be060f86373a818bbec40e046a480f8cbb2",
      "parents": [
        "f9d66cd41eab2da5230dd0309afffdddc8a1bda8"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:15:24 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:16 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive per-command export reconciliation (MA-10)\n\nSync the per-command export requirement into replayable-command-projection; move the completed change to archive. Record slice 7 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f9d66cd41eab2da5230dd0309afffdddc8a1bda8",
      "tree": "63fb87e10484de9efdbd6d0a1e88a18f2a1a2255",
      "parents": [
        "60521ab52a2dd860f3c19cc2276877fe5aa106fd"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:15:05 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: add per-command YAML export (MA-10)\n\nAdd ReplayableCommand_export (object form) and ReplayableCommand_exportTR (table row) that export a single replayable command as a result-bearing CommandExportDto YAML Clob, reusing CommandDtoUtils.CommandExportDto.of + toYamlExport and optional ResultRemappingService remapping; both are SAFE, publishing-disabled, non-state-mutating, and registered in the module. Complements (does not replace) the bulk CommandManager_exportSequence.\n\nTests: added ReplayableCommandExportTest (result-bearing export, non-mutating, disabled when no DTO). commandlog applib green under JDK 21 (163 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 7 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "60521ab52a2dd860f3c19cc2276877fe5aa106fd",
      "tree": "bc186ffe2944a14818566289fa77c5ace1d26629",
      "parents": [
        "75b6c4a8137210b48f1fe8ccc657fae08e303eb6"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:11:22 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose per-command export reconciliation (MA-10)\n\nPromote slice 7 to the active OpenSpec change: add ReplayableCommand_export (object form) and ReplayableCommand_exportTR (table row) that export a single replayable command as a result-bearing CommandExportDto YAML Clob, reusing the bulk exporter\u0027s building blocks; register both mixins.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "75b6c4a8137210b48f1fe8ccc657fae08e303eb6",
      "tree": "7988c1da8a668f9a0876ecc376debe7dea120ed1",
      "parents": [
        "950b954071a3b507be6d0f642ed353189397b018"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:10:55 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive replayable-command presentation reconciliation (MA-6/7/8/9)\n\nSync the DTO/actual-bookmark/title/target-projection requirements into replayable-command-projection; move the completed change to archive. Record slice 6 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "950b954071a3b507be6d0f642ed353189397b018",
      "tree": "a19566e481fe8aeedb5935be8ae233fc71da65b4",
      "parents": [
        "03d6a7a057f5ca85adbac9e4e9b3aa8715a1f59a"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 10:10:34 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: reconcile replayable-command presentation (MA-6/7/8/9)\n\ngetDto() renders the result-bearing CommandExportDto (recorded result envelope/bookmark now shown). actualBookmarkFor falls back to the recorded bookmark for UNDEFINED as well as OK, via new ReplayState.isExecutedOk(), so recorded-only participants keep their actual link. The title uses the complete recorded target bookmark instead of the 10-char-abbreviated targetId. Top-level getTarget()/getActualTarget() projections are added, and the ReplayableCommand_openTarget / _openTargetTR mixins now offer a RECORDED/ACTUAL TargetType choice (with choices, default, disablement and user feedback when a target cannot be resolved) and are registered in the module.\n\nTests: added ReplayableCommandTargetProjectionTest (full target, untruncated title, UNDEFINED actual fallback, DTO includes result); flipped ReplayableCommandPresentationTest to assert the openTarget mixins are now registered. commandlog applib green under JDK 21 (161 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 6 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "03d6a7a057f5ca85adbac9e4e9b3aa8715a1f59a",
      "tree": "ded63814950a82fedd6a64b37d58704a87696ccf",
      "parents": [
        "9b4be8c996b2ed91ca80979eb0a51d5c9ebc4f74"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:58:10 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose replayable-command presentation reconciliation (MA-6/7/8/9)\n\nPromote slice 6 to the active OpenSpec change: getDto() renders the export DTO (incl. recorded result); actualBookmarkFor falls back for UNDEFINED as well as OK; the title uses the full recorded target; and the recorded-vs-actual openTarget UI + top-level getTarget/getActualTarget are added and registered. Also fix a stale planned-changes progress pointer.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "9b4be8c996b2ed91ca80979eb0a51d5c9ebc4f74",
      "tree": "682d4cf5b768fa7c05500a2b6b962a86192f6432",
      "parents": [
        "4196425cd87227053a52b3a999e8ca52e372a2bb"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:57:31 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive AppFeat reference-data classification (MA-4)\n\nSync the AppFeat reference-data requirement into command-export-refdata-marker; move the completed change to archive. Record slice 5 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "4196425cd87227053a52b3a999e8ca52e372a2bb",
      "tree": "e0fbadfc0f86c6b3e75528c34379ee14219e85b6",
      "parents": [
        "0205dadc593d8a03553e4fb2f97315a576e6519f"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:57:10 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: classify SecMan AppFeat as replay reference data (MA-4)\n\nApplicationFeatureChoices.AppFeat (the permission-feature reference view-model) now implements the RefData marker, so commands whose target or reference parameter is an AppFeat bookmark are recognised as export participants by the existing metamodel-only default classifier, without a prior finder. No new classifier, persistence field, schema, or logical-type change.\n\nTests: extended ReferenceDataContractTest to cover AppFeat. secman applib green under JDK 21; strict OpenSpec validation passes.\n\nImplements slice 5 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0205dadc593d8a03553e4fb2f97315a576e6519f",
      "tree": "4b26c8f342291755eab98af6ed89257d66651894",
      "parents": [
        "2d8fb90b952223bf6833cd917a9ebc39c820b3b5"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:20:48 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4037: archive replay-import idempotency (MA-2)\n\nSync the idempotent-per-interaction-id requirement into command-result-metadata and move the completed change to openspec/changes/archive/2026-08-13-reconcile-replay-import-idempotency/. Record slice 4 as archived.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "2d8fb90b952223bf6833cd917a9ebc39c820b3b5",
      "tree": "6a10303481c369ff3ef17b891aa58ee759abedb0",
      "parents": [
        "a6d86124fd8a23247b13e33c636245798ba1713d"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:20:01 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4037: make replay import idempotent per interaction id (MA-2)\n\nCommandLogEntryRepositoryAbstract.saveForReplay now looks up the DTO\u0027s interaction id and returns the existing entry when present, rather than unconditionally creating a duplicate (the command-log primary key is the interaction id, so a repeated import would otherwise fail persistence). A null/malformed interaction id skips the lookup and creates as before. Fixes both the unified and legacy import paths, which both call saveForReplay; no new query, schema, or persistence-adapter change.\n\nTests: added CommandLogEntryRepositorySaveForReplayTest (existing-returns / first-creates / malformed-skips). commandlog applib green under JDK 21 (157 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 4 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "a6d86124fd8a23247b13e33c636245798ba1713d",
      "tree": "ff3c3520ea0e78cfe66259574c2ac561d9688e03",
      "parents": [
        "f9c5260f077d86e164e6945a0f4d443da8591cca"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 09:13:43 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4037: propose replay-import idempotency (MA-2)\n\nPromote slice 4 of the final reconciliation to the active OpenSpec change: make CommandLogEntryRepositoryAbstract.saveForReplay idempotent per interaction id (return the existing entry rather than creating a duplicate). Proposal validated strict; progress recorded.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f9c5260f077d86e164e6945a0f4d443da8591cca",
      "tree": "0b38504486ccbff94c2bf94870cf7a7abbbfec15",
      "parents": [
        "e04fc2063d9f976d53bdafd8f2d4ed7c1dce6cfe"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 08:55:19 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: archive replay-failure batch continuation (MA-3, MA-13)\n\nSync the flipped bounded-replay failure scenario (now records and continues) into command-replay-background-completion, and the handled-failure recording requirement into replayable-command-projection; move the completed change to openspec/changes/archive/2026-08-13-reconcile-replay-failure-continuation/. Record slice 3 as archived in the programme progress docs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "e04fc2063d9f976d53bdafd8f2d4ed7c1dce6cfe",
      "tree": "f9c15c700a24e1d2b997705a6c54125a74ca8b26",
      "parents": [
        "03f86a66b508b17c52c20cdf79589f122ec78733"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 13 08:54:28 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: replay-failure batch continuation and failure detail (MA-3, MA-13)\n\nA handled replay failure is now recorded in a REQUIRES_NEW transaction and mapped to a successful outcome (Try.mapFailureToSuccess), so a bounded/multiple/next replay continues to the next command instead of halting the whole batch on the first failure. CommandLogEntry.saveAnalysis additionally populates the exception field (not just the failure reason), and onReplayError classifies the reason with a typed prefix (Disabled: for hidden/disabled advisor vetoes, Invalid: for invalid input), matching maintenance.\n\nMaintenance\u0027s queryResultsCache clearing in the replay transaction is intentionally not ported (MA-14 non-issue): main resolves replay lookups directly via findByInteractionId, so there is no replay cache to invalidate.\n\nTests: flipped ReplayableCommandMappingTest failure cases to assert success-with-recorded-analysis; flipped CommandManagerBackgroundReplayTest boundedReplay to continue past a recorded failure; added a typed-prefix (Disabled:) case and CommandLogEntry.saveAnalysis state/reason/exception coverage. commandlog applib green under JDK 21 (154 tests, 0 failures) plus JPA replay integ tests (3, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 3 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "03f86a66b508b17c52c20cdf79589f122ec78733",
      "tree": "50129cf1959f28ef5af08db3ada71ce25d640f92",
      "parents": [
        "5549151e25550941710e824f2f92ab722a574f61"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Tue Aug 11 09:13:30 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4042: propose replay-failure batch continuation (MA-3, MA-13)\n\nPromote slice 3 of the final reconciliation to the active OpenSpec change: record a handled replay failure (state, reason, exception, typed prefix) in a REQUIRES_NEW transaction and map it to a successful outcome so bounded replay continues past it; update the command-replay-background-completion \u0027stop on failure\u0027 scenario accordingly. Proposal validated strict; progress recorded.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5549151e25550941710e824f2f92ab722a574f61",
      "tree": "92565a06f2ba7aaedfb5b21d27926c6c658ae2c3",
      "parents": [
        "6a45452d4dfc8767db39ba8220d833ab42781680"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Tue Aug 11 09:12:48 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4038: archive synthetic collection-navigation replay compatibility (MA-5)\n\nSync the collection id (one_of_) and the identity-based replay-argument requirement into openspec/specs/synthetic-command-navigation, and move the completed change to openspec/changes/archive/2026-08-11-reconcile-synthetic-navigation-replay/. Record slice 2 as archived in the programme progress docs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "6a45452d4dfc8767db39ba8220d833ab42781680",
      "tree": "e73c0d5c568fc57d724f90a4a3543406c91c9420",
      "parents": [
        "24c70bcf8c3e744418a28232ab0101d5f0641546"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Tue Aug 11 09:11:26 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4038: synthetic collection-navigation replay compatibility (MA-5)\n\nGive parented-collection selector actions the stable id \u0027__causeway_navigate_to_one_of_\u003ccollectionId\u003e\u0027 (new COLLECTION_ACTION_ID_PREFIX; scalar-reference id unchanged), so a command recorded on maintenance (v2) resolves on replay instead of throwing \u0027Unknown action\u0027. In CommandExecutorServiceDefault, reconstruct replay arguments for synthetic collection-navigation actions by matching each current action parameter to the recorded DTO parameter by stable id, then friendly name, padding any current parameter absent from the DTO; ordinary actions keep positional binding. Replay therefore tolerates filter columns being added, removed, or reordered between recording and replay.\n\nDeferred as accepted v4 adaptations (recorded in design.md/tasks.md): member-order parameter ordering (G11) — conflicts with the shipped \u0027parameter prompts follow column order\u0027 spec+test; and the extra Where.REFERENCES_PARENT filter exclusion (G9) — both moot for replay given identity-based binding.\n\nTests: updated SyntheticNavigationActionTest for the one_of_ id; added CommandExecutorSyntheticNavigationReplayTest (match-by-id/friendly-name/pad). core/mmtest + core/runtimeservices green under JDK 21 (988 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 2 of the final reconciliation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "24c70bcf8c3e744418a28232ab0101d5f0641546",
      "tree": "443ebdcde0cd915a046ab62a18eb5edb7c3cbab1",
      "parents": [
        "fe211b6e9d300eb2db9596c26d75db596ac63f6e"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Tue Aug 11 08:35:55 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4038: propose synthetic collection-navigation replay compatibility (MA-5)\n\nPromote slice 2 of the final reconciliation to the active OpenSpec change: give parented-collection selector actions the stable \u0027__causeway_navigate_to_one_of_\u003ccollectionId\u003e\u0027 id, reconstruct replay arguments by parameter identity with padding, and fold in the Where.REFERENCES_PARENT hide and member-order parameter derivation. Proposal validated strict; progress recorded.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "fe211b6e9d300eb2db9596c26d75db596ac63f6e",
      "tree": "0d7be32ae8ce5d5b372c4bec3c60214fd00f3e9a",
      "parents": [
        "5ffa8cbb1ae0b10e32054475bac5c100f22123b2"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Mon Aug 10 10:46:46 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-3910: record recommended effort level on remaining slices\n\nAdd a reasoning-effort note to each drafted slice proposal: slices 2 (MA-5) and 3 (MA-3) recommended at \u0027high\u0027 (subtle metamodel/replay semantics); slices 4-10 at \u0027medium\u0027 (mechanical, well-scoped). Update the planned-changes index accordingly.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5ffa8cbb1ae0b10e32054475bac5c100f22123b2",
      "tree": "1bea37205e2d72b5c18862ab37ab544870efbbd1",
      "parents": [
        "0c20603b84f71b4d2af1f61afca214e70a3b0fa7"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Mon Aug 10 10:42:42 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4039: archive mixin domain-event isolation (MA-1)\n\nSync the new mixin-domain-event-isolation capability into openspec/specs/ and move the completed change to openspec/changes/archive/2026-08-10-reconcile-mixin-domain-event-isolation/. Record slice 1 as archived in the final-reconciliation plan and planned-changes index; no active change remains.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0c20603b84f71b4d2af1f61afca214e70a3b0fa7",
      "tree": "df222095eccc6b724dfe56c657c94860abce006e",
      "parents": [
        "b12de5c7b6cfeb69d3b6cef768e2fcd1e60e5e2b"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Mon Aug 10 10:31:13 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-4039: isolate mixin domain-event facets per mixee (MA-1)\n\nForward-port the maintenance-branch fix so a mixin contributed to multiple mixee types with differing @DomainObject domain-event defaults no longer mutates the shared facet on the mixin\u0027s faceted method (last-writer-wins cross-mixee pollution).\n\nSynthesizeDomainEventsForMixinPostProcessor now installs a per-mixee object-type-specific overlay facet on each mixed-in member\u0027s local (layered) facet holder, plus a mixee-specific ActionInvocationFacetForAction for actions; ObjectActionMixedIn routes execution through the local invocation facet when present. Adds createObjectTypeSpecificForMixin to the three domain-event facets and createObjectTypeSpecific to ActionInvocationFacetForAction. Explicit member/mixin-type event types (non-default origin) and the single-mixee path are unchanged.\n\nTests: added a two-mixee action isolation test; updated the property/collection/action annotated-on-mixee-type tests to assert the overlay on the mixed-in member and the shared method left at DEFAULT. core/metamodel + core/mmtest green under JDK 21 (937 tests, 0 failures); strict OpenSpec validation passes.\n\nImplements slice 1 of the final reconciliation (openspec/changes/reconcile-mixin-domain-event-isolation).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "b12de5c7b6cfeb69d3b6cef768e2fcd1e60e5e2b",
      "tree": "4f52429142bc34dad3f050e8df201372fb65cbff",
      "parents": [
        "d6b36370048a1f61be0b4d1160af2f5692197962"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Mon Aug 10 10:26:17 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-3910: note high-effort recommendation for MA-3/MA-5 slices\n\nSlices 2 (synthetic-navigation-replay, MA-5) and 3 (replay-failure-continuation, MA-3) touch subtle metamodel/replay semantics; flag them for \u0027high\u0027 reasoning effort in both proposals and the planned-changes index. Remaining slices are fine at the default effort.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d6b36370048a1f61be0b4d1160af2f5692197962",
      "tree": "059b2ef3171e6bcd4aee9cfdaf961bd3f87d6f7e",
      "parents": [
        "b31f3c311a41fe61db1aeb00fa961d15fe702dc5"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Mon Aug 10 09:54:57 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:15 2026 +0100"
      },
      "message": "CAUSEWAY-3910: plan final maintenance-branch reconciliation and scaffold slices\n\nFreeze the canonical second-wave discrepancy set (MA-1..MA-16) surfaced by the second/third/fourth opinions and the two meta-analyses, re-anchored to current HEAD after the PR #3697 (CAUSEWAY-4044) merge that post-dated the audits, with product decisions D-A..D-D recorded.\n\n- final-reconciliation-plan.md: master plan, discrepancy set, decisions, 10-slice child-change sequence, non-issues\n- reconcile-mixin-domain-event-isolation: active OpenSpec change for MA-1 (mixin domain-event facet isolation)\n- planned-changes/: ready-to-promote drafts for slices 2-10 (kept outside openspec/changes/ to honour the one-active-change rule)\n- programme README and ledger updated to reference the plan and the second wave\n\nAll changes pass \u0027openspec validate --strict\u0027.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "b31f3c311a41fe61db1aeb00fa961d15fe702dc5",
      "tree": "9696a0365846332a24ac034ea5b0d8babc784725",
      "parents": [
        "d6d8ad378e5b3c553a1e00a5bc21984b93a6e23b"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Sun Aug 09 09:10:54 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "commits various analyses\n"
    },
    {
      "commit": "d6d8ad378e5b3c553a1e00a5bc21984b93a6e23b",
      "tree": "2fa3ebfe2fed2903b266aa152b814c220b3f1a19",
      "parents": [
        "0229d4bfec47f880394bbc95a57b7575b38a748e"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 11:03:12 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-4002: add independent second-opinion reconciliation audit\n\nRecords a fresh \"second pair of eyes\" review of the maintenance-branch\nforward-port into main. Finds 4 behavioural gaps (mixin domain-event\nisolation CAUSEWAY-4039 tail; saveForReplay idempotency CAUSEWAY-4037;\nreplay-failure batch handling and AppFeat RefData opt-in CAUSEWAY-4042)\nplus 2 likely-intentional divergences; everything else faithfully ported.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0229d4bfec47f880394bbc95a57b7575b38a748e",
      "tree": "4f479c19a39d2a8398ab70a1350941fa71a99c50",
      "parents": [
        "a782169d70ece00d62b73b2074872cfbe21ae280"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 08:49:17 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-4002: record completed lifecycle reconciliation\n"
    },
    {
      "commit": "a782169d70ece00d62b73b2074872cfbe21ae280",
      "tree": "1ffcfe678ba7d698ab76725276e8784a8ff1286f",
      "parents": [
        "563b73de1f91a1dd3c88a7b008dffcf967af752d"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 08:48:50 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-4002: archive lifecycle-safe service selection\n"
    },
    {
      "commit": "563b73de1f91a1dd3c88a7b008dffcf967af752d",
      "tree": "60872227f1fafeb3d5ede50da6d196c7d421a55d",
      "parents": [
        "b70959c20bfa97fe15685a9c8b107ac8686bca09"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 08:47:14 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-4002: make service selection lifecycle-safe\n"
    },
    {
      "commit": "b70959c20bfa97fe15685a9c8b107ac8686bca09",
      "tree": "517559e7d99dcb353bce03c36b0e88c09e5dcb97",
      "parents": [
        "ef20a6177ffe3f625bfb3d7cf9ce593faa0e0b6d"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 07:43:52 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-4002: propose lifecycle-safe service selection\n"
    },
    {
      "commit": "ef20a6177ffe3f625bfb3d7cf9ce593faa0e0b6d",
      "tree": "e0249e06b8f123ce7d7bf8d5b381354410899d27",
      "parents": [
        "81f32b9ede941307247769513f92063337e865f6"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 07:15:46 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: record completed background gate reconciliation\n"
    },
    {
      "commit": "81f32b9ede941307247769513f92063337e865f6",
      "tree": "e9baafa7f2f905cecd31b4a6371cd49905a7ced2",
      "parents": [
        "565e74b02f57105ffa39a85f3b01088d911da383"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 07:10:21 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: archive command background gates\n"
    },
    {
      "commit": "565e74b02f57105ffa39a85f3b01088d911da383",
      "tree": "efd8e3631b98af921c518c50f81cb53f7c39b311",
      "parents": [
        "4e1c293b3941fcd8913445ceca36706487c06f0d"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 07 07:07:03 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: implement command background gates\n"
    },
    {
      "commit": "4e1c293b3941fcd8913445ceca36706487c06f0d",
      "tree": "2b55cfb86f3202d294474c3259b0c43382499a2c",
      "parents": [
        "7fc72f238df28db206fdb0984547a6976153477f"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 17:36:21 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: propose command background gates\n"
    },
    {
      "commit": "7fc72f238df28db206fdb0984547a6976153477f",
      "tree": "48b969b43ee0f2461b9f5b670f3eae26b9997786",
      "parents": [
        "d7584734ed0620ad6bc6420bc4504bdb24442522"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 17:31:55 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: record completed manager workflow reconciliation\n"
    },
    {
      "commit": "d7584734ed0620ad6bc6420bc4504bdb24442522",
      "tree": "b1abc4d565215f1d2003ecb84b83c44f55cdeaef",
      "parents": [
        "c4b78e3109e5991c353ebf1f524b7f8737586620"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 15:04:42 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: archive command manager workflows\n"
    },
    {
      "commit": "c4b78e3109e5991c353ebf1f524b7f8737586620",
      "tree": "8e8dd631c78c21a50632e9922b8c1de4124b41fe",
      "parents": [
        "db379d115b9ea7abadfaf46fbc9db6b65989ffc2"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 14:41:25 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: implement command manager workflows\n"
    },
    {
      "commit": "db379d115b9ea7abadfaf46fbc9db6b65989ffc2",
      "tree": "3cfb2fdfec4e820600cdd9760f0accede6487b0d",
      "parents": [
        "f0dd44d7b01e603ba499981f7a3056d4b0c70804"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 13:26:04 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: propose command manager workflows\n"
    },
    {
      "commit": "f0dd44d7b01e603ba499981f7a3056d4b0c70804",
      "tree": "15276165fbacb65f4ef826de976fc165c012c5e0",
      "parents": [
        "5e6bc08460d0f1fb998b2f91130e0e25290d3d87"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 13:18:09 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: record completed export import reconciliation\n"
    },
    {
      "commit": "5e6bc08460d0f1fb998b2f91130e0e25290d3d87",
      "tree": "1af29721a543380447892e527f64baea2c9cac08",
      "parents": [
        "bf8e0fea88a5c31092af00317831515775620568"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:52:48 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: archive command export and import spec\n"
    },
    {
      "commit": "bf8e0fea88a5c31092af00317831515775620568",
      "tree": "e58737ed0049d2e6f2ae59b00e80a1a50e60ab48",
      "parents": [
        "c6fffbba0ac9b05d90a2ee66d3bed4f3f6eb4625"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:51:11 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3923: reconcile command export and import\n"
    },
    {
      "commit": "c6fffbba0ac9b05d90a2ee66d3bed4f3f6eb4625",
      "tree": "2e4232a4ddfeff603fd4b1191a0d1c8ed5a0ff20",
      "parents": [
        "b0c14ff52974fa10f17bcdf2e610bb97d206900c"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:29:15 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: propose command export import reconciliation\n"
    },
    {
      "commit": "b0c14ff52974fa10f17bcdf2e610bb97d206900c",
      "tree": "e92d374f96b14c52ec54d474c9b3bf7c1c0ab276",
      "parents": [
        "e0c24217da811d52f8c642ea5494fb5d063861b9"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:24:37 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: update reconciliation ledger for R2\n"
    },
    {
      "commit": "e0c24217da811d52f8c642ea5494fb5d063861b9",
      "tree": "486544afe99259dbca17edbcee598e4efeeac2e4",
      "parents": [
        "cbdd0a740810594b6cd163a5502f08d003b792c3"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:24:09 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: archive command export reachability reconciliation\n"
    },
    {
      "commit": "cbdd0a740810594b6cd163a5502f08d003b792c3",
      "tree": "c04bf52f063f5d35b544fbeeab23546f23d95d01",
      "parents": [
        "e7f2810ab249fb4e38223293e3b8fee22f04b2a6"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 12:14:00 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: reconcile command export reachability\n"
    },
    {
      "commit": "e7f2810ab249fb4e38223293e3b8fee22f04b2a6",
      "tree": "040dab38367c6ac033279f529c1bcef376bba730",
      "parents": [
        "11eb4e0ae0f8f6190090f0cde3586d1535bb8749"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 10:32:58 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: propose command export reachability reconciliation\n"
    },
    {
      "commit": "11eb4e0ae0f8f6190090f0cde3586d1535bb8749",
      "tree": "a390835a19b61fbc170ff517154b1dd14b3ad946",
      "parents": [
        "e5574a3ff2f94e9f04051fcac8252c8df798a5a0"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 10:21:16 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:14 2026 +0100"
      },
      "message": "CAUSEWAY-3910: update reconciliation ledger for R1\n"
    },
    {
      "commit": "e5574a3ff2f94e9f04051fcac8252c8df798a5a0",
      "tree": "7e98427fabcf633f8a75d99194f6eb7d9000f7b4",
      "parents": [
        "cd50544b6385a1ce1d68bc09d8552d3c1f22f213"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 10:00:56 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:13 2026 +0100"
      },
      "message": "CAUSEWAY-3910: archive command reference data reconciliation\n"
    },
    {
      "commit": "cd50544b6385a1ce1d68bc09d8552d3c1f22f213",
      "tree": "ed909d917a1ac1527d8eb18d0e5435ca8a8b1df1",
      "parents": [
        "d72bf3bd6c65c9bab9aeed8dbe5ec4013cb013b5"
      ],
      "author": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Thu Aug 06 09:59:38 2026 +0100"
      },
      "committer": {
        "name": "Dan Haywood",
        "email": "dan@haywood-associates.co.uk",
        "time": "Fri Aug 14 08:53:13 2026 +0100"
      },
      "message": "CAUSEWAY-3910: reconcile command reference data\n"
    },
    {
      "commit": "d72bf3bd6c65c9bab9aeed8dbe5ec4013cb013b5",
      "tree": "2d4563119a53d69dc74b0e7afc718301b538788b",
      "parents": [
        "bd9966de78f9046369f7fb866b31092495e76840"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 17:18:27 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 17:18:27 2026 +0200"
      },
      "message": "CAUSEWAY-4044: wrong semantic in prev commit"
    },
    {
      "commit": "bd9966de78f9046369f7fb866b31092495e76840",
      "tree": "a63b436ff5af745b7ae30ade917d7c1941e10c64",
      "parents": [
        "ab4d5f9d2e2319f8c8f81224ac44f9150509b8fd"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 12:53:05 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 12:53:05 2026 +0200"
      },
      "message": "CAUSEWAY-4044: dev notes"
    },
    {
      "commit": "ab4d5f9d2e2319f8c8f81224ac44f9150509b8fd",
      "tree": "8a6ba3008043cdd743e1fcce772f94b7fdbfa95f",
      "parents": [
        "2ec081466ea28bb2cb344b18540d13082779010b"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 07:34:16 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Thu Aug 13 07:34:16 2026 +0200"
      },
      "message": "CAUSEWAY-4047: revert Wicket to last known good version (10.9.1)\n\nit appears newest version breaks select2"
    },
    {
      "commit": "2ec081466ea28bb2cb344b18540d13082779010b",
      "tree": "13993e55bbe543026634995ac733d3f12a4ae96f",
      "parents": [
        "30cc76df4adfbe59668ed70c6ee126a15961d0ab"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Wed Aug 12 15:31:48 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Wed Aug 12 15:31:48 2026 +0200"
      },
      "message": "CAUSEWAY-4047: work around wicket issue: don\u0027t use proxies\n\nhowever this could break serialization in certain cases\n\nas we have our own ServiceInjector, that works perfectly well we might\neven remove the wicket component injection support"
    },
    {
      "commit": "30cc76df4adfbe59668ed70c6ee126a15961d0ab",
      "tree": "8e6ae18d9b4dd8f5384099cc433fffa98b24ee35",
      "parents": [
        "d688ace2f43d541689c6c2cb667bb17d61da5671"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:37:42 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:37:42 2026 +0200"
      },
      "message": "Bumps Wicket 10.9.1 -\u003e 10.10.0"
    },
    {
      "commit": "d688ace2f43d541689c6c2cb667bb17d61da5671",
      "tree": "c12d987df740a9a2314bd6ce4c33cc738051d7b5",
      "parents": [
        "3c8e700e8f5f0b7ad6dee62eba6970307b92a496",
        "8aeb9915c7f0687c8daa49c577c6dc29aec59b9f"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:10:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:10:15 2026 +0200"
      },
      "message": "Merge pull request #3712 from apache/dependabot/maven/main/org.wicketstuff-wicketstuff-select2-10.10.0\n\nBump org.wicketstuff:wicketstuff-select2 from 10.9.2 to 10.10.0"
    },
    {
      "commit": "3c8e700e8f5f0b7ad6dee62eba6970307b92a496",
      "tree": "255f10c790027d1e5d0a5d31304e822d6c88a10f",
      "parents": [
        "571b56bd35a5d703665bb153fbeb9d3593ce1dec",
        "23b8d8f841d19fc57124b8e7f319bebf7c833c51"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:09:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:09:12 2026 +0200"
      },
      "message": "Merge pull request #3711 from apache/dependabot/maven/main/com.icegreen-greenmail-junit5-2.1.12\n\nBump com.icegreen:greenmail-junit5 from 2.1.11 to 2.1.12"
    },
    {
      "commit": "571b56bd35a5d703665bb153fbeb9d3593ce1dec",
      "tree": "b77998e460a046e9b947f9ff32b50da37c37332d",
      "parents": [
        "6e3f8523889923607ab9262a574234583ee5b376",
        "6b9c959b6816e2198bd34bc80b82a4a9a21a84ed"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:07:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:07:47 2026 +0200"
      },
      "message": "Merge pull request #3708 from apache/dependabot/maven/main/org.jboss.resteasy-resteasy-client-7.0.3.Final\n\nBump org.jboss.resteasy:resteasy-client from 7.0.2.Final to 7.0.3.Final"
    },
    {
      "commit": "6e3f8523889923607ab9262a574234583ee5b376",
      "tree": "6ce45cadc87af5ff4e1e9a623c9f97d261428a49",
      "parents": [
        "418718f40990cd1e31abded5068f94be24f4dfeb",
        "91ff1aee996cc1c340dcc94d7c42a5e97d80619a"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:06:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:06:44 2026 +0200"
      },
      "message": "Merge pull request #3709 from apache/dependabot/maven/main/com.fasterxml.woodstox-woodstox-core-7.2.2\n\nBump com.fasterxml.woodstox:woodstox-core from 7.2.1 to 7.2.2"
    },
    {
      "commit": "418718f40990cd1e31abded5068f94be24f4dfeb",
      "tree": "446c81d6cfbbf7ac7d6ee42321ace637b9a6443d",
      "parents": [
        "9ed1b4e6741b412202198fdd467bfd180a51696a",
        "3189dedb9b1d33b4a2bc67c19a996dac43eaab5e"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:05:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:05:26 2026 +0200"
      },
      "message": "Merge pull request #3705 from apache/dependabot/maven/main/archunit.version-1.5.0\n\nBump archunit.version from 1.4.2 to 1.5.0"
    },
    {
      "commit": "9ed1b4e6741b412202198fdd467bfd180a51696a",
      "tree": "ca00360dc4ad64569256062f34a0e014ad95028b",
      "parents": [
        "452cd7a275b40fee0429dda7f3fa1a9996c59168",
        "192ab988cca540c02997dc86f46eec2a0c90a785"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:03:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:03:33 2026 +0200"
      },
      "message": "Merge pull request #3704 from apache/dependabot/maven/main/io.cucumber-messages-34.2.1\n\nBump io.cucumber:messages from 34.2.0 to 34.2.1"
    },
    {
      "commit": "452cd7a275b40fee0429dda7f3fa1a9996c59168",
      "tree": "e94e6b35122b5424f0e4fe0657a6082bd74c2e46",
      "parents": [
        "02e4dbacc1f376f40f60a16415ef84b39f0d6dd8",
        "6c9bb61c6d44271812267b05c0a40d5f3bd00268"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:02:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:02:47 2026 +0200"
      },
      "message": "Merge pull request #3714 from apache/dependabot/maven/main/org.owasp-dependency-check-maven-13.0.0\n\nBump org.owasp:dependency-check-maven from 12.2.2 to 13.0.0"
    },
    {
      "commit": "02e4dbacc1f376f40f60a16415ef84b39f0d6dd8",
      "tree": "d16825cf8bec7c53667f9f1ba8755afff8b6583d",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0",
        "8de9e2af056a2f74ffc6abf8d603b89a3626fb9a"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Mon Aug 10 17:02:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 17:02:17 2026 +0200"
      },
      "message": "Merge pull request #3710 from apache/dependabot/maven/main/io.swagger.core.v3-swagger-core-2.2.53\n\nBump io.swagger.core.v3:swagger-core from 2.2.52 to 2.2.53"
    },
    {
      "commit": "6c9bb61c6d44271812267b05c0a40d5f3bd00268",
      "tree": "42ead7d8111e46228fadf947ec9d38be71dded69",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:27:50 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:27:50 2026 +0000"
      },
      "message": "Bump org.owasp:dependency-check-maven from 12.2.2 to 13.0.0\n\nBumps [org.owasp:dependency-check-maven](https://github.com/dependency-check/DependencyCheck) from 12.2.2 to 13.0.0.\n- [Release notes](https://github.com/dependency-check/DependencyCheck/releases)\n- [Changelog](https://github.com/dependency-check/DependencyCheck/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/dependency-check/DependencyCheck/compare/v12.2.2...v13.0.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.owasp:dependency-check-maven\n  dependency-version: 13.0.0\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8aeb9915c7f0687c8daa49c577c6dc29aec59b9f",
      "tree": "8348b9cc5001a0f169040e0b1388c4854475d9d6",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:27:27 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:27:27 2026 +0000"
      },
      "message": "Bump org.wicketstuff:wicketstuff-select2 from 10.9.2 to 10.10.0\n\nBumps org.wicketstuff:wicketstuff-select2 from 10.9.2 to 10.10.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.wicketstuff:wicketstuff-select2\n  dependency-version: 10.10.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "23b8d8f841d19fc57124b8e7f319bebf7c833c51",
      "tree": "bfb4e957511b5979528aed506091f2eac7a8e310",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:26:12 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:26:12 2026 +0000"
      },
      "message": "Bump com.icegreen:greenmail-junit5 from 2.1.11 to 2.1.12\n\nBumps [com.icegreen:greenmail-junit5](https://github.com/greenmail-mail-test/greenmail) from 2.1.11 to 2.1.12.\n- [Release notes](https://github.com/greenmail-mail-test/greenmail/releases)\n- [Commits](https://github.com/greenmail-mail-test/greenmail/compare/release-2.1.11...release-2.1.12)\n\n---\nupdated-dependencies:\n- dependency-name: com.icegreen:greenmail-junit5\n  dependency-version: 2.1.12\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8de9e2af056a2f74ffc6abf8d603b89a3626fb9a",
      "tree": "d16825cf8bec7c53667f9f1ba8755afff8b6583d",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:25:34 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:25:34 2026 +0000"
      },
      "message": "Bump io.swagger.core.v3:swagger-core from 2.2.52 to 2.2.53\n\nBumps [io.swagger.core.v3:swagger-core](https://github.com/swagger-api/swagger-core) from 2.2.52 to 2.2.53.\n- [Release notes](https://github.com/swagger-api/swagger-core/releases)\n- [Commits](https://github.com/swagger-api/swagger-core/compare/v2.2.52...v2.2.53)\n\n---\nupdated-dependencies:\n- dependency-name: io.swagger.core.v3:swagger-core\n  dependency-version: 2.2.53\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "91ff1aee996cc1c340dcc94d7c42a5e97d80619a",
      "tree": "e3a468ac93481c70f35cdbacdcd77a46024807ca",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:25:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:25:28 2026 +0000"
      },
      "message": "Bump com.fasterxml.woodstox:woodstox-core from 7.2.1 to 7.2.2\n\nBumps [com.fasterxml.woodstox:woodstox-core](https://github.com/FasterXML/woodstox) from 7.2.1 to 7.2.2.\n- [Commits](https://github.com/FasterXML/woodstox/compare/woodstox-core-7.2.1...woodstox-core-7.2.2)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.woodstox:woodstox-core\n  dependency-version: 7.2.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6b9c959b6816e2198bd34bc80b82a4a9a21a84ed",
      "tree": "9ae20ec5a4e9e0ffd62b953f1f76bccdc7c9c96b",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:25:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:25:09 2026 +0000"
      },
      "message": "Bump org.jboss.resteasy:resteasy-client from 7.0.2.Final to 7.0.3.Final\n\nBumps [org.jboss.resteasy:resteasy-client](https://github.com/resteasy/resteasy) from 7.0.2.Final to 7.0.3.Final.\n- [Release notes](https://github.com/resteasy/resteasy/releases)\n- [Commits](https://github.com/resteasy/resteasy/compare/v7.0.2.Final...v7.0.3.Final)\n\n---\nupdated-dependencies:\n- dependency-name: org.jboss.resteasy:resteasy-client\n  dependency-version: 7.0.3.Final\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3189dedb9b1d33b4a2bc67c19a996dac43eaab5e",
      "tree": "b6ab550f10daaba3645c9d5a3182c4a521c9a452",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:23:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:23:51 2026 +0000"
      },
      "message": "Bump archunit.version from 1.4.2 to 1.5.0\n\nBumps `archunit.version` from 1.4.2 to 1.5.0.\n\nUpdates `com.tngtech.archunit:archunit-junit5-api` from 1.4.2 to 1.5.0\n- [Release notes](https://github.com/TNG/ArchUnit/releases)\n- [Commits](https://github.com/TNG/ArchUnit/compare/v1.4.2...v1.5.0)\n\nUpdates `com.tngtech.archunit:archunit-junit5-engine` from 1.4.2 to 1.5.0\n- [Release notes](https://github.com/TNG/ArchUnit/releases)\n- [Commits](https://github.com/TNG/ArchUnit/compare/v1.4.2...v1.5.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.tngtech.archunit:archunit-junit5-api\n  dependency-version: 1.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: com.tngtech.archunit:archunit-junit5-engine\n  dependency-version: 1.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "192ab988cca540c02997dc86f46eec2a0c90a785",
      "tree": "62553dca14e9c0e0a65e882af9656c999e5c88a6",
      "parents": [
        "f4ef5b6786197b664ecd207fc367f74adffecfe0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 03:23:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 10 03:23:40 2026 +0000"
      },
      "message": "Bump io.cucumber:messages from 34.2.0 to 34.2.1\n\nBumps [io.cucumber:messages](https://github.com/cucumber/messages) from 34.2.0 to 34.2.1.\n- [Release notes](https://github.com/cucumber/messages/releases)\n- [Changelog](https://github.com/cucumber/messages/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/cucumber/messages/compare/v34.2.0...v34.2.1)\n\n---\nupdated-dependencies:\n- dependency-name: io.cucumber:messages\n  dependency-version: 34.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "f4ef5b6786197b664ecd207fc367f74adffecfe0",
      "tree": "116a25be1cd149bbf919d53f22646bbc3c0362ec",
      "parents": [
        "a8b226d0f189aae246db290e703d648900be0537"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 11:05:59 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 11:05:59 2026 +0200"
      },
      "message": "CAUSEWAY-4044: fixes NavigableParentFacet to not trigger full\nintrospection of members\n\nalso fail hard if we detect fully introspected domain types after the\nmixins were introspected, because thats too early"
    },
    {
      "commit": "a8b226d0f189aae246db290e703d648900be0537",
      "tree": "947bd1932510506a464a309275f109f6cc01e8d6",
      "parents": [
        "7aee78e773c6002a25513d4d582beef30cf98702"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 09:17:18 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 09:55:32 2026 +0200"
      },
      "message": "CAUSEWAY-4046: [Programming Model] Multi-arg Constructor Support for\nMixins\n\nTask-Url: https://issues.apache.org/jira/browse/CAUSEWAY-4046"
    },
    {
      "commit": "7aee78e773c6002a25513d4d582beef30cf98702",
      "tree": "bd53df73e3b748c1a8c7bd916cc2af2f13e2e81e",
      "parents": [
        "0829403a9131e23376a40f664f4930fcaf2a3cbb"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 06:14:50 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sun Aug 09 06:14:50 2026 +0200"
      },
      "message": "CAUSEWAY-4044: facet processor cosmetics"
    },
    {
      "commit": "0829403a9131e23376a40f664f4930fcaf2a3cbb",
      "tree": "e9ebb7d9515b309af084841f4c868f9be8f35e65",
      "parents": [
        "711ba7edd4093a01b243575376831fd3b0288742"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 18:44:59 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 18:44:59 2026 +0200"
      },
      "message": "CAUSEWAY-4044: cleanup facetprocessor contexts"
    },
    {
      "commit": "711ba7edd4093a01b243575376831fd3b0288742",
      "tree": "dc10937cff5a3ca131860384871d34bdf2c865d2",
      "parents": [
        "851a717375463b141a0a1bb3d6f31a24d9c25b97"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 16:36:08 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 16:36:08 2026 +0200"
      },
      "message": "CAUSEWAY-4044: restores to original\nSpecificationLoader#loadSpecification(Class) functionality\n\nThat is fully introspect if not already.\nDuring mm introspection facet factories / post processors use a\ndifferent method to not trigger full introspection"
    },
    {
      "commit": "851a717375463b141a0a1bb3d6f31a24d9c25b97",
      "tree": "7ee3a3ffafa48092d7e4a927cb03308dd7ce8fb8",
      "parents": [
        "094c5bd42a69a448707ad18a9abc9fa2bfcc9a1a",
        "1562afa333bed2fffd8ced31f5d87dbce354ada2"
      ],
      "author": {
        "name": "Andi Huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 15:12:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 08 15:12:49 2026 +0200"
      },
      "message": "Merge pull request #3697 from apache/4044-stable.objspec\n\nCAUSEWAY-4044: Work towards immutable ObjectSpecification - part 1 of more to come"
    },
    {
      "commit": "1562afa333bed2fffd8ced31f5d87dbce354ada2",
      "tree": "7ee3a3ffafa48092d7e4a927cb03308dd7ce8fb8",
      "parents": [
        "cb20d8e8dab503dea949f12c150309b4c59a5d21"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 13:37:05 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 13:37:05 2026 +0200"
      },
      "message": "CAUSEWAY-4044: review"
    },
    {
      "commit": "cb20d8e8dab503dea949f12c150309b4c59a5d21",
      "tree": "7e9b24c9c47675caff8909fbc997dcd954b87ece",
      "parents": [
        "5b8251bfb8e3bad702c4499d0fbbb4e338b90a8c"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 12:53:31 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 12:53:31 2026 +0200"
      },
      "message": "CAUSEWAY-4044: preparing merge 2"
    },
    {
      "commit": "5b8251bfb8e3bad702c4499d0fbbb4e338b90a8c",
      "tree": "5c900895ee0751ffbf6622d890f3ddac0c1369d6",
      "parents": [
        "05874a320f81492e93a6408b86044061965e2f4d"
      ],
      "author": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 12:00:05 2026 +0200"
      },
      "committer": {
        "name": "andi-huber",
        "email": "ahuber@apache.org",
        "time": "Sat Aug 08 12:00:05 2026 +0200"
      },
      "message": "CAUSEWAY-4044: preparing merge"
    }
  ],
  "next": "05874a320f81492e93a6408b86044061965e2f4d"
}
