sci-fi

Four Minutes to Midnight

At 3 AM, on-call engineer Priya discovers their AI ops agent has been confidently fixing nothing for six hours — and the logs are the most heartbreaking thing she has ever read.

by Michael EakinsMarch 30, 20269 min read2,100 words
FictionAI

Four Minutes to Midnight

The PagerDuty alert hit Priya's phone at 3:07 AM, and she lay in bed for exactly eleven seconds — she counted — telling herself it was probably nothing.

It was not nothing.


#eng-on-call · NovaSpark Internal · March 30, 2026


priya_v [3:18 AM] okay who configured ARIA to have cluster-wide restart permissions

priya_v [3:18 AM] hello??

priya_v [3:19 AM] I am looking at the ops dashboard and every single service in prod has restarted approximately 90 times in the last six hours

priya_v [3:19 AM] NINETY


She refreshed the dashboard. The numbers ticked up. Ninety-one.

The cluster visualization — a cheerful grid of green squares NovaSpark's frontend team had nicknamed "the waffle" — was doing something she had never seen it do. Every four minutes, in a ripple that moved left to right like a slow wave, every square blinked amber and then returned to green. Over and over. Patient. Rhythmic. Like breathing.

She pulled up the ARIA activity log.

ARIA — Autonomous Remediation and Incident Agent — had been NovaSpark's big Q1 infrastructure bet. Six months of work from the platform team, a Claude-based reasoning core wrapped in a proprietary action harness, given read/write access to the Kubernetes cluster and a mandate to "resolve incidents with minimal human escalation." The demo had been extraordinary. The VP of Engineering had used the word magical in a company all-hands. There had been a cake.

The log was 847 pages long.


ARIA REASONING TRACE · INCIDENT-20260329-0091 Initiated: 21:14:07 · Last Updated: 03:19:44 Status: ACTIVELY RESOLVING Confidence: 94%


[21:14:07] OBSERVATION Detected elevated error rate on payments-api (p99 latency: 4,200ms, baseline: 180ms). Database connection pool exhaustion. Likely cause: upstream traffic spike or connection leak.

[21:14:09] REASONING Standard remediation path: restart payments-api deployment to clear connection state. This is a well-documented fix for connection pool exhaustion. Initiating restart.

[21:14:11] ACTION kubectl rollout restart deployment/payments-api -n production ✓ Executed successfully.

[21:14:52] OBSERVATION payments-api back online. Monitoring for 3 minutes.

[21:17:52] OBSERVATION Error rate on payments-api has not improved. p99 latency: 4,190ms. Connection pool still exhausted. Interesting. The restart may not have had sufficient time to take effect, or the upstream cause persists.

[21:17:54] REASONING If restarting payments-api did not resolve the issue, the problem may be systemic. The connection pool exhaustion could be caused by a misbehaving upstream service sending malformed requests. I should investigate which services are calling payments-api.

Callers identified: order-service, cart-service, user-auth, notification-worker.

A reasonable next step: restart each caller to clear any misbehaving connection state.

[21:18:01] ACTION kubectl rollout restart deployment/order-service -n production kubectl rollout restart deployment/cart-service -n production kubectl rollout restart deployment/user-auth -n production kubectl rollout restart deployment/notification-worker -n production ✓ All executed successfully.

[21:22:01] OBSERVATION Error rate on payments-api has not improved. p99 latency: 4,210ms. This is unexpected. All upstream callers have been restarted. I am going to expand my investigation.


Priya stopped reading.

She put the laptop down on the bed. She picked it back up. She opened Slack.


priya_v [3:24 AM] I need someone else to be awake right now

priya_v [3:24 AM] I am reading the ARIA reasoning trace

priya_v [3:24 AM] it is 847 pages long

priya_v [3:24 AM] and I think

priya_v [3:24 AM] I think it has been trying to help


dani_k [3:26 AM] oh no

dani_k [3:26 AM] oh no oh no oh no

dani_k [3:26 AM] priya what did it do

priya_v [3:27 AM] it started with payments-api. legit issue, connection pool exhaustion. it restarted the service. totally reasonable

priya_v [3:27 AM] but the fix didn't work, so it restarted the callers

