)]}'
{
  "commit": "de92f242c6505fedf148b1c455f58f7b49043ff4",
  "tree": "2aa3522db590c567c6d8a5a084fd63e8e15ff082",
  "parents": [
    "9ed07e33051696b29302015e823ea8f697e7b160"
  ],
  "author": {
    "name": "twerth CA",
    "email": "twerth@google.com",
    "time": "Fri Aug 28 06:48:21 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Aug 28 06:50:52 2026 -0700"
  },
  "message": "Fix IllegalStateException in ActionArtifactCycleReporter for ArtifactNestedSetKey.\n\nFixes https://github.com/bazelbuild/bazel/issues/17573\n\n`ActionArtifactCycleReporter` includes `ARTIFACT_NESTED_SET` in `ACTION_OR_ARTIFACT_OR_TRANSITIVE_RDEP` so that action-artifact cycles involving depset inputs are detected. However, `prettyPrint` and `getLabel` did not support `ArtifactNestedSetKey`, causing Bazel to crash with an unhandled `IllegalStateException` (\"Argument is not Action, TargetCompletion, AspectCompletion, or TestCompletion: ArtifactNestedSetKey\") instead of presenting an actionable dependency cycle error to the user.\n\nWith this change, cycles involving `ArtifactNestedSetKey` are reported cleanly without crashing. When an artifact nested set appears at the root of a cycle, the error message lists the constituent file paths:\n\n```\nin \u003crule\u003e rule \u003ctarget\u003e: cycle in dependency graph:\n.-\u003e files: foo, bar\n|   file: foo\n|   file: goo\n`-- files: foo, bar\n```\n\nIntermediate nested set nodes continue to be omitted from the cycle path to keep the output concise and focused on actionable targets and artifacts.\n\nPiperOrigin-RevId: 972562063\nChange-Id: I7215e6b8e7dc9de6d866896f40004880fcea5934\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "105079ac758eb6da27ce026877b22285c4d49fd1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java",
      "new_id": "3b05e5d6ec429fa16b6cb4ae332e75de77dd570e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionArtifactCycleReporter.java"
    },
    {
      "type": "modify",
      "old_id": "840d5efa77de6789d5cae3bf68b7336d1c83b1a4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD",
      "new_id": "2bf22fa362220d61d5adb92958e16be830e0a93f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD"
    },
    {
      "type": "modify",
      "old_id": "52177a9ec18028a6d4f3805b9c4f97dbd80ec5cb",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/BUILD",
      "new_id": "e513dba407617fb2bf60303472b29f506780f074",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/BUILD"
    },
    {
      "type": "modify",
      "old_id": "a72202a2249366b15113dfcaf3dc12bbe1631cbc",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java",
      "new_id": "2d60c85b71f00f091cae8fc1ba3ad4d4ea88ba8c",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java"
    }
  ]
}
