Annotate each Kubernetes manifest with `argocd.argoproj.io/sync-wave: "<integer>"` — lower integers deploy first; default wave is 0
For pre-sync setup (e.g., database migrations), create a Job with the hook annotation `argocd.argoproj.io/hook: PreSync` and the desired sync-wave
Annotate hook resources with `argocd.argoproj.io/hook-delete-policy: HookSucceeded` so completed Jobs are cleaned up automatically
Place infrastructure resources (CRDs, namespaces) in negative waves (e.g., -5) and application Deployments in positive waves (e.g., 10)
Trigger a sync and observe wave progression in the Argo CD UI or via `argocd app sync <name> --watch`
If a wave fails, the sync halts and downstream waves do not execute — inspect the failed resource and fix before re-syncing
Known gotchas
Sync waves only take effect during an active sync operation; they do not affect the order in which existing resources are reconciled during self-heal
A hook Job that hangs will block the sync indefinitely; always set `activeDeadlineSeconds` on hook Jobs
Resources in the same wave are applied concurrently, so intra-wave ordering must be handled by Kubernetes admission or readiness probes, not wave numbers
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp