)]}'
{
  "commit": "fcf987c70c909bf00348d6094424cc3220fd3630",
  "tree": "5bb6bc6ceb2bf8d602708d742fa9db9b3dce8644",
  "parents": [
    "c19d645d406dd05bfdf8a42458e7fc7b3c3cdd51"
  ],
  "author": {
    "name": "John Ryan",
    "email": "ryjohn@google.com",
    "time": "Tue Sep 15 17:48:33 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 15 17:48:33 2026 -0700"
  },
  "message": "Make sure that extensions are bundled with the package they claim to be. (#9981)\n\n* Make sure that extensions are bundled with the package they claim to be.\n\nWith this change, extensions are enabled if and only if the package name\non disk matches the package name in extension/devtools/config.yaml.\n\n* Check string type in if expression\n\n* Normalize package root\n\n* Fix typo\n\n* Revert missing line in CHANGELOG.md\n\n* Fix presubmits\n\n* Use the package name to verify extension permissions and deduplication\n\n* Use non-nullable parameters\n\nMake extensionPackage a required non-nullable parameter in extensionEnabledState\nMake packageName non-nullable parameter in TestPackageWithExtension\n\n* fix PR link\n\n* Add pubspec verification to CHANGELOG\n\n* Fix doc comment in lookupExtensionEnabledState and setExtensionEnabledState\n\n* Format\n\n* Move packageName to correct section in constructor",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7102119f487b49b0df20b649519876161bf6809d",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/extensions/extension_screen.dart",
      "new_id": "3d0bb61dae128cb9caf3c9a8112850db1f56830f",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/extensions/extension_screen.dart"
    },
    {
      "type": "modify",
      "old_id": "5635266ba6b84d07b571701223825fdb0b0b57aa",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/extensions/extension_screen_controls.dart",
      "new_id": "813e183999b446fe9e94ed5f118023a83ef5ee96",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/extensions/extension_screen_controls.dart"
    },
    {
      "type": "modify",
      "old_id": "ae49a3b702294558e1fa727df7b4ed10e3f75041",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/extensions/extension_service.dart",
      "new_id": "2ba343c34cd79cedd88a404dc818ba0a46b84957",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/extensions/extension_service.dart"
    },
    {
      "type": "modify",
      "old_id": "1e5f54379cf890b5e53f191318cb2bdec38fde4d",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/extensions/extension_service_helpers.dart",
      "new_id": "3133ac7a79508f55dcf486f4a9cd1889c565cf0c",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/extensions/extension_service_helpers.dart"
    },
    {
      "type": "modify",
      "old_id": "4ebfdfae6d94febdc7b1b20687d04578e868278c",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/extensions/extension_settings.dart",
      "new_id": "fa2dd8aa16f5e4b7407111ec8965b9a8b4011fc6",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/extensions/extension_settings.dart"
    },
    {
      "type": "modify",
      "old_id": "072e804990584388cc386348231428dfa8765e08",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/development_helpers.dart",
      "new_id": "e514582db5fbaf9b9fc28db1e293fdd9d7933e00",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/development_helpers.dart"
    },
    {
      "type": "modify",
      "old_id": "5933894a6e3593e165bfa264ac3052f063c260f0",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/lib/src/shared/server/_extensions_api.dart",
      "new_id": "290abeacd493ec9ca8c9582a1eceeb4afa956c75",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/lib/src/shared/server/_extensions_api.dart"
    },
    {
      "type": "modify",
      "old_id": "ca70b2cd92596f9e45c59c66c2a1b6c15796e4cf",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md",
      "new_id": "9d13816220c2a241ccfae51fd6ae742ae84634a6",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md"
    },
    {
      "type": "modify",
      "old_id": "306a0dc16c79d2f6f6c20de86238aa444f3b351e",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/test/extensions/extension_screen_test.dart",
      "new_id": "f0f9cc056dec2b555e99a0c5a22d8b24651ed5a9",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/extensions/extension_screen_test.dart"
    },
    {
      "type": "modify",
      "old_id": "52f99d9d310f8b63ba9a8df87e53d383742ca2a1",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/test/extensions/extension_service_helpers_test.dart",
      "new_id": "fbf0129b6f49de48c4e612506e39c68724f70079",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/extensions/extension_service_helpers_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d8f61cb6f6172bbf69181450c18191f277b9b4f5",
      "old_mode": 33188,
      "old_path": "packages/devtools_app/test/extensions/extension_service_test.dart",
      "new_id": "fea1cc26ace8a0045ca07a0a80bafdc632ea65c8",
      "new_mode": 33188,
      "new_path": "packages/devtools_app/test/extensions/extension_service_test.dart"
    },
    {
      "type": "modify",
      "old_id": "83756dfe4ebbef0d17ee1f1e5256ec711d39fe87",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/CHANGELOG.md",
      "new_id": "9115a73747c6ba8208749ea55346a176df7f78fa",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "10437f6534b4edae3d7ecc835a135a204d87ff6d",
      "old_mode": 33188,
      "old_path": "packages/devtools_app_shared/pubspec.yaml",
      "new_id": "9f41284e3dd9859f5f90da00c9f1c0d8b3f07383",
      "new_mode": 33188,
      "new_path": "packages/devtools_app_shared/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "2d412aec0accef7c2644e25bf3d1f69a38c85f64",
      "old_mode": 33188,
      "old_path": "packages/devtools_extensions/CHANGELOG.md",
      "new_id": "5123faeaeb9de4f8561e7c2f875388b2b236414d",
      "new_mode": 33188,
      "new_path": "packages/devtools_extensions/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "a0542f3c6e78e72ebd4b9b0fc2ba08c2b16436a6",
      "old_mode": 33188,
      "old_path": "packages/devtools_extensions/bin/_validate.dart",
      "new_id": "30f36cc1b669fa805fe51319fdbf9fd7b7555b65",
      "new_mode": 33188,
      "new_path": "packages/devtools_extensions/bin/_validate.dart"
    },
    {
      "type": "modify",
      "old_id": "df7ce763e48f186e3bbe689479bbc97419c2f980",
      "old_mode": 33188,
      "old_path": "packages/devtools_extensions/pubspec.yaml",
      "new_id": "4639c9cbcc49e3aa9970cfb33508f470467fa6b0",
      "new_mode": 33188,
      "new_path": "packages/devtools_extensions/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "8efcb5e08492d09647ce9c968656d8f58bccfe8f",
      "old_mode": 33188,
      "old_path": "packages/devtools_extensions/test/validate_test.dart",
      "new_id": "3616638041d41ab664114a95ca8898bd9af0b479",
      "new_mode": 33188,
      "new_path": "packages/devtools_extensions/test/validate_test.dart"
    },
    {
      "type": "modify",
      "old_id": "132ea2a05901ca87def4f9da1ba84c7b5eef44cf",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/CHANGELOG.md",
      "new_id": "f5c4069e1bc5d5865a0aeb083081bf2007c03073",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "f28ffbbf0a594cb389fa83e7d0b8256f036fe037",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/lib/src/devtools_api.dart",
      "new_id": "fd2ca9338ec92a2068c7066e85c68e25448862e3",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/lib/src/devtools_api.dart"
    },
    {
      "type": "modify",
      "old_id": "d6a12670ce4e62900fe79b97ee2d390fe68d1cdb",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/lib/src/extensions/extension_enablement.dart",
      "new_id": "d86c03ca05dd07821fc3a3727daaf6cf33f06d54",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/lib/src/extensions/extension_enablement.dart"
    },
    {
      "type": "modify",
      "old_id": "92ad6016d228db198cf22546e80e1541e1c939c2",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/lib/src/extensions/extension_manager.dart",
      "new_id": "90da58f2f2145c08153cd9b91049f49709694573",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/lib/src/extensions/extension_manager.dart"
    },
    {
      "type": "modify",
      "old_id": "8d669e0134cd207e5248fe86acf5c8c8a350ca13",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/lib/src/extensions/extension_model.dart",
      "new_id": "4cb5b22998aae75f5bfa1655dc901b1303598c5f",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/lib/src/extensions/extension_model.dart"
    },
    {
      "type": "modify",
      "old_id": "22dded4394ad3f8796c9cf7c301aa5fa1206ef45",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/lib/src/server/handlers/_devtools_extensions.dart",
      "new_id": "035ccaa4600de40229cb7fa94fb6bff4fef171a5",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/lib/src/server/handlers/_devtools_extensions.dart"
    },
    {
      "type": "modify",
      "old_id": "ff121888ba32f5e41ac5769b5fac0be200537f28",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/pubspec.yaml",
      "new_id": "4507c5e3cfc4543a5a8dc0b4e7536e5678e8092d",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "36984b308d62c4f1939c4e5d3aa76d8854b88060",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/test/extensions/extension_enablement_test.dart",
      "new_id": "db841b76b3467bcd8fbdc9069385df039b6055c3",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/test/extensions/extension_enablement_test.dart"
    },
    {
      "type": "modify",
      "old_id": "2bf4236ca6fb27fe4a57652999276ba2b62582fb",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/test/extensions/extension_model_test.dart",
      "new_id": "3a98e0445b8f13e4913fe90373f1e398830406ce",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/test/extensions/extension_model_test.dart"
    },
    {
      "type": "modify",
      "old_id": "323ab819c83992d817736bade7929788aa01084a",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/test/helpers/extension_test_manager.dart",
      "new_id": "00add39d1ca43743d723809b79d9c9e5d503e4ee",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/test/helpers/extension_test_manager.dart"
    },
    {
      "type": "modify",
      "old_id": "e8101458fd94fa590a907883ebfda76c9256969b",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/test/helpers/extension_test_manager_test.dart",
      "new_id": "c49d6e7b4c184efe5f4cbc888e101625f119d4bc",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/test/helpers/extension_test_manager_test.dart"
    },
    {
      "type": "modify",
      "old_id": "af0530ed512192e3648b0dacac3df14085c9d497",
      "old_mode": 33188,
      "old_path": "packages/devtools_shared/test/server/devtools_extensions_api_test.dart",
      "new_id": "ca0d9059dd143aefb785731fcccc74202183ee74",
      "new_mode": 33188,
      "new_path": "packages/devtools_shared/test/server/devtools_extensions_api_test.dart"
    }
  ]
}
