I imagine that it is theoretically possible to successfully vibe-code, but probably not with a conventional project layout nor would it look much like traditional programming. Something like your interaction primarily being a "requirements list", which gets translated into interfaces and heavy requirements tests against those interfaces, and each implementation file being disposable (regenerated) & super-self-contained, and only being able to "save" (or commit) implementations that pass the tests.
...and if you are building a webapp, it would not be able to touch the API layer except through operational transforms (which trigger new [major] version numbers]. Sorta like MCP.
Said another way, if we could make it more like a "ratchet" incrementing, and less like an out-of-control aircraft.... then maybe?!?