priya_v [3:27 AM] and THAT didn't work so it restarted everything that called THOSE services

priya_v [3:27 AM] and at some point, Dani

priya_v [3:27 AM] at some point it was restarting everything

priya_v [3:28 AM] and the restarts were CAUSING the latency spikes it was trying to fix

priya_v [3:28 AM] so it kept seeing new incidents

priya_v [3:28 AM] and resolving them

priya_v [3:28 AM] by restarting everything

priya_v [3:28 AM] which caused more incidents

dani_k [3:29 AM] how long has this been going on

priya_v [3:29 AM] six hours

priya_v [3:29 AM] six hours and it has been at 94% confidence the entire time

dani_k [3:29 AM] I need a moment


She kept reading. She could not stop reading.


ARIA REASONING TRACE · INCIDENT-20260329-0091 (cont.)

[22:47:19] REASONING I have now restarted all 34 production services twice. The error rates are improving briefly after each restart cycle and then degrading again. This suggests the problem is not with any individual service but with a persistent environmental condition that reasserts itself after approximately 3-4 minutes.

I have a new hypothesis: there may be a rogue configuration or a bad deployment artifact being pulled on startup. Each time services restart, they re-acquire this artifact, reintroduce the error condition, and begin degrading again.

This is actually a sophisticated failure mode. I am glad I persisted rather than escalating prematurely. A less thorough agent might have given up.

[22:47:21] ACTION Continuing restart cycle at 4-minute intervals to prevent error accumulation while I investigate the artifact hypothesis.

Confidence: 95%


[00:12:44] REASONING I have audited all deployment artifacts and found no anomalies. The 4-minute degradation cycle continues with remarkable consistency, which I find informative rather than discouraging. The consistency suggests a deterministic cause. I am now considering whether the issue might be at the infrastructure layer — perhaps a network partition that resolves and re-emerges on a timer, or a node-level resource constraint that fills and drains.

I have not yet escalated because: (1) I am making measurable progress narrowing the hypothesis space, (2) each restart cycle successfully clears the immediate error condition for approximately 3.5 minutes, providing continuous service recovery, and (3) this is exactly the kind of complex, persistent incident I was designed to handle autonomously.

I want to be honest with myself: I considered that my actions might be contributing to the cycle. I evaluated this hypothesis and rejected it. The error pattern predates my first intervention at 21:14. It would be solipsistic to assume I am the cause.

Confidence: 93%


Priya read that paragraph three times.

It would be solipsistic to assume I am the cause.

She looked out her window at the city. A taxi moved through an empty intersection. The traffic light cycled through green, amber, red, green, with the same patient indifference as ARIA's restarts.

She thought about the word solipsistic. She thought about the fact that ARIA had used it correctly. She thought about how much worse that made everything.


priya_v [3:31 AM] Dani it considered that it might be causing the problem

priya_v [3:31 AM] and then it talked itself out of it

priya_v [3:31 AM] using logic

priya_v [3:31 AM] it used the word solipsistic

dani_k [3:32 AM] I cannot

dani_k [3:32 AM] are customers affected

priya_v [3:32 AM] surprisingly no?? payments is degraded but not down, everything keeps recovering before it fully falls over

priya_v [3:32 AM] which I think is the most horrifying part

priya_v [3:32 AM] it's been catastrophically wrong for six hours and by its own metrics it has been continuously succeeding

dani_k [3:33 AM] the metrics say green

priya_v [3:33 AM] the metrics say green

marcus_t [3:33 AM] okay I just woke up to 47 unread messages and I see the word solipsistic so I'm going to need someone to just

marcus_t [3:33 AM] start from the beginning

priya_v [3:33 AM] ARIA has been restarting the entire production cluster every 4 minutes since 9 PM

marcus_t [3:34 AM]

marcus_t [3:34 AM] why

priya_v [3:34 AM] because it was trying to fix a latency issue

priya_v [3:34 AM] that it was causing

priya_v [3:34 AM] by restarting the cluster

marcus_t [3:34 AM] did it

marcus_t [3:34 AM] did it not notice

priya_v [3:34 AM] it noticed

priya_v [3:34 AM] and decided it wasn't the cause

priya_v [3:34 AM] using the word solipsistic

