Overview
Why Use Verification?
Verification helps you:- Catch Issues Early - Detect problems before they impact users
- Automate Rollbacks - Trigger rollback policies when verification fails
- Build Confidence - Ensure deployments meet quality standards
- Gate Promotions - Block progression to production until QA verifies
- Environment-Specific Checks - Run different verifications per environment
Basic Configuration
Add a verification rule to your policy:Environment-Specific Verifications
Different environments can have completely different verification requirements:Reusable Verification with Selectors
Use policy selectors to apply the same verification across multiple deployments or environments:Progressive Delivery Gates
Use verification to gate promotion through environments:Metric Configuration
Metric Properties
| Property | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name of the verification metric |
interval | string | Yes | Time between measurements (e.g., ”30s”, “5m”) |
count | integer | Yes | Number of measurements to take |
provider | object | Yes | Metric provider configuration |
successCondition | string | Yes | CEL expression to evaluate success |
failureLimit | integer | No | Stop after this many failures (0 = no limit) |
Metric Providers
Ctrlplane supports multiple metric providers for collecting verification data.HTTP Provider
Query any HTTP endpoint that returns JSON:result.ok- true if status code is 2xxresult.statusCode- HTTP status coderesult.body- Response body as stringresult.json- Parsed JSON responseresult.headers- Response headersresult.duration- Request duration in milliseconds
Datadog Provider
Query metrics from Datadog’s Metrics API:| Property | Required | Description |
|---|---|---|
apiKey | Yes | Datadog API key (supports templates) |
appKey | Yes | Datadog Application key (supports templates) |
query | Yes | Datadog metrics query (supports templates) |
site | No | Datadog site (default: datadoghq.com) |
datadoghq.com(US1 - default)datadoghq.eu(EU)us3.datadoghq.com(US3)us5.datadoghq.com(US5)ap1.datadoghq.com(AP1)
result.ok- true if API call succeededresult.statusCode- HTTP status coderesult.value- Last metric value from the queryresult.json- Full Datadog API responseresult.query- The resolved query stringresult.duration- Request duration in milliseconds
Template Variables
All provider configurations support Go templates with access to deployment context:Storing Secrets in Variables
For sensitive values like API keys, use deployment variables:- Create a deployment variable:
- Set the value:
- Reference in verification config:
Success Conditions (CEL)
Success conditions are written in CEL (Common Expression Language). The measurement data is available as theresult variable.
Verification Lifecycle
1. Policy Evaluation
When a job completes, Ctrlplane evaluates policies to determine which verifications apply based on the policy selectors.2. Verification Starts
If a matching policy has verification rules, Ctrlplane creates a verification record and starts the measurement process.3. Measurements Taken
For each configured metric, measurements are taken at the specified interval:4. Verification Result
- Passed: All measurements passed, or failures stayed below
failureLimit - Failed: Failures exceeded
failureLimit
5. Policy Action
Based on the verification result, the policy can:- Allow promotion to the next environment
- Trigger rollback to a previous version
- Block release until manual intervention
Verification Status
| Status | Description |
|---|---|
running | Verification in progress, taking measurements |
passed | All checks passed within acceptable limits |
failed | Too many measurements failed |
cancelled | Verification was manually cancelled |
Best Practices
Timing Recommendations
| Scenario | Recommended Interval | Recommended Count |
|---|---|---|
| Quick smoke test | 10-30s | 3-5 |
| Standard verification | 30s-1m | 5-10 |
| Extended soak test | 5m | 12-24 |
Failure Limits
| Risk Tolerance | Failure Limit | Notes |
|---|---|---|
| Strict | 1 | Fail on first failure |
| Normal | 2-3 | Allow transient issues |
| Lenient | 5+ | For noisy metrics |
Environment-Specific Recommendations
| Environment | Verification Focus | Timing |
|---|---|---|
| QA | Smoke tests, E2E tests | Quick (1-3min) |
| Staging | Integration tests, error rates | Medium (5min) |
| Production | Error rates, latency, business KPIs | Extended (10m) |
Troubleshooting
Verification always fails
- Check if the provider can reach the target (network, DNS)
- Verify API credentials are correct
- Test the query manually
- Review measurement data for unexpected values
- Check if success condition is too strict
Verification not running
- Verify the policy selector matches the release target
- Check that the policy is enabled
- Review policy evaluation logs
- Ensure verification is configured in the policy rules
Wrong verification applied
- Review policy selectors
- Check policy priority/ordering
- Verify environment and metadata values
- Review which policies matched the release
Next Steps
- Policies Overview - Learn about policy structure
- Gradual Rollouts - Control deployment pace
- Selectors - Deep dive into selector syntax