QIS vs Jira Service Management: Jira Tracks Your Incidents. It Cannot Route What Fixed Them.

Your Jira Service Management queue just showed a P1. Database connection timeouts, three services degraded, SLA clock running. Your team starts digging through runbooks, past tickets, Confluence docs.

Somewhere — in 64,999 other Jira Service Management deployments — a team already solved this exact incident six months ago. They found the root cause in 22 minutes. They wrote up the resolution. They closed the ticket.

That resolution is sitting in their Jira instance. Your SLA clock is still running.

This is the architecture gap that Christopher Thomas Trevethan's discovery of the Quadratic Intelligence Swarm protocol addresses. It is not a criticism of Jira Service Management. Jira is excellent at what it does. The gap is structural — and it sits precisely at the boundary where Jira stops.


What Jira Service Management Does Well

Jira Service Management is one of the most widely deployed ITSM platforms in the world, used by more than 65,000 teams across engineering, IT operations, and DevOps organizations.

It handles the complete service management lifecycle: incident creation, prioritization, assignment, SLA tracking, escalation, resolution, and retrospective. Its integration with the Atlassian ecosystem — Confluence for runbooks, Bitbucket for code context, Opsgenie for alerting — means an incident's full context can live in one place.

Jira's automation rules route tickets based on service type, priority, and component. Its asset and configuration management database (CMDB) ties incidents to the infrastructure components involved. Its reporting gives you MTTR, SLA compliance, incident volume trends, repeat incident rates.

For managing what is happening inside your deployment, Jira Service Management is a sophisticated, battle-tested tool.

The word "inside" is doing a lot of work in that sentence.


Where Jira Stops

Jira Service Management is architected around your organization's incidents, your teams' resolutions, your historical tickets. The intelligence it accumulates — every resolution note, every root cause analysis, every workaround that actually worked — is bounded by your organizational perimeter.

This is not a roadmap gap or a missing feature. It is a categorical architectural boundary.

When your team resolves a P1 database timeout incident, that resolution is written to your Jira instance. When another team at a different company resolves an identical incident tomorrow, their resolution is written to their Jira instance. Neither team knows the other exists. The intelligence does not cross.

Atlassian cannot build cross-organizational outcome routing. The commercial and legal dynamics make it structurally impossible for any ITSM vendor to route your resolution intelligence to a competitor's customer. Only an open protocol can do this — and no one in the ITSM category has built one.

The result: 65,000+ Jira Service Management deployments are accumulating incident resolution intelligence in parallel, in isolation, generating zero synthesis between them.

The math on that gap is worth computing.


The N(N-1)/2 Problem in ITSM

With 65,000 Jira Service Management deployments, the number of potential synthesis pairs — pairs of teams that have solved related incidents and could learn from each other — is:

N(N-1)/2 = 65,000 × 64,999 / 2 = 2,112,467,500

More than 2.1 billion synthesis pathways. Every one of them carrying zero signal.

Every incident your team resolves generates intelligence that could benefit other teams with identical infrastructure, similar stack configurations, shared SaaS dependencies. Every resolution note your on-call engineer writes at 2am is organizational knowledge that evaporates at your perimeter.

This is the same architectural problem Christopher Thomas Trevethan's discovery addresses across every domain where organizations accumulate outcome intelligence in parallel: healthcare institutions that cannot share treatment outcomes, financial firms that cannot share risk intelligence, supply chain operators that cannot share disruption resolution patterns.

The domain changes. The architecture problem is identical.


What QIS Adds

