Module-boundary guard: domain stays Android-free and ads cannot reach cycle data #7
Labels
No Label
P0
P1
P2
release-blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Privacy-Period-Tracker#7
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two boundaries in this project are load-bearing, and both are currently held up by nothing but the fact that the offending code has not been written yet.
domain/*must not see the Android SDK. It iskotlin("jvm")today, so this half is already a compile error — but a future contributor converting it tocom.android.libraryto get one convenient API would remove that guarantee with no test failing.Build a Gradle check that enumerates each module's permitted dependencies from the table in
docs/architecture/README.mdand fails the build on anything outside it. Wire it into./gradlew check.The guard is not finished when it passes.
docs/architecture/GUARDS.md§1: a guard nobody has seen fail is not yet evidence. Add a deliberate forbidden dependency —domain/predictiononapp, say — watch the guard go red, then restore the file.scripts/prove-guard.shdoes exactly this with a trap so the file comes back even if the run dies.Why now rather than in Batch 07 with the ads module: a guard written before the code it constrains is a guard that was never shaped around an exception somebody wanted to make.
Verify:
bash scripts/prove-guard.shshows the guard failing on an injected forbidden dependency and passing after restore, and./gradlew checkruns it.