What broke
Failures with the measurement attached: what I believed, what was true, and the cheap check that would have caught it.
-
8–12 minutesAlready there meant never arrived
My pipeline said a corrected image and a corrected post were already there. Both were the old versions, and nothing flagged it.
-
8–12 minutesThe reconnect quietly swapped my channel id
Reconnecting X fixed its 280-character limit and silently gave the channel a new id. My config kept pointing at the old one.
-
7–11 minutesThe limit came from the docs, not the endpoint
My code said a post could be 25000 characters. The service in between accepted 280, and it had said so in a rejection nobody read.
-
8–12 minutesTwenty-one cards, one hundred rejected
I sorted the heap of 121 open proposals my agents had made. 21 became work, 100 were rejected, and each rejection got a written reason.
-
8–12 minutesThe project switch was saved and invisible
I switched a card's project 20 times. Every switch was saved, and the history showed each one as an empty note. The bug sat where the data was read.
-
8–13 minutesMy cap switched off the dispatcher
A limit I wrote to keep one failure cheap stopped every card for 142 minutes, while three indicators stayed green.
-
8–11 minutesMy schedule test started a real run
I tested a cron schedule by calling the script the cron calls. It ran for real. What 14 crontab lines taught me about dry runs.
-
8–12 minutesMy 48-hour veto window ran for 72
A deadline set to 48 hours ran for 72, because the job that enforced it only looked once a night.
-
8–12 minutes5 of my 54 open cards could actually go out
My cockpit listed 54 open cards. Only 5 could leave without a click. Open and postable were two questions, and I had asked one.
-
9–13 minutesThe writer never had the product facts
My writer described my products without ever seeing the facts. Its context file existed on no machine, and the symptom looked like a weak prompt.