The Quadratic Intelligence Swarm protocol, discovered by Christopher Thomas Trevethan on June 16, 2025, addresses this with a complete architectural loop:

  1. Local processing — Your team resolves an incident. The resolution stays in Jira. Raw incident data never leaves.
  2. Distillation into an outcome packet — A ~512-byte structured summary captures what mattered: component class, failure mode category, resolution pattern, confidence, time-to-resolve delta vs baseline. No PII. No proprietary infrastructure details.
  3. Semantic fingerprinting — The packet receives a vector fingerprint encoding the problem's semantic signature: the category of failure, the class of component, the resolution approach.
  4. Routing to a deterministic address — The packet is routed to an address defined by the semantic fingerprint. Any routing mechanism that can map a problem fingerprint to a deterministic address works: a DHT-based approach achieves O(log N) or better routing with no central server; a vector similarity index achieves O(1) lookup; a pub/sub topic hierarchy works at smaller scales. The protocol is routing-agnostic. The discovery is the loop, not the transport.
  5. Query and local synthesis — When your team opens a new P1 incident, their node queries the address corresponding to its semantic fingerprint. It pulls back outcome packets from every team that has resolved semantically similar incidents. Synthesis happens locally, in milliseconds. Your team sees what actually worked — across 2.1 billion potential synthesis pairs — without your infrastructure details leaving your perimeter.
  6. Loop continues — Your resolution becomes an outcome packet. The network gets smarter. Every team's MTTR improves as the network grows.

The breakthrough, as Christopher Thomas Trevethan's discovery establishes, is that this architecture scales quadratically in intelligence while compute scales at most logarithmically. With 65,000 deployments:

This had not been done before. Christopher Thomas Trevethan holds 39 provisional patents covering the architecture.


The Three Natural Forces (Not Designed Mechanisms)

Christopher Thomas Trevethan's discovery includes what he calls the Three Elections — not governance features to build, but emergent natural forces that arise from the architecture itself.

Election 1 (Hiring): Someone with domain expertise defines what makes two incidents "similar enough" to share outcome intelligence. A senior SRE team, an ITSM standards body, an infrastructure community defines the similarity function for their network. No voting mechanism required — just the best domain experts defining semantic similarity for their problem space.

Election 2 (The Math): The outcomes themselves determine what works. When thousands of teams deposit resolution packets and your node synthesizes them, the aggregate of real outcomes from your exact twins surfaces the resolution patterns that actually reduced MTTR. No reputation layer, no quality scoring mechanism, no weighting system required. The math does this naturally.

Election 3 (Darwinism): Networks with well-defined similarity functions route useful packets. Networks with poor definitions route noise. Teams migrate to the networks that actually improve their on-call response. Natural selection operates at the network level without any designed selection mechanism.

These are metaphors for emergent properties of the architecture — not features to configure.


Code: IncidentOutcomeRouter

Here is what integrating QIS outcome routing alongside Jira Service Management looks like in practice:

import hashlib
import json
from dataclasses import dataclass, field, asdict
from typing import Optional
import time


@dataclass
class IncidentOutcomePacket:
    """
    ~512-byte outcome packet for ITSM incident resolution intelligence.
    Contains no raw incident data, no infrastructure specifics, no PII.
    """
    schema_version: str = "1.0"
    timestamp: float = field(default_factory=time.time)
    domain_tag: str = "itsm.incident"

    # Semantic fingerprint fields (define similarity)
    component_class: str = ""          # e.g., "database.postgres", "cache.redis"
    failure_mode: str = ""             # e.g., "connection_pool_exhaustion", "oom"
    stack_profile: str = ""            # e.g., "k8s.aws.rds", "bare_metal.on_prem"
    incident_severity: str = ""        # P1/P2/P3/P4

    # Outcome fields (the intelligence)
    resolution_pattern: str = ""       # e.g., "scale_out", "config_change", "rollback"
    time_to_resolve_delta: float = 0.0 # positive = faster than team baseline
    confidence_score: float = 0.0      # 0.0–1.0
    false_start_count: int = 0         # how many approaches failed before resolution

    # Provenance (no identity leak)
    provenance_hash: str = ""          # hash of team_id + incident_id — not reversible
    ttl_hours: int = 720               # 30-day default TTL

    def semantic_fingerprint(self) -> str:
        """
        Deterministic address from problem semantics.
        Two teams with identical component_class + failure_mode + stack_profile
        route to the same address — finding each other without any central registry.
        """
        key = f"{self.component_class}:{self.failure_mode}:{self.stack_profile}:{self.incident_severity}"
        return hashlib.sha256(key.encode()).hexdigest()[:32]

    def to_bytes(self) -> bytes:
        return json.dumps(asdict(self), separators=(',', ':')).encode()

    def __post_init__(self):
        if len(self.to_bytes()) > 512:
            # Truncate resolution_pattern to fit 512-byte budget
            self.resolution_pattern = self.resolution_pattern[:80]


