When to throw the prompt out and start over
Artifact: one prompt that's gone past three turns with no convergence
1. When to restart
Not every prompt is salvageable. Some are structurally wrong from turn one — wrong frame, wrong task verb, wrong role for the task. Iterating on a structurally broken prompt is sandcastle work.
The signs:
- You've made four or more revisions and quality hasn't improved. Iteration converges when it converges. If five turns in you're no closer, the underlying spec is the problem.
- You keep adding clauses that fight each other. Be concise but thorough. List everything but only the important things. When constraints contradict, the model can't satisfy both.
- The output is correct but useless. The model is doing exactly what you asked, and what you asked is the wrong thing.
- You can't articulate what changed between turns. If you can't explain why turn three is different from turn two, you've stopped iterating and started rolling dice.
When you see two of these, stop. The next thing to do isn't another revision. It's a new spec.
2. How to restart well
When you restart, don't just rewrite the same prompt better. Rewrite with the knowledge you gained from the failed attempts.
- The failed attempts told you what shape the model wants to produce — note where it kept landing.
- They told you which constraints the model honored and which it ignored — keep what worked.
- They told you what task framing you started with, and which parts of that framing were wrong.
A restart with that knowledge is faster than the original attempt. The failed turns were the diagnostic.
3. Two restarts, one wrong
Let me try again from scratch. Review this code and find bugs.This is just the same prompt with a fresh chat. The same failure modes apply. You'll converge to the same place.
Three previous attempts went off the rails — the model kept finding style nits when I wanted correctness bugs, and kept defaulting to prose when I wanted JSON.
Knowing those failure modes:
Role: senior reviewer doing pre-merge review on a high-traffic service.
Task: find only correctness or concurrency bugs. No style.
Format: JSON only. No preamble.
Schema: [{ line: number, category: "correctness" | "concurrency", description, fix }]
Example (so you know the shape):
{ line: 14, category: "correctness", description: "missing await — returns Promise instead of value", fix: "add await" }
[code]This restart includes what you learned from the failed attempts. Both shapes of failure are addressed upfront. Turn one of the new chat will likely outperform turn five of the old one.