{"course":{"slug":"building-apps-with-ai","title":"Building Apps with AI","url":"https://addaly.com/learn/building-apps-with-ai","level":"beginner","track":"build"},"lesson":{"slug":"restarting-the-conversation","title":"Knowing when to restart the conversation","url":"https://addaly.com/learn/building-apps-with-ai/restarting-the-conversation","position":35,"of":87,"minutes":8,"answer":"A long session accumulates failed theories that compete with the useful context, so ask for a written handover and restart at a clean commit rather than persuading a conversation out of its own history.","keyIdea":"A long session accumulates failed theories that compete with the useful context, so ask for a written handover and restart at a clean commit rather than persuading a conversation out of its own history."},"body":{"format":"markdown","text":"## Sessions decay\n\nA conversation that has been running for three hours contains every failed attempt, every stale error, every abandoned idea. All of it is in the context, competing for attention with the part that matters, and the model has no way to know which parts you have written off.\n\nThe symptoms are recognisable once you know them:\n\n- It reintroduces something you rejected an hour ago.\n- It refers to a file that was deleted or renamed during the session.\n- Answers get longer and less specific.\n- It starts rewriting things you did not mention.\n- It contradicts a decision made earlier in the same conversation.\n\nNone of those mean the model has become worse. They mean the context has filled up with debris.\n\n## The handover\n\nBefore closing a session, spend one turn on this:\n\n```\nBefore I start a new session: write a handover.\n- What we were trying to do\n- What is now working and how it was verified\n- What is not working, with the exact error\n- Every file we changed\n- Decisions I made that are not obvious from the code\n- What you would try next, and what you already ruled out\n```\n\nPaste the result into the new session with the current error. You keep the useful state and drop the wreckage.\n\nSave that handover in the repository too: `notes/state.md`, committed. It is more useful than it sounds, because you will restart this project after a two-week gap and that file is the fastest way back in.\n\n## Restart before things get bad\n\nThe better habit is not restarting when it breaks. It is restarting when a feature is *finished*, at a clean commit, before the next one begins.\n\nA fresh session with a written spec and a clean tree is fast and precise. A three-hour session carried into a new feature starts with a handicap and never catches up.\n\n## Rewind rather than persuade\n\nMost tools let you edit an earlier message and branch from there. This is underused and it is better than arguing.\n\nIf the model went in the wrong direction at message four, do not spend messages five through twelve correcting it. Go back to four, rewrite the request with the constraint you now know you needed, and the eight bad messages never happened. The context is smaller and cleaner as a result.\n\n## Two failed attempts, then stop\n\nThe rule from the earlier lesson deserves restating here with its reason. After two failed fixes for the same problem, the context now contains two wrong theories, and the third attempt is being built on top of them. Continuing produces a distinctive pattern: increasingly large changes, decreasing confidence, and eventually a suggestion to reinstall everything.\n\nStop. Revert to the last working commit. Start a new session with a clean statement of the problem and the reproduction. It nearly always works on the first attempt, which is worth noticing: nothing about the problem changed, only the context it was being thought about in.\n\n## The same failure with a different model\n\nSwitching models sometimes helps, and it is worth knowing why: not because one is smarter, but because the second one arrives without the first one's committed theory. A fresh session with the same model usually gets most of that benefit.\n\nDo not conclude much from one comparison. Model A succeeding where model B failed, once, on one problem, is a sample of one, and the ordering matters: the second attempt always has the advantage of your better-stated problem.\n\n## What to keep between sessions\n\nThree things carry over, and they should live in files rather than in a chat window:\n\n**The rules file**, which every session reads automatically. **The specification and acceptance checks** for the feature in progress. **The state note**, describing where you are.\n\nEverything else is disposable. A conversation is a working surface, not a record, and treating it as a record is how people lose an afternoon's decisions when a tab closes."},"check":{"question":"The same problem is solved immediately in a fresh session after failing repeatedly in a long one. What is the best explanation?","options":[{"text":"The model was rate limited or degraded during the earlier session.","correct":false,"tempting":"Reaches for an outage explanation when the visible difference is what was in the context, not what capacity was available."},{"text":"The new session began without the earlier failed attempts and their assumptions occupying the context.","correct":true},{"text":"Restating the problem gave the model information it did not previously have.","correct":false,"tempting":"Partly true and incomplete; the same restatement inside the old session usually does not work, which is what the explanation has to account for."},{"text":"Long conversations exceed the context window, so earlier instructions were dropped.","correct":false,"tempting":"Describes compaction, which loses your instructions rather than the model's own discarded theories."}]},"prev":{"slug":"was-it-actually-fixed","title":"Was it actually fixed, or just silenced","url":"https://addaly.com/learn/building-apps-with-ai/was-it-actually-fixed"},"next":{"slug":"asking-a-human","title":"Asking a human, and getting an answer","url":"https://addaly.com/learn/building-apps-with-ai/asking-a-human"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Knowing when to restart the conversation', in Building Apps with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/building-apps-with-ai/restarting-the-conversation (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Knowing when to restart the conversation","courseTitle":"Building Apps with AI","module":{"index":4,"slug":"when-it-breaks","title":"When it breaks, and getting back"},"answer":null,"keyIdea":"A long session accumulates failed theories that compete with the useful context, so ask for a written handover and restart at a clean commit rather than persuading a conversation out of its own history.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"sessions-decay","runs":[{"text":"Sessions decay"}]},{"t":"p","runs":[{"text":"A conversation that has been running for three hours contains every failed attempt, every stale error, every abandoned idea. All of it is in the context, competing for attention with the part that matters, and the model has no way to know which parts you have written off."}]},{"t":"p","runs":[{"text":"The symptoms are recognisable once you know them:"}]},{"t":"ul","items":[[{"text":"It reintroduces something you rejected an hour ago."}],[{"text":"It refers to a file that was deleted or renamed during the session."}],[{"text":"Answers get longer and less specific."}],[{"text":"It starts rewriting things you did not mention."}],[{"text":"It contradicts a decision made earlier in the same conversation."}]]},{"t":"p","runs":[{"text":"None of those mean the model has become worse. They mean the context has filled up with debris."}]},{"t":"h2","id":"the-handover","runs":[{"text":"The handover"}]},{"t":"p","runs":[{"text":"Before closing a session, spend one turn on this:"}]},{"t":"code","lang":"","label":"Text","text":"Before I start a new session: write a handover.\n- What we were trying to do\n- What is now working and how it was verified\n- What is not working, with the exact error\n- Every file we changed\n- Decisions I made that are not obvious from the code\n- What you would try next, and what you already ruled out"},{"t":"p","runs":[{"text":"Paste the result into the new session with the current error. You keep the useful state and drop the wreckage."}]},{"t":"p","runs":[{"text":"Save that handover in the repository too: "},{"text":"notes/state.md","code":true},{"text":", committed. It is more useful than it sounds, because you will restart this project after a two-week gap and that file is the fastest way back in."}]},{"t":"h2","id":"restart-before-things-get-bad","runs":[{"text":"Restart before things get bad"}]},{"t":"p","runs":[{"text":"The better habit is not restarting when it breaks. It is restarting when a feature is "},{"text":"finished","i":true},{"text":", at a clean commit, before the next one begins."}]},{"t":"p","runs":[{"text":"A fresh session with a written spec and a clean tree is fast and precise. A three-hour session carried into a new feature starts with a handicap and never catches up."}]},{"t":"h2","id":"rewind-rather-than-persuade","runs":[{"text":"Rewind rather than persuade"}]},{"t":"p","runs":[{"text":"Most tools let you edit an earlier message and branch from there. This is underused and it is better than arguing."}]},{"t":"p","runs":[{"text":"If the model went in the wrong direction at message four, do not spend messages five through twelve correcting it. Go back to four, rewrite the request with the constraint you now know you needed, and the eight bad messages never happened. The context is smaller and cleaner as a result."}]},{"t":"h2","id":"two-failed-attempts-then-stop","runs":[{"text":"Two failed attempts, then stop"}]},{"t":"p","runs":[{"text":"The rule from the earlier lesson deserves restating here with its reason. After two failed fixes for the same problem, the context now contains two wrong theories, and the third attempt is being built on top of them. Continuing produces a distinctive pattern: increasingly large changes, decreasing confidence, and eventually a suggestion to reinstall everything."}]},{"t":"p","runs":[{"text":"Stop. Revert to the last working commit. Start a new session with a clean statement of the problem and the reproduction. It nearly always works on the first attempt, which is worth noticing: nothing about the problem changed, only the context it was being thought about in."}]},{"t":"h2","id":"the-same-failure-with-a-different-model","runs":[{"text":"The same failure with a different model"}]},{"t":"p","runs":[{"text":"Switching models sometimes helps, and it is worth knowing why: not because one is smarter, but because the second one arrives without the first one’s committed theory. A fresh session with the same model usually gets most of that benefit."}]},{"t":"p","runs":[{"text":"Do not conclude much from one comparison. Model A succeeding where model B failed, once, on one problem, is a sample of one, and the ordering matters: the second attempt always has the advantage of your better-stated problem."}]},{"t":"h2","id":"what-to-keep-between-sessions","runs":[{"text":"What to keep between sessions"}]},{"t":"p","runs":[{"text":"Three things carry over, and they should live in files rather than in a chat window:"}]},{"t":"p","runs":[{"text":"The rules file","b":true},{"text":", which every session reads automatically. "},{"text":"The specification and acceptance checks","b":true},{"text":" for the feature in progress. "},{"text":"The state note","b":true},{"text":", describing where you are."}]},{"t":"p","runs":[{"text":"Everything else is disposable. A conversation is a working surface, not a record, and treating it as a record is how people lose an afternoon’s decisions when a tab closes."}]}],"check":{"question":[{"text":"The same problem is solved immediately in a fresh session after failing repeatedly in a long one. What is the best explanation?"}],"options":[{"text":[{"text":"The model was rate limited or degraded during the earlier session."}],"correct":false,"tempting":[{"text":"Reaches for an outage explanation when the visible difference is what was in the context, not what capacity was available."}]},{"text":[{"text":"The new session began without the earlier failed attempts and their assumptions occupying the context."}],"correct":true,"tempting":null},{"text":[{"text":"Restating the problem gave the model information it did not previously have."}],"correct":false,"tempting":[{"text":"Partly true and incomplete; the same restatement inside the old session usually does not work, which is what the explanation has to account for."}]},{"text":[{"text":"Long conversations exceed the context window, so earlier instructions were dropped."}],"correct":false,"tempting":[{"text":"Describes compaction, which loses your instructions rather than the model’s own discarded theories."}]}],"order":[3,0,2,1],"why":null},"prev":{"slug":"was-it-actually-fixed","title":"Was it actually fixed, or just silenced","minutes":8},"next":{"slug":"asking-a-human","title":"Asking a human, and getting an answer","minutes":8}}}