diff --git a/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json b/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json
index 6db5006c8..a5b79cb3f 100644
--- a/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json
+++ b/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json
@@ -26,5 +26,8 @@
       "environment": "client",
       "config": "fabric-model-loading-api-v1.mixins.json"
     }
-  ]
+  ],
+  "custom": {
+    "fabric-api:module-lifecycle": "stable"
+  }
 }
diff --git a/gradle/module-validation.gradle b/gradle/module-validation.gradle
index 2680409bd..ae3fef8ce 100644
--- a/gradle/module-validation.gradle
+++ b/gradle/module-validation.gradle
@@ -13,7 +13,8 @@ subprojects {
 	}
 
 	// Create the task
-	tasks.register("validateModules", ValidateModuleTask)
+	def validateModules = tasks.register("validateModules", ValidateModuleTask)
+	tasks.check.dependsOn(validateModules)
 }
 
 /**
@@ -28,13 +29,8 @@ subprojects {
  */
 abstract class ValidateModuleTask extends DefaultTask {
 	@InputFile
-	@Optional
 	abstract RegularFileProperty getFmj()
 
-	@InputFile
-	@Optional
-	abstract RegularFileProperty getClientFmj()
-
 	@Input
 	abstract Property<String> getProjectName()
 
@@ -47,11 +43,16 @@ abstract class ValidateModuleTask extends DefaultTask {
 	ValidateModuleTask() {
 		group = "verification"
 
-		// Hook up validation to check task
-		project.tasks.check.dependsOn(this)
+		// No outputs
+		outputs.upToDateWhen { true }
 
-		fmj.set(project.file("src/main/resources/fabric.mod.json"))
-		clientFmj.set(project.file("src/client/resources/fabric.mod.json"))
+		def file = project.file("src/main/resources/fabric.mod.json")
+
+		if (!file.exists()) {
+			file = project.file("src/client/resources/fabric.mod.json")
+		}
+
+		fmj.set(file)
 
 		projectName.set(project.name)
 		projectPath.set(project.path)
@@ -60,15 +61,8 @@ abstract class ValidateModuleTask extends DefaultTask {
 
 	@TaskAction
 	void validate() {
-		def clientOnlyMod = false
-
 		def file = fmj.get().asFile
 
-		if (!file.exists()) {
-			file = clientFmj.get().asFile
-			clientOnlyMod = true
-		}
-
 		def json = new JsonSlurper().parse(file)
 
 		if (json.custom == null) {