{"id":51,"date":"2026-06-24T19:15:19","date_gmt":"2026-06-24T10:15:19","guid":{"rendered":"https:\/\/sr-works.net\/blog-en\/?p=51"},"modified":"2026-06-24T19:15:19","modified_gmt":"2026-06-24T10:15:19","slug":"finishing-the-requirements-with-claude-opus-4-6-my-ai-switching-strategy","status":"publish","type":"post","link":"https:\/\/sr-works.net\/blog-en\/finishing-the-requirements-with-claude-opus-4-6-my-ai-switching-strategy\/","title":{"rendered":"Finishing the Requirements with Claude Opus 4.6 \u2014 My AI Switching Strategy"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>This article was originally written in Japanese and translated into English with AI assistance. Please note that some expressions may carry nuances from the original Japanese.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\ud83c\uddef\ud83c\uddf5 <a href=\"https:\/\/sr-works.net\/blog\/nd7f672b16309\/\">\u65e5\u672c\u8a9e\u7248\u306f\u3053\u3061\u3089 \/ Japanese version<\/a><\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Series: DataMigrator Development Journal (Part 3)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Last time, I wrote about how I started writing Rev.0 of the requirements document together with a different AI, and \u2014 through repeated critiques and fixes while having Claude review it \u2014 reached Rev.5. This time is the continuation: the second half heading from Rev.5 toward Rev.7, and the story of deciding to &#8220;switch&#8221; AI in the process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The phrase &#8220;switching AI&#8221; doesn&#8217;t quite sit right with me, somehow. It&#8217;s not like moving house, where you cart your chat history and documents over in one big load, and since AI isn&#8217;t a physical thing in the first place, it&#8217;s not quite &#8220;buying a replacement&#8221; either. Still, in terms of actually getting the work done, it was a decision that felt nearly as concrete as that.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">As the Document Grows, the AI Can&#8217;t Keep Up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As I touched on briefly at the end of last time, around when I reached Rev.5, the other AI I&#8217;d been using started behaving more and more erratically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The typical symptoms went like this. While we were discussing the latter half of the document, it would forget something it had supposedly decided in the first half and propose, all over again, an idea that had already been rejected. When I pointed out &#8220;that approach was already settled in Chapter 7,&#8221; it would apologize \u2014 &#8220;you&#8217;re quite right, my apologies&#8221; \u2014 but a few turns later the same kind of forgetting would happen somewhere else. Or, when I added a new chapter, the consistency between that chapter and the existing ones would break down.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This isn&#8217;t the AI slacking off, much less being malicious \u2014 it apparently comes from a technical constraint called the &#8220;context window,&#8221; as Claude explained to me. There&#8217;s an upper limit to how much information an AI can handle at once, and when a document grows too large, it exceeds that limit. The behavior then becomes something like dropping old information while taking in new information. As a result, it looks like it&#8217;s &#8220;forgetting the first half.&#8221; That&#8217;s the gist of it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Come to think of it, human short-term memory has a similar constraint \u2014 the thing where you forget what you decided thirty minutes ago in a meeting as the discussion heats up. The difference is that for AI, that limit is technically fixed, and it also varies with the version and the length of the conversation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By Rev.5, the requirements document already had nearly twenty chapters, and with the finer supplementary notes it reached tens of thousands of characters. That it had grown to a volume the AI couldn&#8217;t fully grasp was, objectively, obvious.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why I Moved to Claude<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So, from the second half of the requirements work, I decided to move the center of the work in earnest to Claude, which had been playing the reviewer&#8217;s role. There were three reasons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first is simply the size of the context window. Even handling a document of the same quality, Claude has a higher upper limit on how much it can handle at once and is less prone to forgetting the first half. I could feel this right away. When I pasted in the full text of Rev.5 and asked &#8220;please check whether there&#8217;s any contradiction between this chapter and that one,&#8221; I&#8217;d get back an answer that had properly surveyed the whole thing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second is a feature called &#8220;Project Knowledge.&#8221; This is a mechanism where you register materials per project, and during the conversation Claude searches them for the information it needs and uses it. It&#8217;s like &#8220;the AI&#8217;s long-term memory,&#8221; so to speak, and you don&#8217;t have to re-paste the document every time. If you register everything from Rev.0 through Rev.5 of the requirements document, it becomes able to answer questions like &#8220;there should have been a discussion like this in some chapter of Rev.3 \u2014 what was the conclusion at the time?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The third is usability with the design and implementation phases in view. DataMigrator&#8217;s development doesn&#8217;t end when requirements end. After that come design, implementation, testing, and release. Being able to keep using the same AI through those phases makes the handoff of context smoother. Thinking it through, switching over early \u2014 even partway through requirements \u2014 should make things easier down the line.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be honest, there was a slight resistance to switching. From Rev.0 to Rev.5, I had spent a fair amount of time with that other AI. Resetting its conversation history, and the context it had (supposedly) remembered, to move to a new AI somehow brings up a feeling of &#8220;what a waste of everything I&#8217;ve built up.&#8221; But thinking calmly, the accumulation remains on the document side, so even if the AI changes, I&#8217;d have no trouble as long as I carried over that document. I talked myself into it that way and decided to make the move.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">From Rev.6 to Rev.7 \u2014 Crushing the Remaining Issues<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Rev.6, after moving to Claude, I crushed the issues that had remained from the Rev.5 review one by one. Concretely, things like: what grouping method to use for Quick mode, whether the positioning of Exploration mode could be made clearer, and how to design the screen transitions among the three modes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What struck me at this stage was that Claude posed its questions in a one-question-at-a-time format. The style was: &#8220;Please answer Question 1. Once you&#8217;ve answered, we&#8217;ll move on to Question 2.&#8221; For me as a human, having a lot of points thrown at me at once makes my head a mess, so this way of proceeding was a huge help. I hadn&#8217;t specified &#8220;please go one question at a time&#8221; myself \u2014 Claude naturally proceeded in this style on its own, and looking back, I think that was significant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Rev.7, I further tidied up the document&#8217;s formal aspects: organizing chapter numbers, adding a glossary, rearranging figures and tables, and putting the appendices in order. By this point, the requirements document had become a document of over thirty chapters. When I started writing Rev.0, I had absolutely not imagined that someone with zero programming experience would end up writing a thirty-chapter document together with AI. I can&#8217;t quite recall whether I&#8217;d ever handled a document that long anywhere in my own work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix C \u2014 &#8220;Cleanly Deferring&#8221; What Can&#8217;t Be Decided<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rev.7 of the requirements document has an unusual chapter called &#8220;Appendix C.&#8221; It&#8217;s a &#8220;list of issues that can&#8217;t be settled at the requirements stage.&#8221; There were eleven of them in all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example: the thread configuration (how many worker threads to run), the method for detecting symbolic-link loops, the final organization of the mode structure, the method of exclusive locking for the project folder, the size of the partial hash, the concrete contents of the scan-exclusion presets, and so on. Every one of them is closer to the territory of design than of requirements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Why did I put this into the requirements document? Because I wanted to leave it as a memorandum: &#8220;to build this tool, these points absolutely must be crushed during the design phase.&#8221; If you force a conclusion at the requirements stage, you decide things without enough technical examination, and they get overturned in the design phase. But if you forget they exist altogether, you&#8217;ll panic once you&#8217;re in the implementation phase \u2014 &#8220;wait, what were we going to do about this?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The conclusion I reached while consulting Claude was a compromise: &#8220;don&#8217;t decide, but don&#8217;t forget.&#8221; Appendix C is that compromise given form. It was only later that I started calling this approach &#8220;cleanly deferring.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Looking back now, I feel this is close to the sense of production scheduling in theater. When you make a schedule leading up to opening night, rather than writing &#8220;TBD&#8221; for things that aren&#8217;t decided, it&#8217;s better to decide &#8220;we&#8217;ll decide this by such-and-such date&#8221; \u2014 and that way, you end up not in trouble on the night. That kind of sense. Less a style for developing with AI, and more a moment where my own past experience was, just a little, useful.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Idea of Splitting Sessions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One more thing that solidified during my exchanges with Claude around this time was the idea of &#8220;splitting sessions.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a conversation with Claude, one &#8220;chat&#8221; becomes one work session. But if you keep one chat going endlessly, the context-window problem I mentioned earlier comes up. The longer the conversation gets, the harder it is for the first half&#8217;s information to reach the latter half. This is a constraint that even Claude can&#8217;t fully escape.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I started a practice of splitting one big task (for example, &#8220;the second half of the requirements work&#8221;) into multiple sessions. I&#8217;d set a clear goal for each session, and once that goal was reached, move on to the next session. When starting the next session, I&#8217;d compile the deliverables of the previous session and a summary of what had been decided so far into an &#8220;initial prompt,&#8221; and hand it over at the very beginning of the new session.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Creating this initial prompt was, in fact, quite an important task. What to write and what to omit, how much detail to go into, how to instruct what I wanted done in the new session. Get this wrong, and the discussion in the new session wanders. Get it right, and the new session can get straight to the heart of the matter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The initial prompt itself, too, settled into a method where I&#8217;d ask Claude &#8220;please make an initial prompt for the next session,&#8221; have it produce a first draft, and then revise it myself. Claude itself would sometimes propose where to break the session, and I often went along with those proposals.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Feeling That Requirements Were Finally Done<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By the time I&#8217;d written Rev.7, I honestly had a feeling of &#8220;is this really the end?&#8221; I couldn&#8217;t shake the sense that somewhere in this thirty-plus-chapter document there was an oversight, and I had the worry that once I started implementation, different problems would come gushing out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While asking Claude for a final check, I also had, within myself, a resignation: &#8220;no matter how much longer I dig in here, the problems that surface when I move to design and implementation will surface regardless.&#8221; A requirements definition is something you can keep aiming for perfection on, but unless you declare at some point &#8220;settled, as far as I can currently see&#8221; and move on, it may be a task that never ends in your lifetime.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the end, I treated Rev.7 as the finalized version of the requirements phase and moved on to the next, design phase. The eleven items of Appendix C carry over, as is, as homework for the design phase.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Next Time<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Next time is about clutching Rev.7 of the requirements document and stepping into the design phase. I split the design phase into three sessions: Session 1 for architecture, Session 2 for the DB schema and class design, Session 3 for the GUI and test design. What was it like to have AI write design documents on the scale of 20,000 lines? How did I crush the eleven pieces of homework left in Appendix C? From here, I step out of the world of requirements and into the world of &#8220;how to build it.&#8221;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">About Soul Resonant Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Soul Resonant Works is a solo venture developing seven local AI systems. Starting from zero programming experience, the development is progressing through collaboration with AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83c\udf10 Soul Resonant Works:<br>\u2192 <a href=\"https:\/\/sr-works.net\/en\/index.html\">https:\/\/sr-works.net\/en\/index.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udcdd This blog publishes the entire development process as a serialized journal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If you found this article useful, please share it.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article was originally written in Japanese and translated into English with AI assistance. Please note that some expressions may carry nuances from the original Japanese. \ud83c\uddef\ud83c\uddf5 \u65e5\u672c\u8a9e\u7248\u306f\u3053\u3061\u3089 \/ Japanese version Series: DataMigrator Development Journal (Part 3) Last time, I wrote about how I started writing Rev.0 of the requirements document together with a different [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-ai-development-journal"],"_links":{"self":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":2,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":54,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/51\/revisions\/54"}],"wp:attachment":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}