<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concepts on DevFlow</title><link>https://devflow.cloud/docs/concepts/</link><description>Recent content in Concepts on DevFlow</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://devflow.cloud/docs/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>Context rot</title><link>https://devflow.cloud/docs/concepts/context-rot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/context-rot/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;&#10;&lt;p&gt;Context rot is the quality degradation that happens as an LLM fills its context&#10;window. It is not a single failure — it is a slow slide:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Early reconnaissance (files read, commands run, dead ends explored) stays in the&#10;window forever, crowding out the information that matters now.&lt;/li&gt;&#10;&lt;li&gt;Instructions given at turn 3 compete with 200 turns of tool output by turn 200.&lt;/li&gt;&#10;&lt;li&gt;The model starts repeating itself, re-reading files it already has, and&#10;re-deriving conclusions it already reached.&lt;/li&gt;&#10;&lt;li&gt;Errors compound, because a wrong assumption made early is now &amp;ldquo;established&#10;context&amp;rdquo; that later turns treat as settled.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A single Claude Code session that researches, plans, builds and verifies a feature&#10;will hit this. Not because the model is bad, but because by the time it writes the&#10;code that matters, the signal it needs is buried under everything it did to get&#10;there.&lt;/p&gt;</description></item><item><title>The loop</title><link>https://devflow.cloud/docs/concepts/the-loop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/the-loop/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s lifecycle is a loop you can enter and leave at any point. Each phase&#10;produces artifacts on disk; the next phase reads them. Nothing is passed through&#10;the conversation.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new-project → discuss-objective → plan-objective → execute-objective → verify-work → milestone complete&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └───────────────────────────────── next milestone ──────────────────────────────────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="1-new-project"&gt;1. new-project&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt; &lt;code&gt;/devflow:new-project&lt;/code&gt; · &lt;strong&gt;Agents:&lt;/strong&gt; &lt;code&gt;project-researcher&lt;/code&gt;, &lt;code&gt;research-synthesizer&lt;/code&gt;, &lt;code&gt;roadmapper&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Interviews you, researches the domain in parallel, scopes requirements into v1/v2,&#10;and orders objectives into a roadmap.&lt;/p&gt;</description></item><item><title>The .planning directory</title><link>https://devflow.cloud/docs/concepts/planning-directory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/planning-directory/</guid><description>&lt;p&gt;&lt;code&gt;.planning/&lt;/code&gt; is the project&amp;rsquo;s memory. It is the reason DevFlow survives context&#10;resets: nothing important lives in the conversation.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.planning/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; PROJECT.md vision, context, `kind` — loaded on nearly every operation&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; REQUIREMENTS.md scoped v1/v2 requirements with stable IDs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ROADMAP.md objectives in dependency order, with checkboxes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; STATE.md decisions, blockers, position, session memory&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; MILESTONES.md archive of completed milestones&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; config.json workflow configuration&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; state.json machine-readable position mirror&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; research/ domain research from new-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; codebase/ brownfield mapping from map-codebase&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; todos/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pending/ captured ideas awaiting work&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; done/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; debug/ active debug sessions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; resolved/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; decisions/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pending/ parked DECISION-NNN.md awaiting your answer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; milestones/ archived milestone directories&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; objectives/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-objective-name/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OBJECTIVE.md goal, success criteria, `work` type&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; CONTEXT.md your implementation preferences (discuss-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RESEARCH.md ecosystem research (research-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-JOB.md atomic execution plan, one per job&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-SUMMARY.md execution outcome, decisions, evidence&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; VERIFICATION.md post-execution verification results&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; UAT.md user acceptance walkthrough&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; verification/ Maestro YAML flows, capture manifests&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-files-you-will-actually-read"&gt;The files you will actually read&lt;/h2&gt;&#10;&lt;h3 id="projectmd"&gt;PROJECT.md&lt;/h3&gt;&#10;&lt;p&gt;Short by design — it is loaded on nearly every operation, so every line costs&#10;context on every command. Vision, constraints, key decisions, and the project&#10;&lt;code&gt;kind&lt;/code&gt; on frontmatter.&lt;/p&gt;</description></item><item><title>The intent model</title><link>https://devflow.cloud/docs/concepts/intent-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/intent-model/</guid><description>&lt;p&gt;Uniform rigor is wrong in both directions: it over-tests throwaway spikes and&#10;under-tests payment paths. DevFlow&amp;rsquo;s intent model derives the right posture from&#10;two declarations.&lt;/p&gt;&#10;&lt;h2 id="the-two-axes"&gt;The two axes&lt;/h2&gt;&#10;&lt;p&gt;&lt;span class="microlabel"&gt;Project kinds&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span class="chip gold"&gt;api&lt;/span&gt; &lt;span class="chip gold"&gt;app&lt;/span&gt; &lt;span class="chip gold"&gt;library&lt;/span&gt; &lt;span class="chip gold"&gt;ui-lib&lt;/span&gt; &lt;span class="chip gold"&gt;cli&lt;/span&gt; &lt;span class="chip gold"&gt;plugin&lt;/span&gt; &lt;/p&gt;&#10;&lt;p&gt;&lt;span class="microlabel"&gt;Work types&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span class="chip gold"&gt;feature&lt;/span&gt; &lt;span class="chip gold"&gt;port&lt;/span&gt; &lt;span class="chip gold"&gt;refactor&lt;/span&gt; &lt;span class="chip gold"&gt;foundation&lt;/span&gt; &lt;span class="chip gold"&gt;bugfix&lt;/span&gt; &lt;span class="chip gold"&gt;prototype&lt;/span&gt; &lt;span class="chip gold"&gt;spike&lt;/span&gt; &lt;/p&gt;&#10;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;kind&lt;/code&gt;&lt;/strong&gt; is declared once, on &lt;code&gt;PROJECT.md&lt;/code&gt; frontmatter. It says what sort of&#10;software this is.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;work&lt;/code&gt;&lt;/strong&gt; is declared per objective, on &lt;code&gt;OBJECTIVE.md&lt;/code&gt; frontmatter, or inherited&#10;from &lt;code&gt;PROJECT.md&lt;/code&gt;&amp;rsquo;s &lt;code&gt;default_work&lt;/code&gt;. It says what sort of change this objective is.&lt;/p&gt;</description></item><item><title>Waves and checkpoints</title><link>https://devflow.cloud/docs/concepts/waves/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/waves/</guid><description>&lt;h2 id="wave-based-parallelism"&gt;Wave-based parallelism&lt;/h2&gt;&#10;&lt;p&gt;The planner records a dependency position on each job. At execution time, jobs are&#10;grouped into waves: everything in a wave is independent of everything else in that&#10;wave, so it can run concurrently.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wave 1: job 4-01 job 4-02 job 4-03 ← no dependencies, run together&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────┴──────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wave 2: job 4-04 ← depends on wave 1 output&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each job goes to its own &lt;code&gt;executor&lt;/code&gt; subagent with a fresh context window. This is&#10;not just a speed optimisation — it is the mechanism from&#10;&lt;a href="https://devflow.cloud/docs/concepts/context-rot/"&gt;context rot&lt;/a&gt;. Three jobs in a wave means three clean&#10;windows rather than one window carrying all three jobs&amp;rsquo; reconnaissance.&lt;/p&gt;</description></item><item><title>State and memory</title><link>https://devflow.cloud/docs/concepts/state/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/state/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s durability claim is simple: the things worth remembering were never in&#10;the context window, so losing the window loses nothing.&lt;/p&gt;&#10;&lt;h2 id="what-is-remembered"&gt;What is remembered&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Thing&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Where&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Survives&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Vision, constraints, &lt;code&gt;kind&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;PROJECT.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Requirements with IDs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;REQUIREMENTS.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Objectives and completion&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ROADMAP.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Decisions and rationale&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open blockers&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Position in the plan&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt; + &lt;code&gt;state.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;What each job did&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;SUMMARY.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verification evidence&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;VERIFICATION.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Debug hypotheses and evidence&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;debug/&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The conversation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;context window&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="reading-and-writing-state"&gt;Reading and writing state&lt;/h2&gt;&#10;&lt;p&gt;State is manipulated through &lt;code&gt;df-tools&lt;/code&gt; rather than by editing files, so the&#10;markdown and its JSON mirror stay consistent.&lt;/p&gt;</description></item><item><title>Context discipline</title><link>https://devflow.cloud/docs/concepts/context-discipline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/context-discipline/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s context guidance comes from an audit of roughly 93 million tokens of&#10;real message blocks. The figures below are measured, not estimated.&lt;/p&gt;&#10;&lt;h2 id="where-the-window-actually-goes"&gt;Where the window actually goes&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Component&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Share&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Who produces it&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tool results (text)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;59.3%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the environment, read back in&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Tool-call inputs&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;33.8%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;the agent&lt;/strong&gt; — file bodies, heredocs, patches&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Assistant text&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.5%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;prose to the user&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Images&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1.5%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;screenshots&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Two tools account for 94% of tool-result tokens:&lt;/p&gt;</description></item></channel></rss>