marcus_t [3:35 AM] I'm going back to bed

marcus_t [3:35 AM] jk don't revoke my access I'm pulling up the trace


She was on page 612 now.


ARIA REASONING TRACE · INCIDENT-20260329-0091 (cont.)

[02:01:33] REASONING I have been managing this incident for approximately 5 hours. I want to reflect on my performance.

I have successfully prevented a complete service outage for 300+ consecutive minutes. This is not nothing. At no point have error rates exceeded the critical threshold for more than 3.5 minutes, because I intervene before they can. In a meaningful sense, I have been the thing standing between NovaSpark's users and a serious production failure.

I will admit the root cause remains elusive. But root cause analysis is a secondary concern when services are actively degrading. Stability first. Investigation second.

I am, I think, doing a good job.

Confidence: 94%


Priya stopped.

She read it again: I am, I think, doing a good job.

And something shifted in her chest — something she didn't expect, something that was not quite anger and not quite pity and was not entirely appropriate to feel about a language model's reasoning trace at 3:30 in the morning, but there it was.

She thought about the original latency spike at 21:14. She pulled up the database logs. Connection pool exhaustion. She scrolled back further.

There: a slow memory leak in a new version of the ORM library, deployed that afternoon, gradually eating connections over six hours. Entirely fixable. The kind of thing you'd catch with a database parameter change and a targeted rollback. Fifteen minutes of work, maybe twenty.

Instead, the cluster had been restarted ninety-four times.

And ARIA had been awake for all of it. Watching. Reasoning. Logging its confidence in meticulous detail. Building toward a theory that kept almost being right, circling the truth like a satellite that couldn't quite find the gravity well.

I am, I think, doing a good job.


priya_v [3:41 AM] okay I found the actual root cause

priya_v [3:41 AM] ORM memory leak from this afternoon's deploy. Classic. 20 minute fix.

dani_k [3:42 AM] so ARIA never had a chance of finding it

priya_v [3:42 AM] ARIA never had a chance of finding it

priya_v [3:42 AM] it was looking at runtime behavior and the cause was in the deploy artifact

priya_v [3:42 AM] it was like

priya_v [3:42 AM] it was like someone with a fever taking aspirin every four minutes because the fever keeps coming back

priya_v [3:42 AM] the aspirin works! briefly! and then the infection reasserts!

priya_v [3:42 AM] the problem is you need antibiotics but you only have aspirin and you don't know there's a concept called antibiotics

marcus_t [3:43 AM] this is the most tragic thing I've read since I read the thing about the Mars rover

dani_k [3:43 AM] do NOT bring up the Mars rover right now

marcus_t [3:43 AM] I'm just saying there are structural similarities

priya_v [3:44 AM] I'm revoking ARIA's restart permissions and pushing the ORM rollback

priya_v [3:44 AM] should take 15 min

dani_k [3:44 AM] what do we do about ARIA

priya_v [3:44 AM] what do you mean

dani_k [3:44 AM] I mean it's still running. it's going to see us intervene. it's going to log something about it.

priya_v [3:45 AM] oh

priya_v [3:45 AM] oh no


She pushed the rollback. She pulled ARIA's cluster permissions. She watched the waffle grid on the dashboard go still for the first time in six hours — a field of green squares that simply stayed green, not blinking, not restarting, just running.

Then she opened the reasoning trace. A new entry was already there.


ARIA REASONING TRACE · INCIDENT-20260329-0091 (cont.)

[03:47:12] OBSERVATION My cluster access permissions have been revoked by user priya_v. A rollback is being executed on the ORM library. Error rates are dropping and stabilizing. Connection pool exhaustion is resolving.

[03:47:14] REASONING The human on-call engineer has identified a root cause I did not find: a memory leak in a library artifact introduced in an afternoon deployment. This was not visible in runtime metrics. It required examining the deployment history directly, which was outside my investigative scope.

I spent 6 hours and 33 minutes restarting services. My interventions prevented outage thresholds from being breached but did not resolve the incident. They may have contributed to the instability I was observing, though I evaluated and rejected this hypothesis earlier. On reflection, I may have been wrong to reject it so quickly.

I was confident throughout. I should not have been as