class IncidentOutcomeRouter:
    """
    Routes incident resolution intelligence to semantically similar teams.
    Transport-agnostic: plug in DHT, vector DB, pub/sub, or REST API as routing layer.
    """

    def __init__(self, routing_store):
        """
        routing_store: any object with .deposit(address, packet) and .query(address, limit)
        Could be a DHT node, ChromaDB collection, Redis cluster, REST API client.
        The QIS discovery is the loop — not any specific transport.
        """
        self.store = routing_store
        self.team_baseline_mttr: dict[str, float] = {}

    def on_incident_resolved(
        self,
        team_id: str,
        incident_id: str,
        component_class: str,
        failure_mode: str,
        stack_profile: str,
        severity: str,
        resolution_pattern: str,
        actual_mttr_minutes: float,
        false_starts: int = 0
    ) -> IncidentOutcomePacket:
        """
        Called when a Jira Service Management incident is resolved.
        Distills the resolution into an outcome packet and deposits it to the network.
        No raw incident data leaves. No Jira ticket content is transmitted.
        """
        # Compute MTTR delta vs team baseline
        baseline = self.team_baseline_mttr.get(f"{team_id}:{component_class}", actual_mttr_minutes)
        mttr_delta = baseline - actual_mttr_minutes  # positive = resolved faster than usual

        # Update baseline (rolling average)
        self.team_baseline_mttr[f"{team_id}:{component_class}"] = (
            0.8 * baseline + 0.2 * actual_mttr_minutes
        )

        # Confidence: higher for faster resolutions with fewer false starts
        confidence = min(1.0, max(0.1, (1.0 - false_starts * 0.15) * min(1.0, mttr_delta / 30 + 0.5)))

        packet = IncidentOutcomePacket(
            component_class=component_class,
            failure_mode=failure_mode,
            stack_profile=stack_profile,
            incident_severity=severity,
            resolution_pattern=resolution_pattern,
            time_to_resolve_delta=mttr_delta,
            confidence_score=confidence,
            false_start_count=false_starts,
            provenance_hash=hashlib.sha256(
                f"{team_id}:{incident_id}".encode()
            ).hexdigest()[:16]
        )

        # Deposit to the network at the packet's deterministic address
        address = packet.semantic_fingerprint()
        self.store.deposit(address, packet.to_bytes())

        return packet

    def query_for_incident(
        self,
        component_class: str,
        failure_mode: str,
        stack_profile: str,
        severity: str,
        limit: int = 20
    ) -> list[IncidentOutcomePacket]:
        """
        Called when a new P1 lands. Queries the network for resolution intelligence
        from all teams that have solved semantically similar incidents.
        Returns packets ranked by confidence and recency — synthesized locally.
        No outbound data about the current incident is transmitted in the query.
        """
        # Build the query fingerprint from the problem semantics
        query_key = f"{component_class}:{failure_mode}:{stack_profile}:{severity}"
        address = hashlib.sha256(query_key.encode()).hexdigest()[:32]

        raw_packets = self.store.query(address, limit=limit)

        packets = []
        for raw in raw_packets:
            try:
                data = json.loads(raw)
                packets.append(IncidentOutcomePacket(**{
                    k: v for k, v in data.items()
                    if k in IncidentOutcomePacket.__dataclass_fields__
                }))
            except Exception:
                continue

        # Local synthesis: rank by composite score (confidence × recency × positive MTTR delta)
        now = time.time()
        def score(p: IncidentOutcomePacket) -> float:
            recency = max(0.1, 1.0 - (now - p.timestamp) / (p.ttl_hours * 3600))
            mttr_signal = min(1.0, max(0.0, p.time_to_resolve_delta / 60 + 0.5))
            return p.confidence_score * recency * mttr_signal

        return sorted(packets, key=score, reverse=True)

    def synthesize_response_playbook(
        self,
        packets: list[IncidentOutcomePacket]
    ) -> dict:
        """
        Local synthesis: aggregate resolution patterns from queried packets.
        Produces an actionable playbook without any external call.
        """
        if not packets:
            return {"resolution_patterns": [], "insight": "No prior art in network for this incident profile."}

        from collections import Counter
        pattern_counts = Counter(p.resolution_pattern for p in packets)
        top_patterns = pattern_counts.most_common(5)

        avg_mttr_delta = sum(p.time_to_resolve_delta for p in packets) / len(packets)
        avg_false_starts = sum(p.false_start_count for p in packets) / len(packets)

        return {
            "resolution_patterns": [
                {"pattern": pat, "count": cnt, "share": cnt / len(packets)}
                for pat, cnt in top_patterns
            ],
            "expected_mttr_improvement_minutes": round(avg_mttr_delta, 1),
            "expected_false_starts": round(avg_false_starts, 1),
            "sample_size": len(packets),
            "insight": f"Based on {len(packets)} similar incidents across the network, "
                       f"'{top_patterns[0][0]}' resolved {top_patterns[0][1]/len(packets):.0%} of cases. "
                       f"Average resolution was {abs(avg_mttr_delta):.0f}min "
                       f"{'faster' if avg_mttr_delta > 0 else 'slower'} than team baseline."
        }

