The security patch example actually proves my point. That patch exists in the git history as a specific commit, and updating a submodule is a one-line change that gets recorded atomically. A package manager gives you a range, then resolves it with a separate lockfile, meaning two files can disagree. Submodules collapse that into one history. Even transitive dependencies are just submodules with their own submodules, all pinned by commit. So the "manual checking" problem is real, but it's a workflow problem, not a correctness problem. Reproducibility is the formal guarantee that matters, and submodules are the only tool that makes it structural rather than probabilistic.