It is three in the morning and something is wrong with your LLM application. This is the book you open.
Not a tutorial. A reference manual, organised by symptom, for the moment when something you built has already broken.
Everything else on this shelf teaches you to build. Almost nothing helps you debug what you have already built. This book is the other half: eighteen chapters, each one a symptom in the words you would actually use.
The output looks correct and is wrong. The agent is looping. It worked yesterday. The tool call never fires. It works in testing and fails in production. Costs are spiking. It answered from the wrong document. The JSON will not parse. It is too slow. It works for me and not for them.
Hallucination, retrieval failures in a RAG pipeline, prompt regressions, runaway token spend, latency, agents that will not stop — each one gets a chapter, and each chapter gets you to a check in under two minutes.
Every chapter follows the same structure, built for lookup under pressure. The recognition lines, so you know in seconds whether you are in the right place. The first two minutes — the small number of actions that halve the search space before you understand anything. Then the candidate causes, ordered by how common they are and how cheap they are to test, and for each one the part that makes this a diagnostic rather than a list: how to tell it apart from the cause next to it. A specific test, with a specific outcome, that separates them.
And every chapter can tell you that it has nothing for you. A diagnostic that always finds something is not a diagnostic. Chapter 18 is the honest dead ends — when it is not the model, when it is your data, when the requirement changed, when it is the provider and there is nothing to do, and how to know you have passed the point where more investigation helps.
The cases are real and they were read at source. A tribunal decision against an airline whose chatbot invented a refund rule, and whose wrong answer carried a link to the very page that contradicted it. A support bot that explained a genuine bug with a cause that did not exist, and the subscriptions cancelled because of it. Two vendor postmortems in which the models changed underneath applications nobody had touched — including one where the evaluations passed, the A/B test passed, and the only instrument pointing at the real problem was a tester saying it felt slightly off. And two code-repository issues where the fault was nowhere near where anyone was looking: one a single field quietly rewritten in transit, one a loop with no memory of what it had already done.
Not one of them is a story about a model being stupid. Every one is a failure in a seam — between a system that expects guarantees and a component that does not offer them. That is where these bugs live, and that is what this book is a map of.
Also inside: the minimum trace record, in six fields — the observability you actually need, which is far less than a platform will sell you, and which makes every technique here possible. The bisect protocol. A one-page triage. A fast check for every symptom. A pre-incident checklist of what to have in place before you need it. And a closing chapter on reasoning about a failure that is not in this book or any other — because that is where you will be soon enough.
Version-dependent material is marked and date-stamped, and kept separate from the durable material, which is most of it. The arithmetic does not change. Neither does the method.
Written by Cynked Press under its own name, with no pen name and no invented credentials. Every source is cited. Where the book does not know, it says so.