Prove that Linear holds this issue on the intended team. The record exists with the intended title. It does not prove the workflow state, and it does not prove the assignee.

Contract identity.
FactValue
Contract idlinear.issue.created
Version1.0.0
Hashbf6f7d609cf356ab
Completion levelcreated
PublisherBuilt and signed by Provely.
CertificationProvisional
SkillLinear GraphQL API 0.1.0
Valid for provider API versionsfp_2026_09

What is the intent?

Create an issue with this title on this team.

What is the subject and the action?

MemberValue
Subject typelinear.issue
Subject identityissue_id = $action.result.issueCreate.issue.id
Canonical effectwork.issue_create
Provider operationmutation issueCreate
Idempotencynone, retry is not safe

How does the evidence correlate with this operation?

StrategyAssuranceKeysRequired
resource_idstrongissue_id from $action.result.issueCreate.issue.idyes
fingerprintweakteam_id from $input.team_id; title from $input.titleno

Which evidence does the contract require?

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

ChannelLevelIndependenceVerifierDescription
issue_readbackE2provider readbackhttpRead the issue with its team, its workflow state, and its assignee. The http verifier returns the parsed GraphQL body. A path starts with $observed.<channel>.data, and $observed.<channel>.errors states a refusal.
issue_created_eventsE3provider eventwebhookThe Issue.create events for the intended title since the operation started. The webhook verifier returns {events, count, latest, earliest, types, duplicates_dropped}. A count above one shows a second issue, and the API has no idempotency key to stop it.

Which conditions must all hold for VERIFIED?

ConditionMeaningPathOperatorExpectedEvidence
issue_readback_carries_no_errorsThe answer carries no errors array. Linear answers the status code 200 for an operation that succeeded in part, so the status code states nothing.$observed.issue_readback.errorsabsentundefinedissue_readback
issue_presentThe provider holds the issue with the returned identifier.$observed.issue_readback.data.issue.ideq$action.result.issueCreate.issue.idissue_readback
issue_team_matchesThe issue belongs to the team that the intent named.$observed.issue_readback.data.issue.team.ideq$input.team_idissue_readback
issue_created_in_windowThe provider created the issue after the operation started.$observed.issue_readback.data.issue.createdAttime_after$operation.created_atissue_readback
issue_title_matchesThe title of the issue equals the requested title.$observed.issue_readback.data.issue.titleeq$input.titleissue_readback
issue_created_eventAt least one Issue.create event names the title of this issue. The duplicate guard reads the same channel, so a workspace with no webhook cannot verify and cannot miss a second issue either.$observed.issue_created_events.countgte1issue_created_events

Which conditions give CONTRADICTED?

ConditionClassReasonPathOperatorExpected
issue_on_wrong_teamwrong subjectThe issue belongs to a different team than the intent named.$observed.issue_readback.data.issue.team.idne$input.team_id
issue_title_differswrong subjectThe issue carries a different title than the intent named.$observed.issue_readback.data.issue.titlene$input.title
issue_predates_operationpre existing stateThe issue is older than the operation. It proves nothing.$observed.issue_readback.data.issue.createdAttime_before$operation.created_at
duplicate_issue_presentduplicate side effectLinear created more than one issue with this title since the operation started. Do not retry.$observed.issue_created_events.countgt1

Which observed states map to a verdict before completion?

RuleMatchVerdictReason
issue_readback_refused$observed.issue_readback.errors exists undefinedUNVERIFIABLELinear answered the read with the status code 200 and an errors array. The answer is a refusal and it is no evidence.

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?

  • linear.graphql#/mutations/issueCreate: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/types/IssuePayload/fields/issue: linear.graphql, retrieved 2026-09-09
  • linear.docs.issues#issues-in-the-linear-graphql-api/create-an-issue: linear.docs.issues, retrieved 2026-09-09
  • linear.docs.versions#api-versions/no-version: linear.docs.versions, retrieved 2026-09-09
  • linear.docs.issues#issues-in-the-linear-graphql-api/error-handling: linear.docs.issues, retrieved 2026-09-09
  • linear.docs.issues#issues-in-the-linear-graphql-api/error-handling/p2: linear.docs.issues, retrieved 2026-09-09
  • linear.docs.issues#issues-in-the-linear-graphql-api/the-endpoint: linear.docs.issues, retrieved 2026-09-09
  • linear.graphql#/queries/issue: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/types/Issue/fields/id: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/types/Issue/fields/team: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/inputs/IssueCreateInput/fields/teamId: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/types/Issue/fields/createdAt: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/types/Issue/fields/title: linear.graphql, retrieved 2026-09-09
  • linear.graphql#/inputs/IssueCreateInput/fields/title: linear.graphql, retrieved 2026-09-09
  • linear.events#/events/Issue.create: linear.events, retrieved 2026-09-09
  • linear.docs.webhooks#linear-webhooks/the-fields-of-a-data-change-event: linear.docs.webhooks, retrieved 2026-09-09
  • linear.webhooks.graphql#/types/IssueWebhookPayload/fields/title: linear.webhooks.graphql, retrieved 2026-09-09

Can linear.issue.created return VERIFIED from the action response alone?

No. The minimum evidence level is E2. The action response is E1. The completion conditions read issue_readback and issue_created_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.