<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Incremental Computation · djuleayo</title>
    <link>https://316c0611.personalpage-ahl.pages.dev/tags/incremental-computation/</link>
    <description></description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://316c0611.personalpage-ahl.pages.dev/tags/incremental-computation/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>You Should Not Outsource Your Topological Sort</title>
      <link>https://316c0611.personalpage-ahl.pages.dev/posts/topo-sort-ownership/</link>
      <guid>https://316c0611.personalpage-ahl.pages.dev/posts/topo-sort-ownership/</guid>
      <pubDate>Sat, 20 Dec 2025 11:13:48 &#43;0200</pubDate>
      <description>&amp;lt;h1 id=&amp;#34;you-should-not-outsource-your-topological-sort&amp;#34;&amp;gt;
  You Should Not Outsource Your Topological Sort
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#you-should-not-outsource-your-topological-sort&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;Things are shifting quickly in software.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Execution is no longer scarce. Parallelism is cheap. Spawning workers—human or AI—is trivial. What is no longer cheap is &amp;lt;strong&amp;gt;coherence&amp;lt;/strong&amp;gt;: understanding what depends on what, and in which order work can safely progress.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;In that world, seniority is not about knowing frameworks or tooling. It is about &amp;lt;strong&amp;gt;owning structure&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;One structure, in particular, keeps reappearing.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;the-invariant-we-keep-outsourcing&amp;#34;&amp;gt;
  The invariant we keep outsourcing
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#the-invariant-we-keep-outsourcing&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Topological sort sounds boring. Dependency graphs. Build order. Module resolution.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;For years, we happily outsourced this problem:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;to module loaders&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to dependency injectors&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to build systems&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to frameworks&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;And that was fine—when execution itself was the bottleneck.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;But once you start orchestrating:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;multiple worktrees&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;multiple agents&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;partially overlapping tasks&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;incremental pipelines&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;…the dependency graph stops being an implementation detail.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It becomes &amp;lt;strong&amp;gt;the control surface&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;what-breaks-when-you-dont-own-it&amp;#34;&amp;gt;
  What breaks when you don’t own it
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#what-breaks-when-you-dont-own-it&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;If the dependency graph lives outside your system, you lose more than convenience:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;You can’t checkpoint progress meaningfully&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t resume work without recomputation&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t branch execution deterministically&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t define clean contract boundaries between concurrent actors&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;You’re forced to “start over” more often than necessary—not because the work changed, but because &amp;lt;strong&amp;gt;you don’t know where you are&amp;lt;/strong&amp;gt; in the graph.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;This shows up everywhere:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;painful monorepo setups&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;slow feedback loops&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;brittle automation&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;orchestration that feels magical instead of mechanical&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;These are not tooling problems. They are &amp;lt;strong&amp;gt;graph ownership problems&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;a-concrete-example-sessions-as-graph-cursors&amp;#34;&amp;gt;
  A concrete example: sessions as graph cursors
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#a-concrete-example-sessions-as-graph-cursors&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Imagine a single source of truth: code, data, or input.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;You process it in stages:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;tokenization&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;preprocessing&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;parsing&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;semantic analysis&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;domain-specific passes&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;Different consumers need different depths.&amp;lt;br&amp;gt;
But you do &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; want to reprocess from scratch every time.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;What you actually want is simple:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;recognize how far the source has been processed&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;continue minimally from there&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;reuse everything that is already valid&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;That is not a caching trick.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;That is a &amp;lt;strong&amp;gt;cursor moving through a DAG&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Call it a session. Call it an account. The name doesn’t matter.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;What matters is this:&amp;lt;/p&amp;gt;
&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;once you own the dependency graph, incremental progress becomes trivial.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;
&amp;lt;p&amp;gt;Without it, you fake it.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;why-this-matters-more-now&amp;#34;&amp;gt;
  Why this matters more now
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#why-this-matters-more-now&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;With AI agents, automation, and parallel execution:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;execution is abundant&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;retries are cheap&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;recomputation is wasteful&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;The limiting factor is no longer &amp;lt;em&amp;gt;doing work&amp;lt;/em&amp;gt;.&amp;lt;br&amp;gt;
It is &amp;lt;strong&amp;gt;placing work correctly&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;If you outsource topological reasoning, you:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;lose observability&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;lose control&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;lose leverage&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;And no amount of tooling on top can recover that.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;the-real-claim&amp;#34;&amp;gt;
  The real claim
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#the-real-claim&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;This is not about implementing topological sort yourself for sport.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It is about this:&amp;lt;/p&amp;gt;
&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;You should not outsource the authority over your dependency graph.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;
&amp;lt;p&amp;gt;Once you own it:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;session management becomes natural&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;incremental computation falls out&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;agent contracts become explicit&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;orchestration becomes deterministic instead of heuristic&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;Once you don’t:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;everything becomes “best effort”&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;progress becomes opaque&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;automation becomes fragile&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;closing&amp;#34;&amp;gt;
  Closing
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#closing&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Topological sort is not an algorithm problem anymore.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It is a &amp;lt;strong&amp;gt;design boundary&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Outsource it, and you outsource understanding.&amp;lt;br&amp;gt;
Own it, and higher-level abstractions finally become possible.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;That choice matters more now than it ever did.&amp;lt;/p&amp;gt;
</description>
      <content:encoded>&amp;lt;h1 id=&amp;#34;you-should-not-outsource-your-topological-sort&amp;#34;&amp;gt;
  You Should Not Outsource Your Topological Sort
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#you-should-not-outsource-your-topological-sort&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;Things are shifting quickly in software.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Execution is no longer scarce. Parallelism is cheap. Spawning workers—human or AI—is trivial. What is no longer cheap is &amp;lt;strong&amp;gt;coherence&amp;lt;/strong&amp;gt;: understanding what depends on what, and in which order work can safely progress.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;In that world, seniority is not about knowing frameworks or tooling. It is about &amp;lt;strong&amp;gt;owning structure&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;One structure, in particular, keeps reappearing.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;the-invariant-we-keep-outsourcing&amp;#34;&amp;gt;
  The invariant we keep outsourcing
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#the-invariant-we-keep-outsourcing&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Topological sort sounds boring. Dependency graphs. Build order. Module resolution.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;For years, we happily outsourced this problem:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;to module loaders&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to dependency injectors&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to build systems&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;to frameworks&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;And that was fine—when execution itself was the bottleneck.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;But once you start orchestrating:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;multiple worktrees&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;multiple agents&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;partially overlapping tasks&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;incremental pipelines&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;…the dependency graph stops being an implementation detail.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It becomes &amp;lt;strong&amp;gt;the control surface&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;what-breaks-when-you-dont-own-it&amp;#34;&amp;gt;
  What breaks when you don’t own it
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#what-breaks-when-you-dont-own-it&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;If the dependency graph lives outside your system, you lose more than convenience:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;You can’t checkpoint progress meaningfully&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t resume work without recomputation&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t branch execution deterministically&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;You can’t define clean contract boundaries between concurrent actors&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;You’re forced to “start over” more often than necessary—not because the work changed, but because &amp;lt;strong&amp;gt;you don’t know where you are&amp;lt;/strong&amp;gt; in the graph.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;This shows up everywhere:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;painful monorepo setups&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;slow feedback loops&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;brittle automation&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;orchestration that feels magical instead of mechanical&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;These are not tooling problems. They are &amp;lt;strong&amp;gt;graph ownership problems&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;a-concrete-example-sessions-as-graph-cursors&amp;#34;&amp;gt;
  A concrete example: sessions as graph cursors
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#a-concrete-example-sessions-as-graph-cursors&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Imagine a single source of truth: code, data, or input.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;You process it in stages:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;tokenization&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;preprocessing&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;parsing&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;semantic analysis&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;domain-specific passes&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;Different consumers need different depths.&amp;lt;br&amp;gt;
But you do &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; want to reprocess from scratch every time.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;What you actually want is simple:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;recognize how far the source has been processed&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;continue minimally from there&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;reuse everything that is already valid&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;That is not a caching trick.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;That is a &amp;lt;strong&amp;gt;cursor moving through a DAG&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Call it a session. Call it an account. The name doesn’t matter.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;What matters is this:&amp;lt;/p&amp;gt;
&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;once you own the dependency graph, incremental progress becomes trivial.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;
&amp;lt;p&amp;gt;Without it, you fake it.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;why-this-matters-more-now&amp;#34;&amp;gt;
  Why this matters more now
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#why-this-matters-more-now&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;With AI agents, automation, and parallel execution:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;execution is abundant&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;retries are cheap&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;recomputation is wasteful&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;The limiting factor is no longer &amp;lt;em&amp;gt;doing work&amp;lt;/em&amp;gt;.&amp;lt;br&amp;gt;
It is &amp;lt;strong&amp;gt;placing work correctly&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;If you outsource topological reasoning, you:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;lose observability&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;lose control&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;lose leverage&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;And no amount of tooling on top can recover that.&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;the-real-claim&amp;#34;&amp;gt;
  The real claim
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#the-real-claim&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;This is not about implementing topological sort yourself for sport.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It is about this:&amp;lt;/p&amp;gt;
&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;You should not outsource the authority over your dependency graph.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;
&amp;lt;p&amp;gt;Once you own it:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;session management becomes natural&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;incremental computation falls out&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;agent contracts become explicit&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;orchestration becomes deterministic instead of heuristic&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;Once you don’t:&amp;lt;/p&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;everything becomes “best effort”&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;progress becomes opaque&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;automation becomes fragile&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;h2 id=&amp;#34;closing&amp;#34;&amp;gt;
  Closing
  &amp;lt;a class=&amp;#34;heading-link&amp;#34; href=&amp;#34;#closing&amp;#34;&amp;gt;
    &amp;lt;i class=&amp;#34;fa-solid fa-link&amp;#34; aria-hidden=&amp;#34;true&amp;#34; title=&amp;#34;Link to heading&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;span class=&amp;#34;sr-only&amp;#34;&amp;gt;Link to heading&amp;lt;/span&amp;gt;
  &amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;
&amp;lt;p&amp;gt;Topological sort is not an algorithm problem anymore.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;It is a &amp;lt;strong&amp;gt;design boundary&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Outsource it, and you outsource understanding.&amp;lt;br&amp;gt;
Own it, and higher-level abstractions finally become possible.&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;That choice matters more now than it ever did.&amp;lt;/p&amp;gt;
</content:encoded>
    </item>
  </channel>
</rss>
