How an agent team turned a ticket marked for closure into a root cause, a fix and proof
tr181-periodicfileupload: SIGSEGV (a crash) during … Transfer re-enable
“Unless you disagree, I will close this ticket as 'Rejected - Not a problem' in a week.”
I tried to reproduce the crash locally using the same 130-periodicfileupload.t Cram test on a prplOS freedom board setup.
can we [close] it, it hasn’t been seen lately, cannot be reproduced, the corrupted stack is corrupted.
Unless you disagree, I will close this ticket as 'Rejected - Not a problem' in a week.
This is what a careful engineer can do with one crash, no saved files and no way to trigger it. The limit was the process, not the person.
The agent bar, zoomed in 168 times
Calendar time, not working time. Nobody worked on the ticket every day for 53 days. The agents had a human lead for the whole day.
Think of a coat check. You leave a coat and get a ticket. Someone returns your coat early, and the hook gets a new coat. Then your ticket comes back, and the clerk hands out the wrong coat.
Turning off a transfer gave its record back while an upload request still pointed at it. When the server replied, the plugin read the slot. On the Freedom board, other data already sat there, so the plugin followed a garbage pointer and crashed.
The unsafe window is a few milliseconds. That is why the crash was so hard to repeat.
Lines of test code
The human lead also found internal campaign labels in the test comments. The rework removed them. The final product code change is 54 lines added and 4 removed, in 3 files.
At API list prices: 133.88 USD recorded for the Anthropic models, at most 33.19 USD for the OpenAI reviewer, and about 4.21 USD for a known gap in the counting.
Human time: the planning interview ran for about 88 minutes. The lead engineer answered between other work, often from a phone, and made each gate decision the same way. Active human time was not tracked.
The deck gives no cost for the human path. Nobody measured it, and we do not guess it.
Devices do not have the fix yet. They get it only when a prplOS build includes the new version.
Human decision: the lead engineer asked for line coverage in the merge request, so reviewers can see which lines of the fix the unit tests run. A one-line change from the upstream project turned it on.
The 3 lines that no test reaches sit on two rare paths: a hook script (a helper program around an upload) that ends or times out, and a reset in the server reply handler.
No earlier review, by AI or by a human, had flagged them. They are now a review item. The work is not done when the merge request opens.
A label is a tag on a Jira ticket. Anyone can filter tickets by it.
At API list prices, this case cost about 171 USD of agent time, at most. A failed try costs the agent spend plus the time a maintainer needs to review it. The ticket then goes back with a written reason.
A crash closed as “cannot reproduce” stays in the product. Here, the virtual device crashed in up to 76 % of runs once the timing window was widened.
Add ticket types when maintainers trust the results. Track the cost per ticket, the hand-back rate, and the share of fixes that maintainers accept.
To open these links, you need a prpl login for Jira and GitLab.
The ticket was marked for closure at 07:42 UTC. By 15:27 UTC the same day, it had a root cause, a fix in review and test results. Your turn: which tickets should get the agentic label first?
Build 9ab078e 2026-10-02