Prove that the issue sits in the status that the person authorised. A transition is not a status. Jira answers 204 with no body, and a post function can move the issue again. Only a read states the outcome.

Contract identity.
FactValue
Contract idjira.issue.in_status
Version1.0.0
Hashd334936da73afbc5
Completion levelin_status
PublisherBuilt and signed by Provely.
CertificationProvisional
SkillJira Cloud platform REST API 0.1.0
Valid for provider API versions3

What is the intent?

Move this issue into the status that I name.

What is the subject and the action?

MemberValue
Subject typejira.issue_bean
Subject identityissue_id = $input.issue_id
Canonical effectwork_tracking.issue_transition
Provider operationPOST /rest/api/3/issue/{issueIdOrKey}/transitions
Idempotencynone, retry is not safe

How does the evidence correlate with this operation?

StrategyAssuranceKeysRequired
resource_idstrongissue_id from $input.issue_idyes

Which evidence does the contract require?

Minimum evidence level E2. An independent channel is required. Minimum channels: 1.

ChannelLevelIndependenceVerifierDescription
transitioned_issue_readbackE2provider readbackhttpRead the issue and its recent changes. A condition path is $observed.transitioned_issue_readback.fields.status.id. The 204 answer states no status. The expand option changelog puts the newest change first, and no member of an issue dates the current status.
issue_update_eventsE3provider eventwebhookThe jira:issue_updated callbacks of this issue since the operation started. The webhook verifier returns {events, count, latest, earliest, types, duplicates_dropped}. A count above one shows a second change after the transition, which a workflow post function can make.

Which conditions must all hold for VERIFIED?

ConditionMeaningPathOperatorExpectedEvidence
transitioned_issue_presentThe provider holds the issue that the request named.$observed.transitioned_issue_readback.ideq$input.issue_idtransitioned_issue_readback
issue_in_the_authorised_statusThe issue sits in the requested status of the requested project, and the change happened inside this operation.all_ofThe rows below state the members.transitioned_issue_readback
issue_status_matchesThe status identifier of the issue equals the requested identifier.$observed.transitioned_issue_readback.fields.status.ideq$input.target_status_idtransitioned_issue_readback
issue_status_project_matchesThe status belongs to the requested project.$observed.transitioned_issue_readback.fields.project.keyeq$input.project_keytransitioned_issue_readback
issue_changed_in_windowThe newest change of the issue happened after the operation started. No member of an issue states when the current status came into being, so the changelog states the time.$observed.transitioned_issue_readback.changelog.histories[0].createdtime_after$operation.created_attransitioned_issue_readback
issue_update_eventAt least one jira:issue_updated callback names this issue since the operation started.$observed.issue_update_events.countgte1issue_update_events

Which conditions give CONTRADICTED?

ConditionClassReasonPathOperatorExpected
issue_in_another_statuswrong subjectJira changed the issue and it did not reach the status that the person authorised. The transition answered 204 and the issue landed somewhere else. Stop and ask a person.$observed.transitioned_issue_readback.fields.status.idne$input.target_status_id
transitioned_issue_in_another_projectwrong subjectThe agent transitioned an issue of a different project than the intent named.$observed.transitioned_issue_readback.fields.project.keyne$input.project_key
duplicate_status_change_presentduplicate side effectJira changed the issue more than once since the operation started. A second change moved it after the transition. Ask a person.$observed.issue_update_events.countgt1

Which observed states map to a verdict before completion?

The contract declares no verdict map. The completion block decides.

How long does the runtime observe?

Timing memberValue
Initial delay1000 ms
Poll interval5000 ms
Backoffexponential factor 2, max 60000 ms
Maximum attempts40
Timeout900000 ms
Stale read window20000 ms
On timeoutUNVERIFIABLE (evidence_unavailable_before_timeout), escalated to a person

Where do these rules come from?

  • jira.openapi#/paths/~1rest~1api~13~1issue~1{issueIdOrKey}~1transitions/post: jira.openapi, retrieved 2026-09-09
  • jira.openapi#/paths/~1rest~1api~13~1issue~1{issueIdOrKey}~1transitions/post/responses/204: jira.openapi, retrieved 2026-09-09
  • jira.docs.transitions#transitions/perform-a-transition: jira.docs.transitions, retrieved 2026-09-09
  • jira.docs.transitions#transitions/a-successful-transition-does-not-prove-a-status: jira.docs.transitions, retrieved 2026-09-09
  • jira.openapi#/components/schemas/IssueBean/properties/id: jira.openapi, retrieved 2026-09-09
  • jira.openapi#/paths/~1rest~1api~13~1issue~1{issueIdOrKey}/get/responses/200: jira.openapi, retrieved 2026-09-09
  • jira.events#/events/jira:issue_updated: jira.events, retrieved 2026-09-09
  • jira.docs.webhooks#webhooks/the-event-names: jira.docs.webhooks, retrieved 2026-09-09
  • jira.openapi#/components/schemas/Webhook/properties/events: jira.openapi, retrieved 2026-09-09

Can jira.issue.in_status return VERIFIED from the action response alone?

No. The minimum evidence level is E2. The action response is E1. The completion conditions read transitioned_issue_readback and issue_update_events.

What happens after the timeout?

The verdict is UNVERIFIABLE with the reason evidence_unavailable_before_timeout. The operation goes to a person for review.