Convention: only the root app-of-apps (platform) auto-syncs so it picks up
new/changed child Application definitions from Git. Every leaf service app
(vault, headlamp, harbor, jenkins, sonarqube, external-secrets,
kube-prometheus-stack) now requires an explicit manual Sync — matches
cluster-bootstrap and homelab-services' existing ignis convention.
Each platform/apps/<service>/ now holds its own application.yaml
(multi-source: chart + values + raw-manifest extras), values.yaml, and
any extra manifests (HTTPRoute, RBAC, ClusterSecretStore) together,
replacing the split apps/*.yaml + manifests/*/ + separate *-config
Application pattern.
Root platform-app.yaml now recurses platform/apps/*/application.yaml
only. Extras get a resource-level sync-wave (1) so they still land
after their service's Helm chart within the same Application sync.
Also adds an HTTPRoute for vault (vault.fireflylab.local) - exposed
same as every other service here, accepted as LAN-only exposure.