I often hear the analogy that #VibeCoding to generated high level code is like written high level code is to machine language.
That is wrong!
Compiling is a reduction. Information is lost in the process, such as meaningful variable or class names, or comments.
When turning spec to code, on the other hand, a lot of information is added, such as naming conventions, choice of frameworks, etc.
I am not opposing the beneficial hallucination. Not at all.
All I am saying is that intent needs interpretation, and interpretation is dependent on the culture captured in the LLM. It is a nondeterministic process, inherently fragile.