)]}'
{
  "commit": "c8071bad73aa1e66aefcdaa4afffefc262afed27",
  "tree": "f814ca991da7b60fd4d6c283a039dbc5e583932f",
  "parents": [
    "8ce0aeb037fd5a45e93dd815e5e13263e77e5be7"
  ],
  "author": {
    "name": "Robert Lazarski",
    "email": "robertlazarski@gmail.com",
    "time": "Wed Jun 10 03:58:00 2026 -1000"
  },
  "committer": {
    "name": "Robert Lazarski",
    "email": "robertlazarski@gmail.com",
    "time": "Wed Jun 10 03:58:00 2026 -1000"
  },
  "message": "Address RAMPART-427 review: document init trade-off, guard config parsing\n\nFollow-up to the Gemini review of the RAMPART-427 fix (both findings are\npre-existing in RampartMessageData, not introduced by the race fix):\n\n- Document the performance-vs-correctness trade-off of running the WSS4J /\n  Santuario / OpenSAML one-time initialisers in the per-message constructor: the\n  calls are idempotent guards kept there to avoid the OpenSAML-5-migration\n  unmarshallerFactory ordering bug; moving them to a once-per-lifecycle init is a\n  separate, riskier change. No behaviour change.\n- Wrap the timestampTTL / timestampMaxSkew Integer.parseInt calls so a non-numeric\n  RampartConfig value throws a clear RampartException naming the offending\n  parameter and value, instead of an unhandled NumberFormatException. Adds the\n  invalidRampartConfigValue message.\n\n(The reviewer\u0027s third, JUnit-version, note is skipped to stay consistent with the\nexisting test suite style.) Verified with a full clean -Papache-release verify\nacross all modules including the nine policy samples on JDK 25.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8ba45a90149be209cea8cd7b62bae0d315820218",
      "old_mode": 33188,
      "old_path": "modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java",
      "new_id": "66ea13acf79371f7776a21ea623e726e9b91ac62",
      "new_mode": 33188,
      "new_path": "modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java"
    },
    {
      "type": "modify",
      "old_id": "cf5ed2b4fc978c5453fcc76a9c0dd5c13ce4a281",
      "old_mode": 33188,
      "old_path": "modules/rampart-core/src/main/resources/org/apache/rampart/errors.properties",
      "new_id": "b4df6ed275c385aae8747eeaf66ed5e011a3d36f",
      "new_mode": 33188,
      "new_path": "modules/rampart-core/src/main/resources/org/apache/rampart/errors.properties"
    }
  ]
}
