Replace the development fixture shell with method intro, question, coin entry, and result screens. Persist locked casts in private Room storage under the save policy, and document remaining P2 content and P4 history-list gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
92 lines
2.9 KiB
Kotlin
92 lines
2.9 KiB
Kotlin
import org.gradle.api.tasks.Exec
|
|
|
|
plugins {
|
|
base
|
|
alias(libs.plugins.android.application) apply false
|
|
alias(libs.plugins.kotlin.android) apply false
|
|
alias(libs.plugins.kotlin.kapt) apply false
|
|
alias(libs.plugins.hilt) apply false
|
|
}
|
|
|
|
fun registerNodeVerificationTask(
|
|
name: String,
|
|
description: String,
|
|
script: String,
|
|
) = tasks.register<Exec>(name) {
|
|
group = LifecycleBasePlugin.VERIFICATION_GROUP
|
|
this.description = description
|
|
workingDir(rootDir)
|
|
commandLine("node", script)
|
|
}
|
|
|
|
val verifyDocs = registerNodeVerificationTask(
|
|
name = "verifyDocs",
|
|
description = "Checks local Markdown links and required harness documents.",
|
|
script = "scripts/verify-docs.mjs",
|
|
)
|
|
|
|
val scanSecrets = registerNodeVerificationTask(
|
|
name = "scanSecrets",
|
|
description = "Scans repository text files for high-confidence secret patterns.",
|
|
script = "scripts/scan-secrets.mjs",
|
|
)
|
|
|
|
val verifyDomainBoundaries = registerNodeVerificationTask(
|
|
name = "verifyDomainBoundaries",
|
|
description = "Prevents Android, persistence, and network imports in the domain core.",
|
|
script = "scripts/verify-domain-boundaries.mjs",
|
|
)
|
|
|
|
val verifyPrototype = registerNodeVerificationTask(
|
|
name = "verifyPrototype",
|
|
description = "Runs dependency-free syntax checks for the HTML prototype harness.",
|
|
script = "scripts/verify-prototype.mjs",
|
|
)
|
|
|
|
val verifyContentContract = registerNodeVerificationTask(
|
|
name = "verifyContentContract",
|
|
description = "Validates the versioned local-content contract and its negative fixtures.",
|
|
script = "scripts/verify-content-contract.mjs",
|
|
)
|
|
|
|
val spotlessCheck = registerNodeVerificationTask(
|
|
name = "spotlessCheck",
|
|
description = "Runs the dependency-free repository formatting gate.",
|
|
script = "scripts/verify-format.mjs",
|
|
)
|
|
|
|
val verifyDependencyLicenseManifest = registerNodeVerificationTask(
|
|
name = "verifyDependencyLicenseManifest",
|
|
description = "Checks the reviewed dependency-license manifest against pinned build versions.",
|
|
script = "scripts/verify-dependency-licenses.mjs",
|
|
)
|
|
|
|
val verifyLocalDataBoundary = registerNodeVerificationTask(
|
|
name = "verifyLocalDataBoundary",
|
|
description = "Locks down offline permissions and excludes local records from backup and transfer.",
|
|
script = "scripts/verify-local-data-boundary.mjs",
|
|
)
|
|
|
|
tasks.register("verifyLocal") {
|
|
group = LifecycleBasePlugin.VERIFICATION_GROUP
|
|
description = "Runs every environment-independent local quality gate."
|
|
dependsOn(
|
|
":app:lintDebug",
|
|
":app:testDebugUnitTest",
|
|
":app:assembleDebug",
|
|
":app:verifyDependencyLicenses",
|
|
verifyDocs,
|
|
scanSecrets,
|
|
verifyDomainBoundaries,
|
|
verifyPrototype,
|
|
verifyContentContract,
|
|
spotlessCheck,
|
|
verifyDependencyLicenseManifest,
|
|
verifyLocalDataBoundary,
|
|
)
|
|
}
|
|
|
|
tasks.named("check") {
|
|
dependsOn("verifyLocal")
|
|
}
|