)]}'
{
  "commit": "3f3565cba8856ace2978f05a9ceeb3e2bdb3dbac",
  "tree": "34cc80fa2bac2ffcd175fb44f49c84bd466b02f3",
  "parents": [
    "e3cc24a756b59c4ed6685c2c52bc480630c5bfb3"
  ],
  "author": {
    "name": "Guillaume Nodet",
    "email": "gnodet@gmail.com",
    "time": "Thu Aug 06 23:45:41 2026 +0200"
  },
  "committer": {
    "name": "Guillaume Nodet",
    "email": "gnodet@gmail.com",
    "time": "Thu Aug 06 23:45:41 2026 +0200"
  },
  "message": "Add Log.child(), Log.problem(), and injection-point-aware DI factory\n\n- Injector.bindFactory(Class, Function\u003cKey, T\u003e): factory-based binding\n  that receives the full injection-point Key (including @Named qualifier),\n  enabling qualifier-derived instances like hierarchical logger names.\n\n- Log.child(String): returns a child logger with hierarchical naming\n  (e.g. \"compiler:compile\" → \"compiler:compile.diagnostics\"), useful\n  when plugins delegate to sub-components that need independently\n  filterable log output.\n\n- Log.problem(BuilderProblem): reports a structured problem to the\n  diagnostic collector with dedup key, suggestion, and documentation\n  URL, while also logging at the appropriate level. Uses a thread-local\n  flag to prevent double-counting by BuildReportCollector\u0027s WARN\n  auto-promotion.\n\n- DefaultMavenPluginManager: switched from bindInstance to bindFactory\n  for Log injection, so @Inject @Named(\"diagnostics\") Log in a\n  DI-managed plugin component gets \"compiler:compile.diagnostics\".\n\n- Fixed pre-existing bug: DefaultLog.warn(Supplier, Throwable) was\n  calling logger.info() instead of logger.warn().\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "50627efd86e3a1024f22125e913a9af540b2ad1e",
      "old_mode": 33188,
      "old_path": "api/maven-api-core/src/main/java/org/apache/maven/api/plugin/Log.java",
      "new_id": "8b12b23abbbe6df05527158086dbe168fb6600a1",
      "new_mode": 33188,
      "new_path": "api/maven-api-core/src/main/java/org/apache/maven/api/plugin/Log.java"
    },
    {
      "type": "modify",
      "old_id": "6d85b8393e3fb4b70377f14618d109a37db4e856",
      "old_mode": 33188,
      "old_path": "impl/maven-core/src/main/java/org/apache/maven/internal/build/BuildReportCollector.java",
      "new_id": "598a3a12c6c49e1a01fae9d4dd8e6a5c549e9471",
      "new_mode": 33188,
      "new_path": "impl/maven-core/src/main/java/org/apache/maven/internal/build/BuildReportCollector.java"
    },
    {
      "type": "modify",
      "old_id": "1a11fe46fdb522ba59399fd629206cabaa7db906",
      "old_mode": 33188,
      "old_path": "impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLog.java",
      "new_id": "a81089d8078d1fa1cf1f7cbf3dad1580bc6ed7b8",
      "new_mode": 33188,
      "new_path": "impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLog.java"
    },
    {
      "type": "modify",
      "old_id": "a95cf34fff83e3e6e0eebf0f36da6960c5b7aa0a",
      "old_mode": 33188,
      "old_path": "impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java",
      "new_id": "24038a343796b5cb64717f505d492da147ca0b3c",
      "new_mode": 33188,
      "new_path": "impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1209c70e648626c31bd73a4f0c97e1b6771e2a11",
      "new_mode": 33188,
      "new_path": "impl/maven-core/src/test/java/org/apache/maven/internal/impl/DefaultLogTest.java"
    },
    {
      "type": "modify",
      "old_id": "270ea6947c4502a021ebae11f39f50271c8f493c",
      "old_mode": 33188,
      "old_path": "impl/maven-di/src/main/java/org/apache/maven/di/Injector.java",
      "new_id": "57d1d99c52aed317eb6b75312f828f8125de5af4",
      "new_mode": 33188,
      "new_path": "impl/maven-di/src/main/java/org/apache/maven/di/Injector.java"
    },
    {
      "type": "modify",
      "old_id": "0b26a22570ec9022956c24b88a67680c2ecc01b5",
      "old_mode": 33188,
      "old_path": "impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java",
      "new_id": "44c238cd54e053944e71243df9217c9bf9b25314",
      "new_mode": 33188,
      "new_path": "impl/maven-di/src/main/java/org/apache/maven/di/impl/InjectorImpl.java"
    },
    {
      "type": "modify",
      "old_id": "46ea1b331818e738de429f3ccd1461c6cd254761",
      "old_mode": 33188,
      "old_path": "impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java",
      "new_id": "32a886624a3adc66eb0d734d8720fe9740e06544",
      "new_mode": 33188,
      "new_path": "impl/maven-di/src/test/java/org/apache/maven/di/impl/InjectorImplTest.java"
    }
  ]
}
