One giant target hurts

Everything can see everything

PawWalk started as a single app target β€” every .swift file dropped into one Xcode target, Models, Services, Features, Data, all compiled together. That was fine at ten files. Fourteen modules later it's a few hundred, and one giant target has a quiet cost: any file can import any other file. WalkHistoryView can reach straight into SyncEngine's internals. A view in Features/Booking can construct a LiveWalkRepository directly instead of going through the protocol from Module 14. Nothing in the project structure stops it β€” the only boundary is developer discipline, and discipline erodes under a deadline.

There's a build-time cost too: change one file in a single-target app and Swift may need to re-typecheck the whole target before it can build again, because nothing tells the compiler which files actually depend on which. Xcode can't parallelize work across a target β€” a target is the unit it schedules around.