Answer
Add the CreateNamespace=true sync option so ArgoCD creates the destination namespace if it doesn't exist during sync, avoiding a separate namespace manifest. You can also add managed namespace metadata (labels/annotations) via the syncPolicy in newer versions.
syncPolicy:
syncOptions:
- CreateNamespace=trueReal-world example A new app deploys cleanly on first sync because ArgoCD creates its namespace automatically.