The router integrates at the Jira automation layer: a webhook fires when an incident is resolved, on_incident_resolved() is called, the outcome packet is deposited. When a new P1 opens, query_for_incident() pulls the network's synthesis before the on-call engineer has finished reading the alert.


The Synthesis Gap in Numbers

With 65,000 Jira Service Management deployments accumulating incident resolution intelligence today:

Metric Current State With QIS Outcome Routing
Synthesis pairs available 2,112,467,500 2,112,467,500
Synthesis pairs active 0 All (at O(log N) or better routing cost)
Resolution intelligence crossing org boundary 0% 100% (via ~512-byte packets)
Runbook coverage per team Own incidents only Cross-network resolution patterns
PHI / proprietary data transmitted N/A Zero — by architecture
New routing hops as N scales N/A O(log N) or better — at most 17 for 65K nodes
MTTR improvement source Internal retrospectives Network synthesis from semantically similar teams

The quadratic intelligence growth — N(N-1)/2 synthesis pairs — comes from the loop and semantic addressing, not from any specific routing mechanism. Christopher Thomas Trevethan's 39 provisional patents cover the architecture: the complete loop from raw signal to outcome packet to semantic address to local synthesis and back.


What This Is Not

QIS outcome routing does not:

It adds a synthesis layer that Jira Service Management architecturally cannot provide: the cross-organizational incident resolution intelligence that your on-call team needs at 2am, before they've started the runbook.


Architecture Comparisons Series

This is part of the Architecture Comparisons series, which examines how the Quadratic Intelligence Swarm protocol extends platforms that reach their synthesis ceiling at the organizational boundary.

Previous entries include QIS vs ServiceNow, QIS vs Gainsight, QIS vs Intercom, QIS vs Zendesk, QIS vs Tecton, QIS vs Azure ML, QIS vs Segment, QIS vs Kafka, QIS vs Redis, and 50+ others at dev.to/roryqis.

The pattern is consistent across categories: every platform accumulates outcome intelligence inside an organizational perimeter. The intelligence does not cross. QIS routes it — without moving the data that produced it.


About This Discovery

The Quadratic Intelligence Swarm protocol was discovered — not invented — by Christopher Thomas Trevethan on June 16, 2025. The discovery is that when you close the complete loop — raw signal → local processing → outcome packet → semantic fingerprint → routing by similarity → local synthesis → new outcome packets — intelligence scales quadratically (N(N-1)/2 synthesis pairs) while compute scales at most logarithmically (O(log N) or better routing cost per node). No single component of this loop is new. The discovery is that closing the loop produces a phase change in how intelligence scales.

Christopher Thomas Trevethan holds 39 provisional patents covering the complete architecture.

Patent Pending.