diff --git a/ui/build/build.go b/ui/build/build.go
index 15cff5f..9d5c330 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -298,8 +298,6 @@
 		runMakeProductConfig(ctx, config)
 	}
 
-	checkForCleanPartitions(ctx, config)
-
 	// Everything below here depends on product config.
 
 	if inList("installclean", config.Arguments()) ||
diff --git a/ui/build/cleanbuild.go b/ui/build/cleanbuild.go
index 7114963..41cb5ab 100644
--- a/ui/build/cleanbuild.go
+++ b/ui/build/cleanbuild.go
@@ -218,50 +218,6 @@
 	writeConfig()
 }
 
-// Writes out/partitions_were_clean_at_start_of_build.txt.
-// This file will contain "true" if there were no partition staging directories at the start of
-// the build (most likely from having just run `m installclean`) and "false" otherwise.
-// It's used to make a test that the staging directories are correct. That test can only be
-// correctly run directly after `m installclean`, and this is how we check for that.
-func checkForCleanPartitions(ctx Context, config Config) {
-	productOutPath := config.ProductOut()
-	productOut := func(path string) string {
-		return filepath.Join(productOutPath, path)
-	}
-
-	notExists := func(path string) bool {
-		_, err := os.Stat(path)
-		return os.IsNotExist(err)
-	}
-
-	clean := notExists(productOut("ramdisk")) &&
-		notExists(productOut("ramdisk_16k")) &&
-		notExists(productOut("debug_ramdisk")) &&
-		notExists(productOut("vendor_ramdisk")) &&
-		notExists(productOut("vendor_debug_ramdisk")) &&
-		notExists(productOut("vendor_kernel_ramdisk")) &&
-		notExists(productOut("test_harness_ramdisk")) &&
-		notExists(productOut("data")) &&
-		notExists(productOut("recovery")) &&
-		notExists(productOut("root")) &&
-		notExists(productOut("system")) &&
-		notExists(productOut("system_dlkm")) &&
-		notExists(productOut("system_other")) &&
-		notExists(productOut("vendor")) &&
-		notExists(productOut("vendor_dlkm")) &&
-		notExists(productOut("product")) &&
-		notExists(productOut("system_ext")) &&
-		notExists(productOut("oem")) &&
-		notExists(productOut("breakpad")) &&
-		notExists(productOut("cache")) &&
-		notExists(productOut("coverage")) &&
-		notExists(productOut("installer")) &&
-		notExists(productOut("odm")) &&
-		notExists(productOut("odm_dlkm"))
-
-	writeValueIfChanged(ctx, config, config.OutDir(), "partitions_were_clean_at_start_of_build.txt", fmt.Sprintf("%t\n", clean))
-}
-
 // cleanOldFiles takes an input file (with all paths relative to basePath), and removes files from
 // the filesystem if they were removed from the input file since the last execution.
 func cleanOldFiles(ctx Context, basePath, newFile string) {
diff --git a/ui/build/kati.go b/ui/build/kati.go
index 7f0ea24..31e7440 100644
--- a/ui/build/kati.go
+++ b/ui/build/kati.go
@@ -102,8 +102,6 @@
 		"--use_ninja_phony_output",
 		// Support declaring symlink outputs in AOSP Ninja.
 		"--use_ninja_symlink_outputs",
-		// Support ninja validation actions with .KATI_VALIDATIONS: https://ninja-build.org/manual.html#validations
-		"--use_ninja_validations",
 		// Regenerate the Ninja file if environment inputs have changed. e.g.
 		// CLI flags, .mk file timestamps, env vars, $(wildcard ..) and some
 		// $(shell ..) results.
diff --git a/ui/build/test_build.go b/ui/build/test_build.go
index af60e0d..2efc732 100644
--- a/ui/build/test_build.go
+++ b/ui/build/test_build.go
@@ -103,10 +103,8 @@
 	// treated as an source file.
 	dexpreoptConfigFilePath := filepath.Join(outDir, "soong", "dexpreopt.config")
 
-	// These files are written by soong_ui at the beginning of every build.
-	// Ninja considers them "source files"
+	// out/build_date.txt is considered a "source file"
 	buildDatetimeFilePath := filepath.Join(outDir, "build_date.txt")
-	cleanPartitionsFilePath := filepath.Join(outDir, "partitions_were_clean_at_start_of_build.txt")
 
 	// bpglob is built explicitly using Microfactory
 	bpglob := filepath.Join(config.SoongOutDir(), "bpglob")
@@ -124,7 +122,6 @@
 			line == variablesFilePath ||
 			line == dexpreoptConfigFilePath ||
 			line == buildDatetimeFilePath ||
-			line == cleanPartitionsFilePath ||
 			line == bpglob {
 			// Leaf node is in one of Soong's bootstrap directories, which do not have
 			// full build rules in the primary build.ninja file.
