At a glance
The percentage of Vortex IQ findings created in Linear in the last 90 days that have reachedcompletedorcanceledstate. Linear’s cycle-driven completion culture means engineering teams typically run this card higher than marketing teams on Asana or ClickUp; below 65% on Linear is the alarm threshold rather than the 50% used elsewhere, because Linear teams are expected to close cleanly.
| The formula | resolved_in_window ÷ created_in_window, where resolved_in_window counts Linear issues with vortex-iq-finding label, state.type ∈ {completed, canceled}, AND completedAt (or canceledAt) within the 90-day window; created_in_window counts issues with the same label and createdAt within the same window. |
| API endpoints | Linear GraphQL issues(filter: {labels: {name: {eq: "vortex-iq-finding"}}, createdAt: {gte: "<90d_ago>"}}), and a parallel query filtering by completedAt/canceledAt. |
| Window | Rolling 90 days, refreshed hourly. The headline number updates on every webhook for the live count; the rate calculation is hourly to smooth single-issue volatility. |
| What “resolved” means | state.type ∈ {completed, canceled}. We treat both as resolved because the team has decided the issue’s fate. |
| Cancelled treatment | Counts as resolved. Linear’s canceled is the platform’s idiomatic “won’t do” state. |
| Workspace scope | All vortex_iq_outbound Linear teams. |
| Time zone | UTC for both createdAt and completedAt/canceledAt. |
| Alert trigger | < 50% raises a critical alert. Note that on Linear, sustained values below 65% should already prompt investigation, the 50% threshold is the universal floor, not the Linear-specific target. |
| Sentiment thresholds | Gauge: green ≥ 75%, amber 50-74%, red < 50%. |
| Multi-team aggregation | Yes, computed on summed numerator and denominator. Per-team stack panel available. |
| Roles | owner, operations |
Calculation
Calculated automatically from your Linear data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US home-fitness brand on Shopify Plus. Engineering runs Linear with weekly cycles, two teams (ENG, INFRA). Snapshot taken on 02 May 26 at 12:00 EDT.| Last 90 days (02 Feb 26 - 02 May 26) | Count |
|---|---|
Findings created (Linear issues with vortex-iq-finding label, createdAt in window) | 96 |
Findings completed (above set, AND state.type = 'completed', completedAt in window) | 64 |
Findings cancelled (above set, AND state.type = 'canceled', canceledAt in window) | 14 |
| Findings still open from window | 18 |
| Findings re-created (counted once on first close in numerator) | 4 |
- 81% sits in the green band (≥ 75%). Healthy on any PM tool, expected on Linear. The team is closing cleanly and matches the platform’s design intent.
- The 14 cancelled issues represent a healthy ratio. Cancellation rate around 15% on Linear is normal: the team is reviewing audit findings and explicitly closing the loop on items that don’t merit fixing. A cancellation rate near zero is a yellow flag (the team is fixing everything, including low-value items); a rate above 30% is also a yellow flag (the audit programme may be over-finding).
- Pair with Avg Time-to-Fix. An 81% rate with a 4-day mean cycle time is excellent. An 81% rate with a 14-day mean would be a softer read, because Linear teams typically finish within their cycle.
- The per-team breakdown matters. ENG might run 85%, INFRA might run 75%. Open the per-team stack panel; if INFRA is dragging the blended number down, it usually maps to a vendor-pending or infrastructure-deferred cluster. The fix is operational, not capacity.
- For Linear, target 80% sustained. Below 65% is alarm territory on Linear specifically (lower than the 50% universal floor) because the platform’s design intent is clean closure; below 65% means the cycle discipline is breaking. Above 85% means the team is either small enough that audit volume is a tiny share, or the team is hyper-focused on audit clearance, both can be healthy.
Sibling cards merchants should reference together
| Card | Why pair it with Resolution Rate | What the combination tells you |
|---|---|---|
| VortexIQ Findings Open | Resolution rate’s denominator-half. | Falling rate plus climbing open count = capacity bottleneck; falling rate plus flat open = audit programme finding less. |
| Abandoned Findings (>14d) | Issues that count in the denominator but never become numerators. | High abandoned plus low rate = execution discipline gap, rare on Linear; if it appears, investigate immediately. |
| Avg Time-to-Fix (days) | Cycle time inside this rate. | High rate plus low time-to-fix = excellent. High rate plus high time-to-fix = closing eventually but slowly. |
| Cycle Velocity (avg) | Capacity ceiling. | Flat rate with rising velocity = audit work not entering cycles. |
| Cycle Progress | Whether findings are getting committed to the current cycle. | Low cycle progress + low rate = findings queued but never pulled in. |
| Throughput Trend | The slope. | A rate dipping while throughput climbs = deliberate prioritisation away from audit work. |
| Cycle Time by Priority | How fast different priorities clear. | Findings priority-mapping should align: P0/P1 findings clearing fast, P3 findings tolerable to leave. |
Reconciling against the vendor’s own dashboard
Where to look in Linear’s own UI:
linear.app then for each connected team open Insights (the analytics module, available on Standard and above). Add a Completion rate chart filtered by Label is "vortex-iq-finding", time range Last 90 days. Linear’s Insights also provides Cycle time and Throughput charts that pair naturally with this card’s reading. The Workspace → Insights view rolls these up across teams.
Linear’s Insights “Completion rate” chart is the closest direct match to this card. The math is completed ÷ created over the chosen window, which is what we compute.
Why our number may legitimately differ from Linear’s Insights chart:
| Reason | Direction | Why |
|---|---|---|
| Cancelled treatment | Ours typically higher | Linear’s Insights “Completion rate” usually counts only completed; we count completed + canceled because both are valid resolutions of an audit finding. To match, change Insights filter to include cancelled. |
| Window definition | Either | Linear’s Insights “Last 90 days” rolls daily at midnight in your account-profile timezone; our window rolls hourly in UTC. |
| Re-created findings | Ours lower | Insights counts each completion event; we count once per finding-id. |
| Label spelling | Ours scoped | We read vortex-iq-finding exactly. |
| Multi-team aggregation | Ours wider | Insights is per-team by default; we sum across all connected teams. |
| Card | Expected relationship | What causes the divergence |
|---|---|---|
datadog.dd_health_score | Often correlated. Linear teams under sustained Datadog incidents see resolution rate drop 1-2 weeks later. | A high Datadog Health Score with a low Linear resolution rate means production is fine but the team is falling behind on the work that prevents future regressions. |
newrelic.nr_apdex | Same shape. | Same lag. |
Known limitations / merchant FAQs
Linear Insights shows 76% but you say 81%. Why? Five points of gap is normal. Most likely cause: cancelled treatment, we count bothcompleted and canceled as resolved; Linear’s Insights default usually counts only completed. To match, change the Insights filter to include cancelled.
Does cancelled count as resolved?
Yes. Linear’s canceled is the platform’s idiomatic “won’t do” state, the team has decided not to fix the issue. We treat both decisions (fix it, decide not to fix it) as resolutions because closing the loop is what the rate measures. If your team uses cancellation as “we’ll do this later, not closing the loop yet”, consider whether it is the right state, our advice is to leave the issue open if the decision is genuinely deferred.
Our rate sits at 60%. Should I be concerned?
Yes, on Linear specifically. The universal alarm is < 50%, but on Linear the platform’s design intent is clean closure, sustained values below 65% are early warning. Standard playbook: open this card, Findings Open, Abandoned Findings, and Cycle Progress. Within 5 minutes you’ll know if it’s a leave/incident pattern or a planning bottleneck.
Throughput dropped this week, rate is still high. What’s happening?
Common Linear pattern: end-of-cycle bulk completion. Engineering teams often complete many issues in the last day of the cycle; the throughput chart shows the dip during the cycle while the rate stays high because the closures all land at the end. Check the trend over a full cycle, not a single day.
Multi-team rate: which team’s rate matters?
The lowest. Open the per-team stack panel; on Linear the rate usually clusters tightly across teams (within 10 points), so a team running 15+ points below the workspace average is the actionable signal.
Today’s rate looks volatile. Why?
Less so on Linear than on most PM tools, because cycles cluster completion events. Daily volatility usually reflects the cycle position (mid-cycle quiet, end-of-cycle spike), not noise.
Resolution rate climbed but I don’t think the team did anything different. What changed?
Three usual causes. (1) Audit programme produced fewer findings (denominator shrank). Check Findings Open trend. (2) End-of-cycle bulk-cancel of stale items. Check Linear’s Activity log per team. (3) A team boundary changed, a team was renamed, archived, or removed from the connector routing; the rate can shift by 5-10 points.
Is Linear the right tool for tracking this metric?
For engineering-heavy ecommerce teams, yes. The cycle/state-type model and Insights module are the cleanest of any PM tool we connect to for this metric. The cost is that Linear is opinionated against marketing/ops use, those teams will find Asana, ClickUp, or Monday richer. Smartsheet, Teamwork, and Basecamp serve different niches (PMO spreadsheet rollups, agency time-tracking, small-team simplicity respectively); each has its own resolution-rate read but Linear’s is the most direct.