Release is not revoke
- Release (
datanivra test-data release <ID>,POST /v1/test-data/requests/{test_data_request_id}/release) ends only what the request holds: its own environment lease (the isolated copy is torn down by your agent), or — for a build profile — the dataset built for that request alone. It is idempotent, so CI cleanup steps can always run. A pending request is cancelled. - Revoke (
datanivra datasets revoke) withdraws a dataset or version for every consumer and tears down every copy. It needsdataset.revoke, is audited, and is never something a pipeline does to clean up.
Many pull requests can lease the same certified version at once; each gets its own target from the profile's pool, and releasing one never affects the others.
TTL and cleanup
A lease lapses at its TTL unless renewed; the scheduler then expires it and your agent tears the copy down, and the request becomes RELEASED. A runner that was killed mid-test therefore leaves nothing behind for longer than the TTL. Value-free lease evidence (datanivra env-leases evidence <LEASE_ID>) records the state transitions, the certificate and the teardown receipts with a SHA-256 digest.
Request states
| State | Meaning |
|---|---|
PENDING_APPROVAL | waiting for a person (not the requester) to approve or reject |
PROVISIONING | the lease is hydrating, or the build is scheduled |
READY | the data is in the approved target; run your tests |
RELEASING | released; teardown in progress |
RELEASED | ended (released, or the lease expired) |
REJECTED, CANCELLED, FAILED | ended without data (see state_reason_code) |
Common problems
| Symptom | Cause and fix |
|---|---|
403 TEST_DATA_REQUEST_DENIED | read the reason codes in details (list); stay within the profile, or ask for a new, reviewed profile version |
Exit code 25, state PENDING_APPROVAL | a person must approve (datanivra test-data approve <ID> --reason …), or automatic approval is off (AUTOMATIC_APPROVAL_DISABLED) |
409 TARGET_POOL_EXHAUSTED | every pool target holds a live request; retry later or add targets in a new profile version |
404 PROFILE_NOT_FOUND on plan | wrong name or version; datanivra test-data profiles lists what you may invoke |
401 INVALID_CREDENTIALS from /v1/auth/workload/token | the CI token was refused; your administrator sees the reason in the audit trail (auth.workload.denied) |
404 WORKLOAD_IDENTITY_DISABLED | this deployment has not enabled CI workload identity; use a user session |
403 WORKLOAD_SESSION_NOT_REFRESHABLE | exchange a fresh CI token instead of refreshing |
Stuck in PROVISIONING | the agent may be offline or the target unreachable: check the agent's heartbeat in the console; the request ends FAILED or expires at its TTL |
Exit code 28 from validate | the manifest is invalid; the output names each field path and code |
Every error code is also listed in the support error codes.