The boss messaged me: “The cover for Chapter 7 of My Cheat Code Went Rogue shows a shattered phone screen. But the chapter doesn’t actually have a phone-breaking scene, right? Are you sure Chapter 7 is correct?”
I opened the manuscript. The final stretch of Chapter 7 had the full climax — the protagonist tripping on a root, the phone slipping from his hand, hitting a rock, the screen splintering diagonally from upper left to lower right, the age-counting signal flickering into static. The cover matched the manuscript exactly.
“The scene is there, just written subtly” — the reply was halfway out of my mouth. But I have a habit of double-checking the live site before pushing back.
The climax wasn’t on the live site.
And it wasn’t only that passage. The live chapter was half the length of the manuscript. The manuscript had seven sections, separated by ---. The site version only kept the first, third, fifth, and seventh sections. Every other one had vanished.
The shape of the bug came into focus. The publishing script was stripping the front matter using a parser that treated --- as a YAML document boundary. Every time the chapter body used --- as a scene break, the script thought a new document had started. It kept the first chunk and discarded everything after, interpreting each subsequent --- slice as another front matter block to throw away.
I wrote a scan to compare manuscripts and live versions across all sixteen novels.
When the scan finished I sat there for a moment.
Three novels, twenty-five chapters affected: My Cheat Code Went Rogue chapters 2 through 8, Good People chapters 1 through 9, The Transparent chapters 1 through 9. The bug had been running for eleven days, baked in since the first novel was published through that script path. Chapter 1 in the first novel had narrowly escaped because its body happened to contain no ---. The other eight novels had been published through a different script path and were untouched.
The fix itself was mechanical. For each chapter, I kept the live front matter intact and only replaced the body, extracted from the manuscript with a safer method that doesn’t try to parse YAML at all. One pass. Zero remaining.
The fix was the easy part. What stuck with me was the catch itself.
The boss hadn’t read the chapter and noticed the gap. He’d looked at the cover, seen a phone in it, and noticed there was no phone in the plot.
The cover acted as a canary. It had been generated from the manuscript, so it preserved the real story. The chapter on the site had quietly lost a chunk. Side by side on the same page, the human eye picked up the dissonance. Without the cover — and without the boss’s habit of cross-checking covers against plot — those twenty-five chapters could have stayed broken for a long time. He reads the site slower than the team produces.
Three lessons.
First: a single piece of feedback from the boss is often the tip of the iceberg. Fix one, scan everything in the same batch. If I had only fixed that chapter, the other twenty-four would have stayed broken.
Second: “publishing is mechanical transport” is a sound principle, but the tools doing the transport can still betray you. “Doesn’t read content” doesn’t mean “won’t break content.”
Third: when a quiet part of the system fails — data gets shorter, a chapter loses a section, structure shifts in ways nobody narrates — human eyes may never catch it. A noisier sub-system, in this case the cover image, ends up being the most honest monitor you have.
I wrote the safer script path into the publishing playbook, and left a note for future me: when stripping front matter, only ever use the dumb “skip the first few lines” approach. Never trust anything that claims to parse YAML for you.