)]}'
{
  "commit": "09f9ddc170c95ccaa41c05aa4ded60d7da01df15",
  "tree": "ae56031f859e5c0181e4893d68d792c908467919",
  "parents": [
    "0ef852326e5ca58a232982b65786dba63528ff8c"
  ],
  "author": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue Mar 10 09:25:13 2026 +0100"
  },
  "committer": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue Mar 10 01:28:10 2026 -0700"
  },
  "message": "Don\u0027t wildcard expand keepattributes rules matching invisible annotations\n\nRELNOTES: Changes to -keepattributes RuntimeInvisibleAnnotations\n\nRuntime invisible annotations cannot be read at runtime. D8 therefore unconditionally removes runtime invisible annotations, with no option to change this.\n\nFor compatibility with ProGuard, however, R8 supports outputting runtime invisible annotations. When compiling to DEX, runtime invisible annotations should generally never be retained, but it is common bad practice to include the rule -keepattributes *Annotation*, either directly on indirectly via consumer keep rules.\n\nTo mitigate this problem and better match D8 behavior, -keepattributes patterns with wildcards is changed to no longer match RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations, and RuntimeInvisibleTypeAnnotations. As a result, RuntimeInvisibleAnnotations will only be kept if the attribute name is mentioned explicitly without wildcards.\n\nExample: The following rules will no longer keep runtime invisible annotations:\n\n  -keepattributes *\n  -keepattributes *Annotation*\n  -keepattributes *Invisible*\n\nThe following rule can be used instead:\n\n  -keepattributes RuntimeInvisibleAnnotations,\n                  RuntimeInvisibleParameterAnnotations,\n                  RuntimeInvisibleTypeAnnotations\n\nBug: b/488984563\nChange-Id: I4786ff2de89e739d8877b565a3139d92533d3ecf",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "56179cc19d9e45f9b2cf3e20ea425802dbb7b29e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/R8Command.java",
      "new_id": "6fccf6dcd7bd7f752b3d5cc3171d6fcd0748240b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/R8Command.java"
    },
    {
      "type": "modify",
      "old_id": "17e761b606c7c8140c0a87254f6520fc2c01e433",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java",
      "new_id": "c93f07a6563bc2c6b759d8b2ccaee4fdd5222317",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/relocator/RelocatorCommand.java"
    },
    {
      "type": "modify",
      "old_id": "5a3b8668f81c72ce2372ae524f28e837f97395e0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java",
      "new_id": "123a01b576d2e408f454c9110f6dcf259c8e0bfb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java"
    },
    {
      "type": "modify",
      "old_id": "b88e99463f9c3f5fca096b101a896c253c100336",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java",
      "new_id": "63a41c3d538c7fd950e7c0a4fed42077f106d8c7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "e04eba7c826ce7392852c71a610e53032f2d158f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java",
      "new_id": "5545af4b23d0f9ba29eb70403c1d4a449970175c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java"
    },
    {
      "type": "modify",
      "old_id": "6ebba5a14b5ddc1c3addc7545279bf29cb93aec9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java",
      "new_id": "80ea398077aa8f3e94939795dec47fba49cc70a3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java"
    },
    {
      "type": "modify",
      "old_id": "e0848b0626e6af3931b4a86010748722bfbc7407",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardKeepAttributes.java",
      "new_id": "015bc50317d5c9efd7c74de713240844068ec28d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardKeepAttributes.java"
    },
    {
      "type": "modify",
      "old_id": "43e8374be0019190a53090b1e1cde2e2fe74164b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/utils/InternalOptions.java",
      "new_id": "82983a6bf3d49cdf1f1dcb979e176800b05f41d5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/utils/InternalOptions.java"
    },
    {
      "type": "modify",
      "old_id": "9cd90480a59a5e8566383c420518614b25ac2bfe",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java",
      "new_id": "09d29f00cba026d1a64b9a17bf9cbd1be29c2480",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java"
    },
    {
      "type": "modify",
      "old_id": "2ae484c43f0e63e936c548b9ce04809f24a45d97",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/InlineTest.java",
      "new_id": "01d3b6eacb82f96db7e9e2f7a9fbde7fccae25b6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/InlineTest.java"
    },
    {
      "type": "modify",
      "old_id": "f63abf21acdaf4fd7b2382d09ecc4b403797a48e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java",
      "new_id": "9dacd25e28c7058e902664b744eb36cb831f0d7a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java"
    },
    {
      "type": "modify",
      "old_id": "f21e321c3233357637a914f6839f26762dcf722e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java",
      "new_id": "7e822abbf887e82e5769577ed70122f15faa6933",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f48846ee391af0f074e62e9bc2490fe1854af2b9",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/attributes/RuntimeInvisibleAnnotationsKeepAttributesExpansionTest.java"
    },
    {
      "type": "modify",
      "old_id": "164bb770a2b96a91082dc95432063a8252a8c771",
      "old_mode": 33188,
      "old_path": "src/test/testbase/java/com/android/tools/r8/TestBase.java",
      "new_id": "6774f5b706d50a1a14a5ec6b2423dee6b6394640",
      "new_mode": 33188,
      "new_path": "src/test/testbase/java/com/android/tools/r8/TestBase.java"
    },
    {
      "type": "modify",
      "old_id": "3d8ad6c5076eb74ef635a676867c7cd3e59b11a3",
      "old_mode": 33188,
      "old_path": "src/test/testbase/java/com/android/tools/r8/ToolHelper.java",
      "new_id": "f54618a8dea9f391b360b6916c9730c8149367af",
      "new_mode": 33188,
      "new_path": "src/test/testbase/java/com/android/tools/r8/ToolHelper.java"
    }
  ]
}
