deployment.reportStatus.
What a deployment carries
Environment
QA Wolf matches the environment name against the workspace’s environments by alias or by slugified name. When nothing matches, it creates a new environment under that name. A pipeline sendingprod-us while the QA Wolf environment is named production creates a second environment that no trigger targets. Make the pipeline send the QA Wolf environment’s name, or add the name it sends as an alias.
The preview flag decides what kind of environment gets created. A preview environment is torn down when its pull request closes. A permanent one is not. The flag defaults to permanent on every path, so a preview deploy that omits it leaves a permanent environment behind, once per pull request.
deployTarget is required whenever a deployment.reportStatus report creates an environment. Without it the runs point at the base environment’s URL rather than at the deploy.
Previews
Each pull request needs its own environment name (preview/pr-42, review/pr-42) and its own deploy target URL. A shared environment name makes concurrent pull requests overwrite each other’s deploy target. A shared URL under per-pull-request names passes silently: the trigger matches and the run executes against whatever was deployed last.
Pull request
Linking a deployment to its pull request requires a connected GitHub or GitLab integration covering the deploying repository.metadata.pullRequestNumber names the pull request to read; it does not replace the integration. A report for a repository with no integration succeeds and carries no pull request. See PR testing.
Evaluation
A deployment’s firstsuccess status evaluates every trigger in the workspace. No later status does, and a trigger created or resumed afterwards is not evaluated against it. To evaluate a deploy again, report it under a new providerDeploymentId.
QA Wolf records one verdict per trigger. deployment.listTriggerEvaluations returns them.
Verdicts are a snapshot. Editing or deleting a trigger later does not change them. A verdict with no trigger id belongs to a trigger deleted since.