Splitting one prompt in two renumbered every step after the cut
We split one long numbered prompt into two. Every step after the cut changed number, and the sentences that navigate by those numbers went on pointing at whatever now wore them.

We split one long numbered prompt into two, and every step after the cut changed number. That part was expected. What was not expected is that the prompt navigates by those numbers — sentences like the one that says an approved brief can be consumed and names the step where that happens — and those sentences kept pointing at whatever step now wore the number. A reference that resolves to the wrong step is worse than one that resolves to nothing, because a dangling number at least reads as a mistake.
The content prompt in Market4's catalogue was one prompt that opened by asking which of three jobs the run was, then carried every path's instructions for all of them. It worked. It was still the wrong shape: somebody who wanted to fix page titles read forty lines about buying search results first, and an assistant executing it held both paths in context throughout. The two halves also have opposite economics, because lifting a page Google already shows is cheap while writing a new one costs a search purchase and a publish slot, and a single prompt offering them as peers hides that.
So on 20 August 2026 it became two prompts, one for lifting pages that already rank and one that starts from a blank page. They still share their opening phase and their rules word for word, and those blocks were sliced out of the original text rather than retyped. The prompts name around seventy tools by their exact parameter names, and a hand-rewrite drops a required argument silently, in a way that only surfaces later as a tool error in somebody else's terminal.
A numbered prompt in a TypeScript file is a template literal, which means the type checker sees one string. There is no symbol to rename, no import to update, and no editor that offers to fix the references for you. The linter next door reads identifiers rather than numbers, so it is happy. What has caught a broken step reference in the past is somebody following the numbers by hand, and a promise to do that by hand is exactly the kind that fails on the day nobody has time.
The failure mode is the same one that makes a wrong tool name dangerous. A prompt that sends an assistant to the wrong step does not error. The assistant reads the step, finds it is about something else, and either does that instead or invents what it thinks was meant

Seventy specs went red in one run and passed when run alone. The session expired partway through, so every spec after that point measured a login screen and reported the difference as a failure.

Publishing a post sends two independent announcements. One IndexNow request reaches Bing, Yandex, Seznam, Naver and Yep. Google takes no part in IndexNow, so it is told by re-submitting the sitemap.
Market4 turns one release note into a changelog page, a blog post, a mail-out and a week of social posts — and then tells you which of them brought anyone back.
| Kind of reference | What a renumber does to it | How obvious it is |
|---|---|---|
| Within one prompt | Points at a neighbouring step that is now something else | Invisible; the number still exists |
| Across the two halves of a split | Points into the sibling half, where the same number means a different job | Invisible, and the two halves read plausibly alike |
| Across two unrelated prompts | Breaks in a file nobody editing the target is looking at | Invisible, and the edit is made by someone with no reason to check |
| A range, such as steps fifteen to twenty | Silently widens or narrows the set of steps it covers | Invisible, and the count still looks deliberate |
The cross-prompt case is the one that decided how to fix this. The health prompt tells a customer whose IndexNow key file has gone missing to go and read the setup prompt's step 17. A renumber inside the setup prompt breaks that sentence in a file nobody editing the setup prompt has open, and it breaks it quietly, because setup would still have a step 17 — it would just be about something else.
The fix is a test that reads the catalogue file, strips its block comments, collects the numbered steps of each prompt, and resolves every reference against them. Stripping comments first is not tidiness: the file's own header discusses the prompts by step number, and those notes belong to a prompt they are not inside, so scanning them would resolve them against the wrong list. The header also carries backticks around identifiers, which would otherwise end a template literal in the middle of a sentence.
For cross-prompt references, checking that the target step exists is not enough, because a renumber leaves some other step wearing the number. So each one is written down with an anchor word the target step must still contain, and what the reference is for. The IndexNow reference has to land on a step that still says IndexNow. Adding a new cross-prompt reference forces a line in that table, and that it cannot be added by accident is the design rather than a side effect.
The step test's own header opens by describing the six prompts in the catalogue. The catalogue exports nine. The comment was accurate when it was written and nothing updated it when prompts were added, which is the argument for the test in miniature: prose about a file is a claim nobody re-checks, and the assertion beside it is the part that keeps failing until somebody fixes it.
Because the numbers are what makes a long instruction navigable, both for a person reading it and for an assistant executing it in order. A prompt with forty unnumbered paragraphs cannot say what to do after something fails, and cannot be resumed halfway. The numbers earn their place; what they need is something that checks the references, not their removal.
Read the file as text rather than importing it. The test loads the source, removes block comments so that notes about the prompts are not mistaken for text inside them, splits it into prompts, collects the numbered steps of each, and then resolves every step reference it finds. It imports nothing from the server, opens no socket and touches no database, so it costs a few milliseconds in the ordinary test run.
No, and that is the part worth copying. Existence passes a renumber, because after a renumber some other step is wearing the number. Each cross-file reference is recorded with a word its target must still contain, so a reference to the IndexNow step fails unless it lands on a step that still mentions IndexNow. Existence catches deletions; the anchor catches renumbering, which is the failure that actually happens.
Two paths with opposite costs were being offered as equals. Lifting a page that already ranks spends nothing but reading time; writing a new page spends a paid search and a publish slot. In one prompt, the cheaper move was buried in the middle of instructions for the expensive one. Two prompts can each say in their opening lines which one you should have reached for, and that is worth a day of renumbering.

When an assistant works through dozens of your tools in a single turn, there is no transaction around them. Everything before the failure has already happened, and the turn can still end by reporting success.