Jira
Govern issue writes and workflow transitions with deterministic identity and bounded retries.
RunwayCtrl wraps Jira writes at the tool boundary. Every issue create, comment, assignment, or transition passes through policy enforcement and produces a traceable attempt record.
What we govern
Initial support focuses on high-risk Jira writes. Each action has a defined scope and prevents specific failure modes.
Create issue
Add comment
Update fields
Assign issue
Transition issue
Create issue link
Stable action identity
ActionKeys are developer-provided or derived from canonicalized action inputs. Same write = same key = deduplicable.
Canonicalization: normalize fields, stable hashing, deterministic ordering. No fuzzy intent matching.
jira.issue.create:{tenant}:{project}:{issue_type}:{summary_hash}Canonical hash of issue identity. Same create request = same key = dedupe.
jira.issue.comment:{site}:{issue_key}:{comment_hash}Identity tied to one comment on one issue. Prevents duplicate comments.
jira.issue.update:{site}:{issue_key}:{field_hash}Canonical update identity for a specific field set on a specific issue.
jira.issue.assign:{site}:{issue_key}:{assignee}Per-issue assignment identity. Prevents duplicate assignee changes.
jira.issue.transition:{site}:{issue_key}:{status}Per-issue, per-status transition identity. Same target status = same key.
Opinionated presets
Start with a preset, customize as needed. Each preset defines retry budget, backoff curve, stop conditions, and lease scope.
Safe default
Balanced for most issue and workflow automations
High-volume ops
Stricter limits for bursty project automations
Strict dedupe
Single-attempt mode for sensitive workflows
Prevent dueling agents
Short-lived leases prevent multiple agents from racing the same Jira issue. Only one agent holds the lease at a time.
Per-issue lease
One agent per issue at a time. Prevents racing updates, assignments, or transitions.
Per-comment lease
One agent per comment identity. Prevents duplicate comments on the same issue.
Per-action lease
Fine-grained control. One agent per specific action type per issue.
What you get
Every governed action produces an attempt record. The ledger is the source of truth for governed Jira writes.
Trace fields align to OpenTelemetry + W3C Trace Context when enabled.
{
"schema_version": "0.1",
"attempt_id": "att_01...",
"action_key": "jira.issue.comment:acme:PROJ-142:7b2c...",
"integration": "jira",
"target": {
"site": "acme.atlassian.net",
"issue_key": "PROJ-142"
},
"policy": {
"retry_budget": 3,
"backoff": [250, 500, 1000],
"lease_scope": "per-action"
},
"outcome": "success",
"timing": {
"started_at": "2026-03-06T19:19:12Z",
"finished_at": "2026-03-06T19:19:13Z"
},
"trace": {
"trace_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"span_id": "00f067aa0ba902b7"
},
"tool": {
"name": "jira.addComment",
"endpoint": "POST /rest/api/3/issue/{issueIdOrKey}/comment"
},
"result": {
"issue_key": "PROJ-142",
"comment_id": "10001"
},
"redaction": true,
"excerpt": null
}Attempt record includes action identity, timing, policy, outcome, and tool metadata.
What's not yet
Initial support is scoped to the highest-value write paths. These capabilities are not included in the current preview.
- -Bulk issue import or large migration jobs
- -Full workflow administration and configuration changes
- -Project provisioning or deletion
- -Marketplace app lifecycle management
- -Broad Jira API coverage beyond initial governed actions
- -Arbitrary automation graph orchestration
Bring one issue workflow
We'll help define ActionKeys and policies for your first Jira workflow. You get early builds, a shared Slack channel, and direct input on priorities.