AIOpsAnalyst

Thirty thousand events in. A short list of decisions out.

AIOpsAnalyst reads logs, GitHub issues, failed CI runs and status-page outages, puts the ones that are the same problem together, has a model label each problem once, and lets a fixed rulebook, not the model, decide what happens to it.

TriageGitHub issue
Came from
GitHub issue · pytorch/pytorch #196208
What happened

torch.compile crashes with InternalTorchDynamoError when an OrderedDict is mutated concurrently

Kind
crash
How bad
high
In its pile
1 event
How sure
Rule that decided
2. confidence at or above 0.9
Not: Wakes a personDrafted, waits for approvalRoutine, droppedNot sure, recorded
Becomes a ticketAIOPS-21 · Bug

A real issue from the pytorch repository, tagged and decided. Follow it through

31,155 events came in

905 problems, 34.4× fewer to read

  • 350becomes a ticket
  • 18wakes a person
  • 216drafted, waits for approval
  • 304routine, dropped
  • 17not sure, recorded

The demo tracker holds a sample of 26 of the 350.

Where the 31,155 went

Events that are the same problem are grouped before any model sees them, so the model reads 905 problems, not 31,155 lines. It writes a label on each. Then the rulebook routes it, and the same input always takes the same route.

GitHub issues330failed CI runs150status-page incidents175server log lines20,500supercomputer log lines10,000905problemsone model read eachBecomes a ticket350Wakes a person18Drafted, waits for approval216Routine, dropped304Not sure, recorded17pytorch/pytorch #196208 → AIOPS-21
  1. GitHub issues330
  2. failed CI runs150
  3. status-page incidents175
  4. server log lines20,500
  5. supercomputer log lines10,000

905 problems, 34.4× fewer things to read

  1. Becomes a ticket350
  2. Wakes a person18
  3. Drafted, waits for approval216
  4. Routine, dropped304
  5. Not sure, recorded17
One dot is a hundred events. The lit route is the pytorch crash on the tag above.Events in, by kind of source, and the problems they became.

The rulebook, read top to bottom. The first rule that matches decides.

  1. severity is criticala person looks first
  2. confidence at or above 0.9acts on it alone(the rule that decided the pytorch crash)
  3. confidence at or above 0.7drafts it for approval
  4. severity is higha person looks first
  5. anything elserecords it as unsure

When it acts alone, it sends a ticket only for crashes, errors, slowdowns and feature requests. Anything else it is sure about is routine, and dropped.

Becomes a ticketWhat is in itHide

Sure enough, and something a team should fix. The rulebook sends it to the tracker.

The demo tracker holds a sample of 26 of these; the rulebook would file every one.

Wakes a personWhat is in itHide

Critical, or serious and uncertain. A human looks before anything happens.

Drafted, waits for approvalWhat is in itHide

Fairly sure. A ticket is drafted and a person approves it.

  • generating <*> 8,186 events
  • <*> <*> <*> HTTP/1.1" status: <*> len: <*> time: <*> 2,485 events
  • Interrupted while waiting for message on queue 789 events
Routine, droppedWhat is in itHide

Sure it is routine chatter or a question. Recorded, nothing sent.

  • Received disconnect from <*> 11: Bye Bye [preauth] 762 events
  • Received connection request <*> 743 events
  • Send worker leaving thread 698 events
Not sure, recordedWhat is in itHide

Too unsure to act and nothing forces a human. Recorded as unsure, on purpose.

  • NA 1 event
  • CE sym <*> at <*> mask <*> 151 events
  • [<0213d341>] read_swap_cache_async+0x41/0x84 14 events

Five things that came in, and what happened to each

Three became tickets, one went to a person, and one it was not sure about.

Increased Errors for Durable Objects

Status-page incident · www.cloudflarestatus.com

Cloudflare is aware of, and investigating an issue with Durable Objects which potentially impacts a subset of customers. Durable Objects are...

Becomes a ticketAIOPS-26

NA

GitHub issue · microsoft/vscode #326098

Type: Bug Got this by error VS Code version: Code 1.119.0 (8b640eef5a6c6089c029249d48efa5c99adf7d51, 2026-05-05T11:23:50-07:00) OS version:...

Not sure, recorded

Check it yourself

It was measured against labels nobody here chose

On 111 issues, its labels agree with the ones each repository's own maintainers applied at Cohen's kappa 0.631. The failures and a rejected improvement are written up too.

How it was measured

It is still running

A scheduled job triages new GitHub issues every six hours and commits the result. The last run was on .

See the live feed