diff --git a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
index be65096..42d6f34 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/VerifyDependencyVersionsTask.kt
@@ -22,12 +22,14 @@
 import org.gradle.api.Project
 import org.gradle.api.artifacts.Configuration
 import org.gradle.api.artifacts.Dependency
+import org.gradle.api.artifacts.ProjectDependency
 import org.gradle.api.provider.Property
 import org.gradle.api.provider.SetProperty
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Input
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.TaskProvider
+import org.gradle.kotlin.dsl.findByType
 import org.gradle.kotlin.dsl.setProperty
 
 /**
@@ -180,7 +182,6 @@
     if (name.startsWith("androidAndroidTest")) return false
     if (name.startsWith("androidCommonTest")) return false
     if (name.startsWith("androidInstrumentedTest")) return false
-    if (name.startsWith("androidReleaseUnitTest")) return false
     if (name.startsWith("androidUnitTest")) return false
     if (name.startsWith("debug")) return false
     if (name.startsWith("androidDebug")) return false
@@ -194,10 +195,6 @@
     if (name.startsWith("lint")) return false
     if (name == "metalava") return false
 
-    // Don't check bundled inspector configurations.
-    if (name == "consumeInspector") return false
-    if (name == "importInspectorImplementation") return false
-
     // Don't check any configurations that directly bundle the dependencies with the output
     if (name == "bundleInside") return false
     if (name == "embedThemesDebug") return false
@@ -233,12 +230,6 @@
         return false
     }
 
-    // don't verify baseline profile generating project dependencies
-    if (name == "baselineProfile") return false
-
-    // don't verify samples
-    if (name == "samples") return false
-
     return true
 }
 
@@ -255,5 +246,16 @@
         return false
     }
 
+    // Should be guaranteed to be an androidx project at this point, but doesn't necessarily mean
+    // we have AndroidXExtension applied.
+    if (
+        dependency is ProjectDependency &&
+            dependency.dependencyProject.extensions
+                .findByType<AndroidXExtension>()
+                ?.shouldRelease() != true
+    ) {
+        return false
+    }
+
     return true
 }
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/DependencyTracker.kt b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/DependencyTracker.kt
index e84b8aa..c983dc9 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/DependencyTracker.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/dependencyTracker/DependencyTracker.kt
@@ -26,20 +26,20 @@
  * other. This is mainly used by [AffectedModuleDetector] to find out which projects should be run.
  */
 class DependencyTracker(rootProject: Project, logger: Logger?) : Serializable {
-    private val dependentList: Map<String, Set<String>>
+    val dependentList: Map<String, Set<String>>
 
     init {
         val result = mutableMapOf<String, MutableSet<String>>()
         val stringBuilder = StringBuilder()
         rootProject.subprojects.forEach { project ->
             project.configurations.forEach { config ->
-                config.dependencies.filterIsInstance<ProjectDependency>().forEach {
+                config.dependencies.filterIsInstance(ProjectDependency::class.java).forEach {
                     stringBuilder.append(
                         "there is a dependency from ${project.path} (${config.name}) to " +
-                            it.path +
+                            it.dependencyProject.path +
                             "\n"
                     )
-                    result.getOrPut(it.path) { mutableSetOf() }.add(project.path)
+                    result.getOrPut(it.dependencyProject.path) { mutableSetOf() }.add(project.path)
                 }
             }
         }
diff --git a/busytown/impl/build.sh b/busytown/impl/build.sh
index f2b5e11..a9bb97d 100755
--- a/busytown/impl/build.sh
+++ b/busytown/impl/build.sh
@@ -145,14 +145,6 @@
 # check that no unexpected modifications were made to the source repository, such as new cache directories
 DIST_DIR=$DIST_DIR $SCRIPT_DIR/verify_no_caches_in_source_repo.sh $BUILD_START_MARKER
 
-# copy problem report to DIST_DIR so we can see them
-PROBLEM_REPORTS_EXPORTED=$DIST_DIR/problem-reports
-PROBLEM_REPORTS=$OUT_DIR/androidx/build/reports/problems
-if [ -d "$PROBLEM_REPORTS" ]; then
-    rm -rf "$PROBLEM_REPORTS_EXPORTED"
-    cp -r "$PROBLEM_REPORTS" "$PROBLEM_REPORTS_EXPORTED"
-fi
-
 # copy configuration cache reports to DIST_DIR so we can see them b/250893051
 CONFIGURATION_CACHE_REPORTS_EXPORTED=$DIST_DIR/configuration-cache-reports
 CONFIGURATION_CACHE_REPORTS=$OUT_DIR/androidx/build/reports/configuration-cache
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index fe76178..1b96182 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -9,7 +9,6 @@
 Downloading file\:\$SUPPORT\/gradle\/wrapper\/.*
 [.]+10%[.]+20%[.]+30%[.]+40%[.]+50%[.]+60%[.]+70%[.]+80%[.]+90%[.]+100%
 Daemon will be stopped at the end of the build
-\[Incubating\] Problems report is available at\:.*
 # > Configure project :appsearch:appsearch\-local\-backend
 Configuration on demand is an incubating feature\.
 # > Task :listTaskOutputs
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 59f1b55..b5f8900 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=../../../../tools/external/gradle/gradle-8.11-bin.zip
-distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9
+distributionUrl=../../../../tools/external/gradle/gradle-8.10.2-bin.zip
+distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/playground-common/gradle/wrapper/gradle-wrapper.properties b/playground-common/gradle/wrapper/gradle-wrapper.properties
index f747b05..7859569 100644
--- a/playground-common/gradle/wrapper/gradle-wrapper.properties
+++ b/playground-common/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
-distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
+distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
