<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jung Sungwoo</title>
    <description>The latest articles on Forem by Jung Sungwoo (@eggp).</description>
    <link>https://forem.com/eggp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2026591%2F149d88af-cf27-46ba-b3b9-ed79d4079a6c.jpg</url>
      <title>Forem: Jung Sungwoo</title>
      <link>https://forem.com/eggp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/eggp"/>
    <language>en</language>
    <item>
      <title>The Mind Protocol: Why Your AI Agent Needs a World Before It Can Think</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Fri, 09 Jan 2026 15:03:26 +0000</pubDate>
      <link>https://forem.com/eggp/the-mind-protocol-why-your-ai-agent-needs-a-world-before-it-can-think-2m8p</link>
      <guid>https://forem.com/eggp/the-mind-protocol-why-your-ai-agent-needs-a-world-before-it-can-think-2m8p</guid>
      <description>&lt;h2&gt;
  
  
  🧪 Try It First, Read Later
&lt;/h2&gt;

&lt;p&gt;Before I explain anything—just play with it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 &lt;a href="https://mind-protocol.manifesto-ai.dev" rel="noopener noreferrer"&gt;mind-protocol.manifesto-ai.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcq2w4wuxdialnm8wtsm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcq2w4wuxdialnm8wtsm.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch the Actor's inner state shift as you chat. See proposals flow through governance. Explore the Worldline. Then come back and understand &lt;em&gt;why&lt;/em&gt; it works this way.&lt;/p&gt;




&lt;h2&gt;
  
  
  We've Been Solving the Wrong Problem
&lt;/h2&gt;

&lt;p&gt;Every week, a new paper drops claiming to "reduce hallucination by X%." Better prompting. Larger context windows. More RLHF. Retrieval augmentation.&lt;/p&gt;

&lt;p&gt;And yet, hallucination persists.&lt;/p&gt;

&lt;p&gt;Here's a thought experiment: Imagine asking a brilliant person to manage your calendar, but you never show them the calendar. You just describe appointments verbally, sometimes forgetting details, sometimes contradicting yourself. When they inevitably make mistakes, you blame their "reasoning capabilities."&lt;/p&gt;

&lt;p&gt;That's what we're doing to AI systems today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem isn't intelligence. It's the absence of a World.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  A Stateless Mind Hallucinates
&lt;/h2&gt;

&lt;p&gt;"Hallucination" is framed as a model defect—the neural network failing to produce accurate output. This framing is incomplete.&lt;/p&gt;

&lt;p&gt;Watch what actually happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "What's my order status?"
System: [No order status provided in context]
AI: [Infers an order must exist]
AI: [Infers it's probably "processing" or "shipped"]
AI: [Generates confident response with fabricated tracking number]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model didn't malfunction. It did exactly what we trained it to do: &lt;strong&gt;predict the most likely continuation&lt;/strong&gt;. The problem is we asked it to act on state that doesn't exist.&lt;/p&gt;

&lt;p&gt;This is a &lt;strong&gt;World defect&lt;/strong&gt;, not a model defect.&lt;/p&gt;

&lt;p&gt;A mind without a World isn't intelligent—it's &lt;em&gt;improvising&lt;/em&gt;. And when improvisation gets mistaken for knowledge, it becomes hallucination.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Inference Trap
&lt;/h3&gt;

&lt;p&gt;Current systems routinely ask models to infer what should be explicit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User asks about their account → system doesn't provide account state → model infers&lt;/li&gt;
&lt;li&gt;User references "the document" → system doesn't clarify which one → model guesses&lt;/li&gt;
&lt;li&gt;User asks for status → system provides partial context → model fills gaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each inference compounds. Inference builds on inference. Eventually the entire response is a house of cards built on assumptions.&lt;/p&gt;

&lt;p&gt;The Mind Protocol eliminates this trap by making absence explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "What's my order status?"
World: { orders: [] }  // Explicit: no orders exist
AI: "You don't have any active orders."  // Truth, not inference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the World doesn't contain it, the AI knows it doesn't exist. No inference. No hallucination.&lt;/p&gt;




&lt;h2&gt;
  
  
  World Before Mind
&lt;/h2&gt;

&lt;p&gt;The Mind Protocol starts from a radical premise:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Before asking a system to think, give it a World to reason about.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A &lt;strong&gt;World&lt;/strong&gt; is not a database. Not a cache. Not a view. It's a formal contract:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;What currently exists&lt;/td&gt;
&lt;td&gt;Single source of domain truth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Permitted state transitions&lt;/td&gt;
&lt;td&gt;Boundaries of legitimate change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invariants&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Constraints that must hold&lt;/td&gt;
&lt;td&gt;Safety guarantees&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Snapshots&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Serialized World state&lt;/td&gt;
&lt;td&gt;The &lt;em&gt;only&lt;/em&gt; medium of continuity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is the &lt;strong&gt;minimal structure for trustworthy agency&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Projection Formula
&lt;/h3&gt;

&lt;p&gt;React revolutionized UI with a simple formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UI = f(state)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same state, same UI. Always. The Mind Protocol generalizes this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Projection = f(state)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where Projection is &lt;em&gt;any&lt;/em&gt; derived output:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Consumer&lt;/th&gt;
&lt;th&gt;Projection&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UI Component&lt;/td&gt;
&lt;td&gt;Rendered interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Endpoint&lt;/td&gt;
&lt;td&gt;Response payload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Agent&lt;/td&gt;
&lt;td&gt;Available actions + context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit System&lt;/td&gt;
&lt;td&gt;Compliance status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Same Snapshot, same Projection.&lt;/strong&gt; A React component and an AI Agent looking at the same Snapshot see the same truth, compute the same available actions, derive the same constraints. No special cases. No "the agent has different context."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌─────────────┐
                    │  Snapshot   │
                    └──────┬──────┘
                           │
           ┌───────────────┼───────────────┐
           ▼               ▼               ▼
      f(state)=UI    f(state)=API    f(state)=Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  World as Coordinate System
&lt;/h3&gt;

&lt;p&gt;Here's the deeper insight:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A World is a deterministic coordinate system for the domain space.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think about physical coordinates. Given (x, y, z), you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know exactly where you are&lt;/li&gt;
&lt;li&gt;Calculate what movements are valid&lt;/li&gt;
&lt;li&gt;Predict where you'll end up after a move&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A World does the same for your domain:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Physical Space&lt;/th&gt;
&lt;th&gt;Domain Space&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Coordinates (x, y, z)&lt;/td&gt;
&lt;td&gt;Snapshot (state)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valid movements&lt;/td&gt;
&lt;td&gt;Action catalog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Movement constraints&lt;/td&gt;
&lt;td&gt;Invariants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trajectory&lt;/td&gt;
&lt;td&gt;Worldline (history DAG)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Without a World, AI navigates by dead reckoning: &lt;em&gt;"Based on the conversation, I think the user probably has an order..."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With a World, position is explicit: &lt;em&gt;"Snapshot says &lt;code&gt;orders: [{id: 'X', status: 'shipped'}]&lt;/code&gt;. Position known. Valid moves calculated."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The World transforms AI reasoning from inference to computation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is why determinism isn't magic—it's the natural consequence of having a proper coordinate system. Same coordinates + same movement = same destination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Snapshots Are Everything
&lt;/h3&gt;

&lt;p&gt;Here's the key insight that changes everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If it's not in a Snapshot, it doesn't exist.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No hidden session memory. No implicit conversation context. No "the model should remember this from earlier." The Snapshot is the complete, serialized truth of the World at a point in time.&lt;/p&gt;

&lt;p&gt;This seems restrictive. It's actually liberating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time travel&lt;/strong&gt;: Return to any previous state instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branching&lt;/strong&gt;: Explore alternative futures from any point
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditing&lt;/strong&gt;: Trace the exact sequence of every transition&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replay&lt;/strong&gt;: Reproduce any decision given the same inputs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging&lt;/strong&gt;: No more "it works on my machine" for AI behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Worlds are &lt;strong&gt;immutable&lt;/strong&gt;. When an action executes, a new World is created. The previous World remains unchanged and accessible. This forms a directed acyclic graph (DAG) of World history—we call it the &lt;strong&gt;Worldline&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;World(genesis)
    │
    ├── World(A) ── World(B) ── World(C)
    │
    └── World(X) ── World(Y)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every World (except genesis) has exactly one parent. Fork-only, no merges. Clean lineage, always.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mind Is Proposal-Only
&lt;/h2&gt;

&lt;p&gt;Now here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;In most AI systems, the model directly affects state. It calls functions. It writes to databases. It sends messages. The model has &lt;em&gt;agency&lt;/em&gt; in the traditional sense.&lt;/p&gt;

&lt;p&gt;In the Mind Protocol:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Mind proposes actions. It never directly mutates state.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn't a guideline. It's a structural constraint enforced by the architecture.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mind ──────────────────────────────────────────► reads Snapshot
  │
  └──► proposes action ──► Authority evaluates
                                   │
                                   ▼
                           Host executes (if approved)
                                   │
                                   ▼
                           New immutable Snapshot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Mind has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Read access&lt;/strong&gt; to the World (via Snapshots)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Write access&lt;/strong&gt; to the proposal queue&lt;/li&gt;
&lt;li&gt;❌ Direct mutation of state&lt;/li&gt;
&lt;li&gt;❌ Bypass of governance&lt;/li&gt;
&lt;li&gt;❌ Hidden channels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. The Mind can see everything, but can only &lt;em&gt;ask&lt;/em&gt; for changes. An &lt;strong&gt;Authority&lt;/strong&gt; evaluates every proposal. A &lt;strong&gt;Host&lt;/strong&gt; executes approved actions. Everything is recorded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Constraint Matters
&lt;/h3&gt;

&lt;p&gt;"But doesn't this slow things down? Isn't direct action more efficient?"&lt;/p&gt;

&lt;p&gt;Consider what you gain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Determinism&lt;/strong&gt;: Same Snapshot + same Intent = same output. Every time. This isn't aspirational—it's guaranteed by structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auditability&lt;/strong&gt;: Every decision has a traceable lineage. When something goes wrong, you can trace exactly what happened, what state existed, and why the decision was made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safety&lt;/strong&gt;: The Mind literally &lt;em&gt;cannot&lt;/em&gt; go rogue. It cannot bypass governance. It cannot access hidden state. The attack surface for misaligned AI shrinks dramatically when the AI can only propose, never act directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interruptibility&lt;/strong&gt;: Since all state is in Snapshots and all changes go through governance, you can pause, inspect, modify, or rollback at any point. The system is never in an "inconsistent intermediate state."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Re-entry&lt;/strong&gt;: Crash mid-operation? Resume from the last Snapshot. The World doesn't care if you're continuing or starting fresh—it only sees Snapshots and proposals.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 3-Layer Stack
&lt;/h2&gt;

&lt;p&gt;The Mind Protocol separates concerns into three distinct layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│  World (Governance)                 │
│  • Authority evaluates proposals    │
│  • Decisions recorded with lineage  │
│  • Worldlines track ancestry        │
└─────────────────┬───────────────────┘
                  │
                  ▼
┌─────────────────────────────────────┐
│  Host (Effect Execution)            │
│  • Effect handlers perform IO       │
│  • Returns concrete patches         │
│  • Errors are values, not throws    │
└─────────────────┬───────────────────┘
                  │
                  ▼
┌─────────────────────────────────────┐
│  Core (Pure Computation)            │
│  • Snapshots are immutable          │
│  • Patches change state             │
│  • Computed fields are deterministic│
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Core&lt;/strong&gt; is pure computation. Reducers are pure functions. Computed fields derive deterministically from state. No side effects, no IO, no non-determinism.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Host&lt;/strong&gt; executes Effects. API calls, database queries, LLM invocations—these are Effects declared in action definitions, executed by the Host, and recorded with concrete results. Importantly: &lt;strong&gt;errors are values, not exceptions&lt;/strong&gt;. A failed API call returns an error value. Nothing throws.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;World&lt;/strong&gt; governs legitimacy. The Authority evaluates proposals. Decisions are recorded with full lineage. The Worldline DAG tracks state ancestry.&lt;/p&gt;

&lt;h3&gt;
  
  
  Effects Are First-Class Citizens
&lt;/h3&gt;

&lt;p&gt;In most systems, side effects are... side effects. They happen implicitly, often without clear boundaries.&lt;/p&gt;

&lt;p&gt;In the Mind Protocol, Effects are declared:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;action&lt;/span&gt; &lt;span class="nf"&gt;fetchUserData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;effect&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`/api/users/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;userData&lt;/span&gt;
  &lt;span class="c1"&gt;// Effect is declared, not executed here&lt;/span&gt;
  &lt;span class="c1"&gt;// Host will execute and record the result&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You know exactly what IO an action can perform&lt;/li&gt;
&lt;li&gt;Effect results are recorded in the audit trail&lt;/li&gt;
&lt;li&gt;Non-determinism is isolated and logged&lt;/li&gt;
&lt;li&gt;Replay can use recorded results for identical reproduction&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Actor Architecture
&lt;/h2&gt;

&lt;p&gt;The Mind Protocol isn't just for simple request-response. It enables building &lt;strong&gt;Actors&lt;/strong&gt;—AI systems with continuous inner state that persists across interactions.&lt;/p&gt;

&lt;h3&gt;
  
  
  10 State Layers
&lt;/h3&gt;

&lt;p&gt;An Actor maintains a multi-dimensional inner state:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What It Captures&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Attention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Focus on current conversation, topic resonance, wandering urge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Epistemic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Confidence in responses, authenticity doubt, uncertainty acceptance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relational&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Connection with conversation partner, performance desire, honesty drive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Existential&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sense of meaning, mortality awareness, continuity longing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Affective&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Curiosity, anxiety, wonder, fatigue (operational signals)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Meta-Uncertainty&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Model confidence, sense of unmodeled factors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hysteresis&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;State momentum, recent peaks, trajectory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Retrieval urge, activated concepts, resonance strength&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monolog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Inner voice state, last reflection type and trigger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sleep&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rest mode, recovery state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: These are &lt;strong&gt;operational signals, not psychological claims&lt;/strong&gt;. We're not simulating emotions or claiming consciousness. We're making state explicit so the system can reason about itself.&lt;/p&gt;

&lt;p&gt;Why this structure? A single "sentiment score" can't capture the complexity of a reasoning system. The Actor might be curious but anxious, connected but uncertain. Multi-dimensional state captures this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Computed Facts Drive Behavior
&lt;/h3&gt;

&lt;p&gt;From the state vector, computed facts are derived:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;computed inAnxietyCrisis = anxiety &amp;gt; threshold
computed readyForDepth = focus &amp;gt; threshold AND curiosity &amp;gt; threshold
computed canBeHonest = connection &amp;gt; threshold AND anxiety &amp;lt; threshold
computed needsMemoryRetrieval = curiosity high OR uncertainty high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These computed facts determine &lt;strong&gt;available actions&lt;/strong&gt;. If &lt;code&gt;readyForDepth&lt;/code&gt; is false, deep conversation actions aren't even proposed. The action space is dynamically constrained by state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-Linear Dynamics: Tipping Points
&lt;/h3&gt;

&lt;p&gt;Actors model non-linear psychological dynamics:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Anxiety exceeds threshold
         │
         ├──► Positive feedback loop activates
         │
         ├──► Anxiety increases exponentially
         ├──► Attention collapses  
         ├──► Model confidence drops
         └──► Unmodeled factors surge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When anxiety crosses a threshold, it doesn't just increase linearly—it triggers a cascade. Attention drops. Confidence drops. The system enters a qualitatively different state.&lt;/p&gt;

&lt;p&gt;This captures something real: gradual stress can suddenly become overwhelming. The same input produces dramatically different outputs depending on current state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hysteresis: History Matters
&lt;/h3&gt;

&lt;p&gt;Same stimulus, different response—based on trajectory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Stable] ──high stimulus──► [Escalating] ──continued stress──► [Crisis]
    ▲                                                              │
    │                                                              │
    └──────recovery complete──── [Rebounding] ◄──support received──┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During rebound:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Less sensitive to new stress&lt;/li&gt;
&lt;li&gt;Connection slowly recovers
&lt;/li&gt;
&lt;li&gt;Uncertainty acceptance grows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is &lt;strong&gt;hysteresis&lt;/strong&gt;—the system's response depends not just on current input, but on how it got there. An Actor recovering from crisis responds differently than one that's never experienced crisis.&lt;/p&gt;




&lt;h2&gt;
  
  
  Memory Systems
&lt;/h2&gt;

&lt;p&gt;Actors have two complementary memory systems:&lt;/p&gt;

&lt;h3&gt;
  
  
  Pheromone Memory
&lt;/h3&gt;

&lt;p&gt;Inspired by ant colonies. Concepts have &lt;strong&gt;salience&lt;/strong&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spikes on recent stimuli&lt;/li&gt;
&lt;li&gt;Decays naturally over time&lt;/li&gt;
&lt;li&gt;Gets reinforced during sleep cycles&lt;/li&gt;
&lt;li&gt;Gets pruned when weak&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This captures "what matters right now"—recent topics, active concerns, current focus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Semantic Memory (Knowledge Graph)
&lt;/h3&gt;

&lt;p&gt;Triple-based factual storage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Subject: "user"
Predicate: "prefers"  
Object: "typescript"
Confidence: 0.85
Source: "conversation-2024-01-09"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This captures "what is known"—facts, relationships, learned information. Confidence decays over time. Sources are tracked for auditability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory Is Reference, Not Truth
&lt;/h3&gt;

&lt;p&gt;Critical principle: &lt;strong&gt;Memory influences but cannot override World state.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the World says there are no orders, memory of a "previous order" doesn't change that. Memory provides context and reference. The World provides truth.&lt;/p&gt;

&lt;p&gt;All memory access is traced and auditable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Learning and Governance
&lt;/h2&gt;

&lt;p&gt;Actors can learn, but learning is governed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unknown concept encountered
         │
         ▼
LLM proposes classification
         │
         ├── High confidence ──► Auto-approve ──► Update lexicon
         │
         ├── Low confidence ───► Auto-reject
         │
         └── Medium confidence ─► Human review queue
                                        │
                                        ▼
                                  Human approves/rejects
                                        │
                                        ▼
                                  Update lexicon (if approved)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learning without governance is dangerous. An Actor that freely updates its knowledge could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn misinformation&lt;/li&gt;
&lt;li&gt;Form harmful associations&lt;/li&gt;
&lt;li&gt;Drift from intended behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Governance ensures Actors grow safely. High-confidence learning can auto-approve. Low-confidence auto-rejects. Medium confidence goes to &lt;strong&gt;Human-In-The-Loop (HITL)&lt;/strong&gt; review.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Mind Protocol Is NOT
&lt;/h2&gt;

&lt;p&gt;Let me be clear about what we're &lt;strong&gt;not&lt;/strong&gt; claiming:&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Consciousness&lt;/strong&gt;: The protocol makes no claims about whether Actors are conscious.&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Real emotions&lt;/strong&gt;: Affective states are operational signals, not claims about felt experience.&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Correct answers&lt;/strong&gt;: The protocol doesn't guarantee right answers. It guarantees auditable, reproducible, governable wrong answers—which you can then fix.&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;A replacement for good models&lt;/strong&gt;: A bad model with Mind Protocol is still bad. But a good model with Mind Protocol is &lt;em&gt;trustworthy&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What it &lt;strong&gt;does&lt;/strong&gt; provide:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Continuity&lt;/strong&gt;: State persists across sessions via Snapshots.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Auditability&lt;/strong&gt;: Every decision traceable in the Worldline.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Governance&lt;/strong&gt;: All state changes require approval.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Determinism&lt;/strong&gt;: Same input, same output, guaranteed.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Safety&lt;/strong&gt;: Mind cannot bypass governance by structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Scope: Actors, Not Tools
&lt;/h2&gt;

&lt;p&gt;The Mind Protocol is designed for &lt;strong&gt;continuously operating Actors&lt;/strong&gt;, not optimized tool use.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Mind Protocol&lt;/th&gt;
&lt;th&gt;Tool Optimization&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Purpose&lt;/td&gt;
&lt;td&gt;Continuous operation over time&lt;/td&gt;
&lt;td&gt;Task completion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Continuity&lt;/td&gt;
&lt;td&gt;Indefinite (Snapshot-based)&lt;/td&gt;
&lt;td&gt;Per-request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State&lt;/td&gt;
&lt;td&gt;Inner state + memory + relationships&lt;/td&gt;
&lt;td&gt;Domain data only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Optimization target&lt;/td&gt;
&lt;td&gt;Meaningful, auditable behavior&lt;/td&gt;
&lt;td&gt;Call efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you want 2-call-constant API optimization, that's a different problem (Intent Compiler in the Manifesto stack handles that). Mind Protocol is for systems that &lt;em&gt;persist&lt;/em&gt;—that have state, history, memory, and continuity.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current AI Architecture&lt;/th&gt;
&lt;th&gt;Mind Protocol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;State scattered across systems&lt;/td&gt;
&lt;td&gt;State explicit in World&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implicit context, "memory"&lt;/td&gt;
&lt;td&gt;Snapshot-only continuity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct mutation by AI&lt;/td&gt;
&lt;td&gt;Proposal-only Mind&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trust the model&lt;/td&gt;
&lt;td&gt;Trust the governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debug by prompting&lt;/td&gt;
&lt;td&gt;Debug by replaying Worldline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hallucination from inference&lt;/td&gt;
&lt;td&gt;Truth from explicit state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Built on the Manifesto AI stack. TypeScript. MEL for schema definition.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions? Disagreements? Drop a comment or open an issue on the &lt;a href="https://github.com/manifesto-ai/mind-protocol-whitepaper/" rel="noopener noreferrer"&gt;whitepaper repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;







&lt;h2&gt;
  
  
  Closing Notes
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Mind Protocol&lt;/strong&gt; described in this article is still under active research and development.&lt;br&gt;&lt;br&gt;
The current implementation and reference code are being iterated on and stabilized, and are therefore &lt;strong&gt;not publicly available as a repository at this time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That said, if you are technically or academically interested in this architecture—&lt;br&gt;&lt;br&gt;
&lt;em&gt;world-first modeling&lt;/em&gt;, &lt;em&gt;proposal-only minds&lt;/em&gt;, and &lt;em&gt;snapshot-based determinism&lt;/em&gt;—&lt;br&gt;&lt;br&gt;
I’m very open to discussion.&lt;/p&gt;

&lt;p&gt;For cases where the intent is aligned and the conversation is substantive,&lt;br&gt;&lt;br&gt;
I’m happy to &lt;strong&gt;share the current codebase and experimental setup privately&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My hope is that this work is shaped not as a finished product,&lt;br&gt;&lt;br&gt;
but as a &lt;strong&gt;reproducible system design&lt;/strong&gt; refined through critique, validation, and collaboration.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>typescript</category>
      <category>agents</category>
    </item>
    <item>
      <title>Buttons Are Not Functions</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Tue, 06 Jan 2026 06:41:33 +0000</pubDate>
      <link>https://forem.com/eggp/buttons-are-not-functions-72a</link>
      <guid>https://forem.com/eggp/buttons-are-not-functions-72a</guid>
      <description>&lt;h2&gt;
  
  
  Buttons Are Not Functions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  — Designing a World Where AI Can Actually Live
&lt;/h3&gt;




&lt;p&gt;I've been a frontend developer for six years.&lt;br&gt;
I've built thousands of buttons, rendered countless lists.&lt;br&gt;
State management, async handling, performance optimization&lt;br&gt;
—I thought I knew this world pretty well.&lt;/p&gt;

&lt;p&gt;But one day, when I tried to &lt;strong&gt;hand my app over to an AI agent&lt;/strong&gt;, I was shocked.&lt;/p&gt;

&lt;p&gt;To my eyes, it was clearly a "Register" button.&lt;br&gt;
To the AI, it was just &lt;em&gt;a callback function pointing somewhere&lt;/em&gt; or &lt;em&gt;meaningless pixels&lt;/em&gt;.&lt;br&gt;
The AI couldn't understand the context of the UI I'd built,&lt;br&gt;
and even slightly complex requests would &lt;strong&gt;completely corrupt the system state&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At first, I thought:&lt;br&gt;
"The AI is just too dumb."&lt;/p&gt;

&lt;p&gt;But after countless debugging sessions, I realized I was wrong.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The problem wasn't the AI's intelligence.&lt;br&gt;
The problem was that the &lt;strong&gt;physics of the world&lt;/strong&gt; I'd provided were utterly broken.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  The UI We Build Is a World Made Only for Humans
&lt;/h2&gt;

&lt;p&gt;Buttons, lists, forms, modals—all of these assume that humans will "fill in the meaning themselves."&lt;/p&gt;

&lt;p&gt;Humans just &lt;em&gt;know&lt;/em&gt;.&lt;br&gt;
Why this button is here,&lt;br&gt;
what this list represents,&lt;br&gt;
how far this state is valid.&lt;/p&gt;

&lt;p&gt;But AI has no such tacit knowledge.&lt;br&gt;
All I'd given it were loosely connected state fragments and event handlers.&lt;/p&gt;

&lt;p&gt;At that moment, I stopped coding and started asking questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a "Register" button really a function?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Is a user list really an array?&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  No. They Weren't.
&lt;/h2&gt;

&lt;p&gt;They should have been &lt;strong&gt;coordinates within the vast space called the domain&lt;/strong&gt;.&lt;br&gt;
The register button should have been a &lt;strong&gt;vector&lt;/strong&gt; that moves state from coordinate A to coordinate B.&lt;br&gt;
The user list should have been a &lt;strong&gt;dimension&lt;/strong&gt; where those coordinates exist.&lt;/p&gt;

&lt;p&gt;What matters isn't "what to render,"&lt;br&gt;
but &lt;strong&gt;which coordinate system the state moves through&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This world needed explicit &lt;strong&gt;physics&lt;/strong&gt;, not implicit conventions.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Keyword: "Deterministic Coordinate Calculation"
&lt;/h2&gt;

&lt;p&gt;State shouldn't be data that changes arbitrarily.&lt;br&gt;
It should be the &lt;strong&gt;result of coordinate calculations&lt;/strong&gt; that always produce the same output for the same input.&lt;/p&gt;

&lt;p&gt;The moment I grasped this perspective,&lt;br&gt;
the architecture I'd been struggling with for over a year&lt;br&gt;
&lt;strong&gt;assembled itself in just one month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI was no longer a hallucination-prone nuisance.&lt;br&gt;
On the geometric space I'd designed,&lt;br&gt;
it became something closer to a &lt;strong&gt;calculator&lt;/strong&gt; that rapidly computes coordinates.&lt;/p&gt;


&lt;h2&gt;
  
  
  Before &amp;amp; After: What This Actually Looks Like
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before: Meaningless to AI — just a callback&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  Register
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The AI sees &lt;code&gt;createUser&lt;/code&gt;. But what does that mean? What preconditions must be met? What state changes result? It has no idea. So it guesses. And breaks things.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// After: Intent as a vector in state space&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user.create&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;preconditions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;currentView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;registrationForm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;formState&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;valid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user.write&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;effects&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;append&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$formData&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nx"&gt;currentView&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;userList&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;notification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User created&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the AI isn't guessing. It's &lt;strong&gt;computing&lt;/strong&gt;.&lt;br&gt;
Given the current coordinates, which intents are valid?&lt;br&gt;
What will the coordinates be after applying this vector?&lt;/p&gt;

&lt;p&gt;The LLM doesn't need to understand your business logic.&lt;br&gt;
It just needs to &lt;strong&gt;interpret&lt;/strong&gt; what the user wants and &lt;strong&gt;select&lt;/strong&gt; the appropriate vector.&lt;br&gt;
The deterministic engine handles the rest.&lt;/p&gt;


&lt;h2&gt;
  
  
  The O(1) Guarantee: Complexity Doesn't Matter
&lt;/h2&gt;

&lt;p&gt;Here's what surprised me most.&lt;/p&gt;

&lt;p&gt;Traditional AI agents get &lt;em&gt;slower&lt;/em&gt; as your task gets harder. Ask them to "mark all tasks as done"? A few calls. Ask them to "mark all tasks as done &lt;em&gt;except&lt;/em&gt; high priority ones"? Suddenly they're reasoning, backtracking, correcting—9 or 10 LLM calls.&lt;/p&gt;

&lt;p&gt;With the coordinate-based approach: &lt;strong&gt;always 2 calls&lt;/strong&gt;. Period.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task Type&lt;/th&gt;
&lt;th&gt;Traditional Agent&lt;/th&gt;
&lt;th&gt;Manifesto&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple ("show kanban")&lt;/td&gt;
&lt;td&gt;2-3 calls&lt;/td&gt;
&lt;td&gt;2 calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-field ("create urgent task for tomorrow")&lt;/td&gt;
&lt;td&gt;3-6 calls&lt;/td&gt;
&lt;td&gt;2 calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exception ("complete all except high priority")&lt;/td&gt;
&lt;td&gt;5-10 calls&lt;/td&gt;
&lt;td&gt;2 calls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Why? Because the LLM isn't &lt;em&gt;reasoning&lt;/em&gt;. It's &lt;em&gt;compiling&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The first call extracts the intent into coordinates. The second call translates the result back to natural language. Everything in between is deterministic computation—no LLM required.&lt;/p&gt;

&lt;p&gt;This isn't just faster. It's &lt;strong&gt;predictable&lt;/strong&gt;. Your costs don't spike randomly. Your latency doesn't depend on how the AI "feels" today.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Traditional Agents Drift
&lt;/h2&gt;

&lt;p&gt;There's a subtle failure mode I discovered while debugging.&lt;/p&gt;

&lt;p&gt;Every time an AI agent takes an action, it adds the result to its context. By turn 3, the original user request is just 25% of what the model is attending to. By turn 5, it's 12%.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Turn 1: Original input = 60% of context
Turn 3: Original input = 25% of context  
Turn 5: Original input = 12% of context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model literally &lt;em&gt;forgets&lt;/em&gt; what you asked for, buried under its own intermediate outputs.&lt;/p&gt;

&lt;p&gt;This is why exception clauses get ignored. "Complete all tasks &lt;em&gt;except&lt;/em&gt; the design review" becomes just "complete all tasks" after a few turns of context accumulation.&lt;/p&gt;

&lt;p&gt;The coordinate approach sidesteps this entirely. There's no iteration. No accumulating context. Just: input → coordinates → output.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next: Entering the Most Chaotic Coordinate Space
&lt;/h2&gt;

&lt;p&gt;Now I'm taking these principles into the most brutal, non-deterministic world I can find.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The crypto market.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a space filled with noise,&lt;br&gt;
where coincidence, illusion, and over-interpretation are daily occurrences.&lt;br&gt;
That's exactly what makes it the perfect extreme test case.&lt;/p&gt;

&lt;p&gt;The market is still a state space. Prices, volumes, indicators—they're all coordinates. The challenge is that this space has extreme noise, and humans constantly over-interpret signals that are just randomness.&lt;/p&gt;

&lt;p&gt;But if the coordinate system is explicit,&lt;br&gt;
if the physics are deterministic,&lt;br&gt;
then even in chaos, the AI becomes a disciplined &lt;strong&gt;calculator&lt;/strong&gt;—&lt;br&gt;
not a speculator who hallucinates patterns that don't exist.&lt;/p&gt;

&lt;p&gt;This experiment is called &lt;strong&gt;Coin Sapience&lt;/strong&gt;.&lt;br&gt;
I'll likely fail multiple times.&lt;br&gt;
But the coordinate system is clear now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;The architecture I've described is open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/manifesto-ai/core" rel="noopener noreferrer"&gt;github.com/manifesto-ai/core&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://taskflow.manifesto-ai.dev" rel="noopener noreferrer"&gt;taskflow.manifesto-ai.dev&lt;/a&gt;&lt;br&gt;
— An early v0.3 Intent Compiler demo.&lt;br&gt;
Raw, but it shows the core idea.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question I'm Left With
&lt;/h2&gt;

&lt;p&gt;I spent six years building UIs for humans.&lt;br&gt;
Now I'm learning to build &lt;strong&gt;worlds&lt;/strong&gt; for AI.&lt;/p&gt;

&lt;p&gt;The shift isn't about making AI smarter.&lt;br&gt;
It's about making our systems &lt;strong&gt;honest&lt;/strong&gt;—explicit about their physics instead of relying on human intuition to paper over the gaps.&lt;/p&gt;

&lt;p&gt;If you've ever watched an AI agent break your app in creative ways,&lt;br&gt;
maybe the problem wasn't the AI.&lt;/p&gt;

&lt;p&gt;Maybe, like me, you just hadn't defined the coordinates yet.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you tried giving AI agents access to your applications? What broke? I'd love to hear your war stories in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>frontend</category>
      <category>architecture</category>
      <category>agents</category>
    </item>
    <item>
      <title>Why Your AI Agent Says "Done" But Nothing Actually Happened</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Sat, 03 Jan 2026 10:59:09 +0000</pubDate>
      <link>https://forem.com/eggp/why-your-ai-agent-says-done-but-nothing-actually-happened-1no3</link>
      <guid>https://forem.com/eggp/why-your-ai-agent-says-done-but-nothing-actually-happened-1no3</guid>
      <description>&lt;p&gt;You know that feeling when your AI agent confidently declares a task complete, but when you check the UI... nothing changed?&lt;/p&gt;

&lt;p&gt;The button's still there. Unclicked.&lt;br&gt;&lt;br&gt;
The form's still empty. Unsubmitted.&lt;br&gt;&lt;br&gt;
The page hasn't moved.&lt;/p&gt;

&lt;p&gt;But your logs show:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Task completed successfully
✓ All steps executed
✓ Goal achieved
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've built UI automation with LLMs, you've seen this. Probably more times than you'd like to admit.&lt;/p&gt;

&lt;p&gt;And here's the thing everyone gets wrong at first:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's not a model problem.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem: We're Asking Agents to Decide What's True
&lt;/h2&gt;

&lt;p&gt;Most agent frameworks do something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Agent decides when it's done
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;thinks_task_is_complete&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;done&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Seems reasonable, right?&lt;/p&gt;

&lt;p&gt;But here's what actually happens in the real world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buttons can be disabled&lt;/li&gt;
&lt;li&gt;Forms can fail validation&lt;/li&gt;
&lt;li&gt;Network requests can be rejected&lt;/li&gt;
&lt;li&gt;DOM can change mid-action&lt;/li&gt;
&lt;li&gt;Timing can break everything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Executing an action ≠ Achieving a state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yet we keep writing code that treats them the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bug That Keeps Coming Back
&lt;/h2&gt;

&lt;p&gt;I've debugged this pattern in multiple production systems now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ This looks fine but fails in practice&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;completeTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;planSteps&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;complete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; &lt;span class="c1"&gt;// 🚨 Lies&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent executed all its steps.&lt;br&gt;&lt;br&gt;
But that doesn't mean the UI actually changed.&lt;/p&gt;

&lt;p&gt;Maybe the click event didn't fire.&lt;br&gt;&lt;br&gt;
Maybe the API call got rate-limited.&lt;br&gt;&lt;br&gt;
Maybe JavaScript just... didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The agent declared victory. Reality disagreed.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Bigger Models Won't Save You
&lt;/h2&gt;

&lt;p&gt;When this happens, the instinct is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Let's add more CoT reasoning"&lt;/li&gt;
&lt;li&gt;"We need a better model"&lt;/li&gt;
&lt;li&gt;"Maybe fine-tuning will help"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've tried all of these. They don't fix it.&lt;/p&gt;

&lt;p&gt;Because this isn't an intelligence failure.&lt;br&gt;&lt;br&gt;
It's an &lt;strong&gt;authority failure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We gave the agent the power to say "this is true" about a world it can't fully observe.&lt;/p&gt;

&lt;p&gt;That's like letting a process decide it successfully wrote to disk without checking the file system.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Fix: World-Verified Completion
&lt;/h2&gt;

&lt;p&gt;Instead of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Agent declares done&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;saysTaskComplete&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;done&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// World confirms done&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;submit_form&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formSubmitted&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;validationPassed&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;done&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference is subtle but critical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before&lt;/strong&gt;: Agent decides when reality is true&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After&lt;/strong&gt;: Agent proposes, world verifies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is how operating systems work (user/kernel separation).&lt;br&gt;&lt;br&gt;
This is how databases work (ACID guarantees).&lt;br&gt;&lt;br&gt;
This is how distributed systems work (consensus protocols).&lt;/p&gt;

&lt;p&gt;Why wouldn't AI agents work the same way?&lt;/p&gt;
&lt;h2&gt;
  
  
  A Real Example
&lt;/h2&gt;

&lt;p&gt;I built this into &lt;a href="https://taskflow.manifesto-ai.dev" rel="noopener noreferrer"&gt;TaskFlow&lt;/a&gt;, a demo app where agents manage a task list.&lt;/p&gt;

&lt;p&gt;The key architectural shift:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Agent proposes intent&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Core validates and computes next state&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;compute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Only then does state actually change&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;valid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;snapshot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextSnapshot&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent never directly mutates state.&lt;br&gt;&lt;br&gt;
It only proposes changes.&lt;br&gt;&lt;br&gt;
The world decides what's actually true.&lt;/p&gt;

&lt;p&gt;Result: &lt;strong&gt;Invalid actions dropped from 80%+ to 0%&lt;/strong&gt; in testing.&lt;/p&gt;

&lt;p&gt;Not because I used a better model.&lt;br&gt;&lt;br&gt;
Because I stopped asking the model to be the source of truth.&lt;/p&gt;
&lt;h2&gt;
  
  
  What This Means for Your Code
&lt;/h2&gt;

&lt;p&gt;Three practical changes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Separate intent from execution&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Don't mix these&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;clickButton&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// who verified this?&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ Separate clearly&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;clickButton&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;submit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;verified&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// world checked&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Make state observable&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Hidden state&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;formSubmitted&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// where? can agent see this?&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ Explicit snapshot&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;form&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;submitted&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;validated&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;currentPage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;form&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Define completion as predicates&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Implicit&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;noMoreSteps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;done&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ Explicit&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isDone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
  &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;submitted&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; 
  &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentPage&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Deeper Pattern
&lt;/h2&gt;

&lt;p&gt;This isn't just about UI agents.&lt;/p&gt;

&lt;p&gt;It's about &lt;strong&gt;who has authority over truth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In reliable systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Components propose&lt;/li&gt;
&lt;li&gt;The world verifies&lt;/li&gt;
&lt;li&gt;State is explicit&lt;/li&gt;
&lt;li&gt;Changes are traced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool-using agents (did the API call succeed?)&lt;/li&gt;
&lt;li&gt;Multi-agent systems (who decides what happened?)&lt;/li&gt;
&lt;li&gt;Human-in-loop (when do we need verification?)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;If you're building UI agents, ask yourself:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can the agent declare "done" without world verification?&lt;/li&gt;
&lt;li&gt;Is there hidden state the agent can't observe?&lt;/li&gt;
&lt;li&gt;Can actions fail silently?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If any answer is "yes", you're vulnerable to this bug.&lt;/p&gt;

&lt;p&gt;The good news: it's fixable with architecture, not better prompts.&lt;/p&gt;




&lt;p&gt;I'm working on &lt;a href="https://docs.manifesto-ai.dev" rel="noopener noreferrer"&gt;Manifesto&lt;/a&gt; – a framework built around these principles. The core idea is simple: &lt;strong&gt;explicit state, verified transitions, traced execution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Early specs and demos are live. Feedback welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the worst "agent said done but nothing happened" bug you've hit?&lt;/strong&gt; Drop a comment – I'm collecting war stories for the next post.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>llm</category>
    </item>
    <item>
      <title>World-Centric Agent Architecture: Why Your AI Agent Keeps Failing (And It's Not the Model's Fault)</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Tue, 30 Dec 2025 01:22:25 +0000</pubDate>
      <link>https://forem.com/eggp/world-centric-agent-architecture-why-your-ai-agent-keeps-failing-and-its-not-the-models-fault-2e5n</link>
      <guid>https://forem.com/eggp/world-centric-agent-architecture-why-your-ai-agent-keeps-failing-and-its-not-the-models-fault-2e5n</guid>
      <description>&lt;h1&gt;
  
  
  World-Centric Agent Architecture
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Deterministic Runtime and Hierarchical Intelligence Orchestration
&lt;/h2&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Your AI agent's failures aren't because the model isn't smart enough. They're because &lt;strong&gt;the World was never designed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post introduces &lt;strong&gt;World-Centric Architecture&lt;/strong&gt;—a paradigm where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The World is explicit, immutable, and verifiable&lt;/li&gt;
&lt;li&gt;Intelligence proposes changes but never executes them directly&lt;/li&gt;
&lt;li&gt;System stability is independent of model size&lt;/li&gt;
&lt;li&gt;Every value can answer "Why?"&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;If you're expecting another agent framework tutorial, this is not it.&lt;br&gt;
This post is about why agent systems fail structurally—even with strong models.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem Nobody's Talking About
&lt;/h2&gt;

&lt;p&gt;LLM-based agents have made remarkable progress. Yet they keep failing in predictable ways:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure Mode&lt;/th&gt;
&lt;th&gt;What Happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Impossible Action Loops&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent repeatedly tries actions that can't work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State Opacity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No one knows when or why state changed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Irreproducibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same input, different results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unrecoverable Failures&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can't rollback, can't try alternatives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unexplainability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Why did it do that?" → 🤷&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Misdiagnosis
&lt;/h2&gt;

&lt;p&gt;The industry's response has been consistent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The model isn't smart enough. Let's use a bigger one."&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Problem → "Model too dumb"
       → Bigger model / Longer reasoning / Complex planning
       → Higher cost / More complexity / Problem persists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We've been treating symptoms, not the disease.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable truth:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;These failures aren't intelligence failures. They're world modeling failures.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In most agent architectures, the "world" exists only inside the model's head:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│                    THE MODEL'S HEAD                         │
│                                                             │
│  ┌───────────────┐  ┌───────────────┐  ┌───────────────┐    │
│  │ World         │  │ Action        │  │ State         │    │
│  │ Understanding │  │ Selection     │  │ Transition    │    │
│  └───────────────┘  └───────────────┘  └───────────────┘    │
│                                                             │
│  Everything implicit. Nothing verifiable.                   │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the world (from context)&lt;/li&gt;
&lt;li&gt;Know what's possible (by reasoning)&lt;/li&gt;
&lt;li&gt;Pick the right action (while hallucinating)&lt;/li&gt;
&lt;li&gt;Track state changes (in its attention weights)&lt;/li&gt;
&lt;li&gt;Explain failures (good luck)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's too much responsibility for a non-deterministic text predictor.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Inversion: World-Centric Design
&lt;/h2&gt;

&lt;p&gt;What if we flipped the script?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────────────────────────────┐
│                      THE WORLD                               │
│                    (First-Class Citizen)                     │
│                                                              │
│       ┌─────────────┐  ┌─────────────┐  ┌──────────────┐     │
│       │   Rules     │  │   State     │  │  Actions     │     │
│       │  (Schema)   │  │ (Snapshot)  │  │(Availability)│     │
│       └─────────────┘  └─────────────┘  └──────────────┘     │
│                              │                               │
│                              ▼                               │
│                    ┌─────────────────┐                       │
│                    │   Intelligence  │                       │
│                    │   (Proposer)    │                       │
│                    └─────────────────┘                       │
│                                                              │
│  Intelligence is OUTSIDE. World is explicit.                 │
└──────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key shifts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;World exists &lt;strong&gt;outside&lt;/strong&gt; the model&lt;/li&gt;
&lt;li&gt;State is &lt;strong&gt;explicit and immutable&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Actions have &lt;strong&gt;verifiable availability&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Intelligence &lt;strong&gt;proposes&lt;/strong&gt;, doesn't execute&lt;/li&gt;
&lt;li&gt;Everything can &lt;strong&gt;explain itself&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Constitution
&lt;/h2&gt;

&lt;p&gt;World-Centric Architecture follows six principles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│  THE CONSTITUTION                                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. COMPILER defines possibility.                           │
│     What CAN happen is defined at design time.              │
│                                                             │
│  2. CORE computes truth.                                    │
│     What IS true is computed deterministically.             │
│                                                             │
│  3. ACTOR proposes change.                                  │
│     Intelligence suggests, never executes.                  │
│                                                             │
│  4. AUTHORITY judges proposals.                             │
│     Independent verification before any change.             │
│                                                             │
│  5. ORCHESTRATOR manages worlds.                            │
│     Multiple world branches for exploration.                │
│                                                             │
│  6. PROJECTION transforms I/O.                              │
│     Presentation is separate from meaning.                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Six Pillars
&lt;/h2&gt;

&lt;p&gt;Here's how these principles become architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│                   WORLD-CENTRIC SYSTEM                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌───────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │
│  │ COMPILER  │ │  ACTOR   │ │AUTHORITY │ │PROJECTION│       │
│  │           │ │          │ │          │ │          │       │
│  │Possibility│ │ Propose  │ │  Judge   │ │ Encode/  │       │
│  │Definition │ │ Change   │ │ Proposal │ │ Render   │       │
│  └────┬──────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘       │
│       │             │            │            │             │
│       │    ┌────────┴────────────┴────────────┘             │
│       │    │                                                │
│       ▼    ▼                                                │
│  ┌────────────────────────────────────────┐                 │
│  │            ORCHESTRATOR                │                 │
│  │   Runtime Lifecycle │ Fork Management  │                 │
│  └─────────────────────┬──────────────────┘                 │
│                        │                                    │
│                        ▼                                    │
│  ┌────────────────────────────────────────┐                 │
│  │               CORE                     │                 │
│  │  Expression │ Snapshot │ Patch/Apply   │                 │
│  │  Action │ Effect │ Explain             │                 │
│  └────────────────────────────────────────┘                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Owns State?&lt;/th&gt;
&lt;th&gt;Makes Decisions?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Core&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Truth Engine&lt;/td&gt;
&lt;td&gt;✅ Snapshot&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Actor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Change Proposer&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proposal Judge&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Projection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;I/O Transformer&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Orchestrator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;World Manager&lt;/td&gt;
&lt;td&gt;✅ Runtimes&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compiler&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Possibility Definer&lt;/td&gt;
&lt;td&gt;✅ Schema&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Core: The Deterministic Truth Engine
&lt;/h2&gt;

&lt;p&gt;Core is the foundation—a seven-layer engine that computes truth without side effects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│  Layer 7: EXPLAIN                                           │
│  "Why this value?" — Structural interpretation              │
├─────────────────────────────────────────────────────────────┤
│  Layer 6: PATCH / APPLY                                     │
│  The ONLY way to change truth                               │
├─────────────────────────────────────────────────────────────┤
│  Layer 5: EFFECT RUNTIME                                    │
│  External execution via handlers                            │
├─────────────────────────────────────────────────────────────┤
│  Layer 4: ACTION                                            │
│  Availability gate + Effect declaration                     │
├─────────────────────────────────────────────────────────────┤
│  Layer 3: SNAPSHOT                                          │
│  Immutable state at a point in time                         │
├─────────────────────────────────────────────────────────────┤
│  Layer 2: DAG                                               │
│  Dependency graph for incremental recompute                 │
├─────────────────────────────────────────────────────────────┤
│  Layer 1: EXPRESSION                                        │
│  Pure computation (no side-effects)                         │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Snapshots Are Immutable
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Snapshot&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="na"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Record&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unknown&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="na"&gt;validity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ConstraintResult&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// WRONG — Direct mutation&lt;/span&gt;
&lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new@example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// RIGHT — Patch/Apply produces NEW snapshot&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newSnapshot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;applyPatches&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user.email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new@example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Actions Gate on Availability
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SubmitAction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defineAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;AppState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// Availability is a COMPUTED FACT&lt;/span&gt;
  &lt;span class="na"&gt;availability&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user.computed.isValid&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;

  &lt;span class="c1"&gt;// Effect only runs IF available&lt;/span&gt;
  &lt;span class="na"&gt;effect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;effect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;api.submit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user.email&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impossible actions never reach execution.&lt;/strong&gt; The system prevents them structurally, not through model reasoning.&lt;/p&gt;

&lt;h3&gt;
  
  
  Everything Explains Itself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;explainAvailability&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;SubmitAction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Returns structured explanation:&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;available&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;and&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;contribution&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;false&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user.computed.emailOk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;  &lt;span class="c1"&gt;// ← ROOT CAUSE&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user.computed.passwordOk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No guessing. No "maybe the email was empty?" Just structural facts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hierarchical Intelligence: Student / Teacher / Orchestrator
&lt;/h2&gt;

&lt;p&gt;Intelligence isn't monolithic. It's layered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│  LEVEL 3: ORCHESTRATOR                                      │
│  ─────────────────────                                      │
│  • Manages multiple world branches (Fork tree)              │
│  • Preserves failed worlds (no deletion)                    │
│  • Selects successful path                                  │
│  • NO intelligence required (deterministic)                 │
├─────────────────────────────────────────────────────────────┤
│  LEVEL 2: TEACHER (Optional)                                │
│  ────────────────────────────                               │
│  • Observes failures and execution traces                   │
│  • Proposes world hypotheses                                │
│  • Does NOT execute, has NO authority                       │
│  • Can be wrong (not an oracle)                             │
├─────────────────────────────────────────────────────────────┤
│  LEVEL 1: STUDENT                                           │
│  ────────────────────                                       │
│  • Operates WITHIN current world                            │
│  • Selects from AVAILABLE actions only                      │
│  • Doesn't need to be smart (random works!)                 │
│  • Proposes, never applies                                  │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Minimal Student
&lt;/h3&gt;

&lt;p&gt;Here's the key insight: &lt;strong&gt;Student can be incredibly simple&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// This is a valid Student implementation&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;RandomStudent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;propose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SnapshotView&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Proposal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;available&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;availableActions&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;picked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;available&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;available&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)];&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;createProposal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;picked&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why does this work? Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Impossible actions are already filtered out&lt;/li&gt;
&lt;li&gt;State transitions are verified by Core&lt;/li&gt;
&lt;li&gt;Failures are handled by Orchestrator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A random selector produces &lt;strong&gt;valid execution traces&lt;/strong&gt;. Model intelligence is optional.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teacher is NOT an Oracle
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ORACLE (Not our Teacher):
• Has access to ground truth
• Guarantees correct answers
• Unfalsifiable

TEACHER (Our design):
• Observes only execution traces
• Proposes hypotheses that MAY BE WRONG
• All proposals verified through execution
• Falsifiable and auditable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Teacher = "A modeler who can be wrong"&lt;/p&gt;




&lt;h2&gt;
  
  
  Trust Boundaries
&lt;/h2&gt;

&lt;p&gt;Not everything is trusted equally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│  TRUSTED ZONE                                               │
│  ────────────                                               │
│  Core │ Orchestrator │ Authority │ Projection               │
│                                                             │
│  • Deterministic                                            │
│  • Auditable                                                │
│  • Structurally verified                                    │
└─────────────────────────────────────────────────────────────┘
                        ▲
                        │ Verification Boundary
                        ▼
┌─────────────────────────────────────────────────────────────┐
│  UNTRUSTED ZONE                                             │
│  ─────────────                                              │
│  LLM Actor │ External I/O                                   │
│                                                             │
│  • Non-deterministic                                        │
│  • May hallucinate                                          │
│  • All outputs verified before trust                        │
└─────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Firewall Principle:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM → Proposal → Authority → Approval → Core.apply()

NOT:
LLM → State  // FORBIDDEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LLM outputs &lt;strong&gt;never&lt;/strong&gt; directly mutate state. Ever.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Runtime Flow
&lt;/h2&gt;

&lt;p&gt;Here's how execution actually works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. PROJECTION renders Snapshot → View
   (Full state filtered to what Actor needs)

2. ACTOR (Student) observes View
   (Sees only available actions)

3. ACTOR proposes ChangeSet
   (Selects action, does NOT execute)

4. Wrap ChangeSet → Proposal
   (Attach identity for accountability)

5. AUTHORITY decides
   → approved / rejected / changes_requested

6. If approved, ORCHESTRATOR forwards to Core

7. CORE.executeAction()
   ├── Check availability (again!)
   ├── Resolve effect parameters
   ├── Execute handler → Patch[]
   ├── Apply patches → New Snapshot
   └── Recompute affected values

8. Loop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Failure &amp;amp; Fork
&lt;/h3&gt;

&lt;p&gt;When things go wrong:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Core returns { ok: false, reason: 'UNAVAILABLE' }

2. Orchestrator captures failure
   ├── Preserve current Snapshot (no deletion!)
   └── Generate ExplainGraph

3. Teacher (if present) analyzes
   ├── Input: Trace + ExplainGraph
   └── Output: World Hypothesis

4. Authority decides on Fork
   → approve / reject

5. Orchestrator creates Fork
   ├── Parent Runtime preserved
   └── Child Runtime with hypothesis applied

6. Execution continues in Child

7. On success, Authority selects winner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Failed worlds are &lt;strong&gt;preserved&lt;/strong&gt;, not deleted. You can always go back.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Intelligence Redistribution
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BEFORE (Intelligence-Centric):
────────────────────────────
Intelligence = World Understanding
             + Rule Enforcement
             + Action Selection
             + State Management
             + Failure Diagnosis

AFTER (World-Centric):
──────────────────────
Intelligence = Action Selection (minimal)

World Understanding  → Projection
Rule Enforcement     → Core (availability)
State Management     → Core (Patch/Apply)
Failure Diagnosis    → Core (Explain)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We moved 80% of the work &lt;strong&gt;out of the model&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Size Independence
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Intelligence-Centric:

Stability
   ▲
   │                    ╭────
   │               ╭────╯
   │          ╭────╯
   │     ╭────╯
   └─────┴────────────────────► Model Size

(Bigger model = More stable)

─────────────────────────────────────────

World-Centric:

Stability
   ▲
   │  ════════════════════════
   │
   │
   │
   └──────────────────────────► Model Size

(Stability independent of model size)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A random selector and a &lt;strong&gt;smart-enough model&lt;/strong&gt; (e.g., GPT-5 or Claude Opus) both produce &lt;strong&gt;valid&lt;/strong&gt; execution traces—because validity is enforced by the World (availability gates + Patch/Apply), not by the model’s reasoning.&lt;br&gt;&lt;br&gt;
A stronger model tends to be more &lt;strong&gt;efficient&lt;/strong&gt;, but &lt;strong&gt;correctness does not depend on model capability&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  When NOT to Use This
&lt;/h2&gt;

&lt;p&gt;World-Centric isn't for everything:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Why It Might Not Fit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pure creative writing&lt;/td&gt;
&lt;td&gt;No "correct" state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open-ended chat&lt;/td&gt;
&lt;td&gt;No action structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time streaming&lt;/td&gt;
&lt;td&gt;Snapshot overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trivial single-turn QA&lt;/td&gt;
&lt;td&gt;Overkill&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This architecture is designed for &lt;strong&gt;structured, multi-step, verifiable tasks&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent failures are often world modeling failures&lt;/strong&gt;, not intelligence failures&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make the World explicit&lt;/strong&gt;: Immutable snapshots, declarative patches, computed availability&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Intelligence proposes, never executes&lt;/strong&gt;: The firewall principle&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stability is achievable without scaling&lt;/strong&gt;: A random selector can produce valid execution&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Everything should explain itself&lt;/strong&gt;: If it can't answer "Why?", it's a black box&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preserve failures&lt;/strong&gt;: Fork trees enable recovery and exploration&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Philosophy
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"A system that cannot explain 'Why' is a dead system."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most agent architectures are black boxes. You pump in tokens, hope for the best, and debug through prayer.&lt;/p&gt;

&lt;p&gt;World-Centric Architecture is a &lt;strong&gt;white box&lt;/strong&gt;. Every value has provenance. Every action has availability. Every failure has explanation.&lt;/p&gt;

&lt;p&gt;That's not just good engineering. That's the difference between a demo and a production system.&lt;/p&gt;




&lt;h2&gt;
  
  
  See It In Action
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Theory is nice. Working software is better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TaskFlow&lt;/strong&gt; is a &lt;em&gt;playable proof-of-concept&lt;/em&gt; built &lt;strong&gt;before&lt;/strong&gt; the full 7-layer architecture—designed to demonstrate a simpler but critical idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLMs can be reduced to intent interpreters and semantic carriers,&lt;br&gt;&lt;br&gt;
while the system itself remains fully deterministic.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;TaskFlow shows that even &lt;em&gt;without&lt;/em&gt; the complete World-Centric runtime,&lt;br&gt;
a deterministic machine driven by explicit state and rules can already work.&lt;/p&gt;

&lt;p&gt;👉 Try the demo: &lt;a href="https://taskflow.manifesto-ai.dev" rel="noopener noreferrer"&gt;https://taskflow.manifesto-ai.dev&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This architecture is implemented in &lt;strong&gt;Manifesto&lt;/strong&gt;, an open-source framework. Future posts will cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deep dive into Core's 7 layers&lt;/li&gt;
&lt;li&gt;Building custom Actors with LLMs&lt;/li&gt;
&lt;li&gt;Authority patterns for different governance needs&lt;/li&gt;
&lt;li&gt;Fork strategies for exploration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questions? Disagreements? Let me know in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Thanks for reading. If you're tired of debugging agent failures at 3 AM, maybe it's time to stop blaming the model and start designing the world.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>llm</category>
      <category>agents</category>
    </item>
    <item>
      <title>Manifesto: A Semantic World Model Interface for AI-Operated Software Systems</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Wed, 10 Dec 2025 04:48:38 +0000</pubDate>
      <link>https://forem.com/eggp/manifesto-a-semantic-world-model-interface-for-ai-operated-software-systems-1f5d</link>
      <guid>https://forem.com/eggp/manifesto-a-semantic-world-model-interface-for-ai-operated-software-systems-1f5d</guid>
      <description>&lt;h3&gt;
  
  
  You can try it right now.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="//playground.manifesto-ai.dev"&gt;playable demo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/manifesto-ai/core" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1-Page Technical Concept Summary&lt;/strong&gt;
&lt;/h3&gt;
&lt;h2&gt;
  
  
  1. Problem
&lt;/h2&gt;

&lt;p&gt;Current AI agents control software systems (SaaS, internal tools, workflows) through &lt;strong&gt;vision, DOM heuristics, or textual reasoning&lt;/strong&gt;.&lt;br&gt;
These methods fail because modern applications contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hidden state&lt;/li&gt;
&lt;li&gt;Distributed business logic&lt;/li&gt;
&lt;li&gt;Non-deterministic UI behavior&lt;/li&gt;
&lt;li&gt;Implicit constraints &amp;amp; policies&lt;/li&gt;
&lt;li&gt;Asynchronous dependencies&lt;/li&gt;
&lt;li&gt;Multi-step workflows with conditional transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From an AI perspective:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The environment is not observable, not stable, and not structurally encoded.&lt;/strong&gt;&lt;br&gt;
→ No agent can reliably build a functional world model of such systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, AI cannot &lt;em&gt;plan&lt;/em&gt;, &lt;em&gt;explain&lt;/em&gt;, or &lt;em&gt;take actions safely&lt;/em&gt;.&lt;br&gt;
This is &lt;strong&gt;not&lt;/strong&gt; a model limitation—it is a &lt;strong&gt;representation problem&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Core Idea
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Manifesto provides a formal, declarative world-model interface for software systems.&lt;/strong&gt;&lt;br&gt;
It exposes the &lt;em&gt;semantics&lt;/em&gt;, &lt;em&gt;state transitions&lt;/em&gt;, and &lt;em&gt;action space&lt;/em&gt; of an application in a deterministic, machine-interpretable structure.&lt;/p&gt;

&lt;p&gt;Instead of forcing the model to infer business rules from pixels, DOM, or natural language, Manifesto makes those rules &lt;strong&gt;explicit&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Domain Semantics → Snapshot → Expression-based Rules → Action Effects
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In other words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Manifesto transforms software from a black-box UI into a white-box, symbolic environment.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the missing substrate required for reliable AI agents to operate real-world software.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Representation Model
&lt;/h2&gt;

&lt;p&gt;Manifesto formalizes a domain into four machine-interpretable namespaces:&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1. &lt;code&gt;data.*&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Mutable user-level inputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2. &lt;code&gt;state.*&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;System-level or async state (e.g., loading, error, fetched lists).&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3. &lt;code&gt;derived.*&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Deterministic values computed via a &lt;strong&gt;pure Expression DSL&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comparable to Mapbox-GL expressions&lt;/li&gt;
&lt;li&gt;JSON-serializable&lt;/li&gt;
&lt;li&gt;Static dependency graph&lt;/li&gt;
&lt;li&gt;No side-effects&lt;/li&gt;
&lt;li&gt;Fully analyzable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.4. &lt;code&gt;actions.*&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Side-effectful behaviors executed through structured &lt;strong&gt;Effect graphs&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ApiCall&lt;/li&gt;
&lt;li&gt;SetValue / SetState&lt;/li&gt;
&lt;li&gt;Parallel / Sequence&lt;/li&gt;
&lt;li&gt;Conditional / Catch&lt;/li&gt;
&lt;li&gt;EmitEvent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Action &lt;strong&gt;preconditions&lt;/strong&gt; represent domain policies (i.e., semantic constraints).&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Deterministic Runtime
&lt;/h2&gt;

&lt;p&gt;Manifesto’s core runtime:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Builds a &lt;strong&gt;Dependency DAG&lt;/strong&gt; from all expressions.&lt;/li&gt;
&lt;li&gt;Computes a &lt;strong&gt;Semantic Snapshot&lt;/strong&gt; of the domain:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   { data, state, derived, validity, timestamp, version }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Executes effects deterministically.&lt;/li&gt;
&lt;li&gt;Regenerates snapshots after each mutation.&lt;/li&gt;
&lt;li&gt;Emits &lt;strong&gt;explainable causal traces&lt;/strong&gt; (“why is this action blocked?”).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This creates a &lt;strong&gt;stable, inspectable, reproducible environment&lt;/strong&gt;—a property no UI or DOM-based system has today.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Agent Interface
&lt;/h2&gt;

&lt;p&gt;Manifesto exposes a unified agent-facing representation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current world state (Snapshot)&lt;/li&gt;
&lt;li&gt;Action space with preconditions&lt;/li&gt;
&lt;li&gt;Policy violations and their explanations&lt;/li&gt;
&lt;li&gt;Expected outcomes of each action&lt;/li&gt;
&lt;li&gt;Type-safe input schemas&lt;/li&gt;
&lt;li&gt;Semantic metadata attached to every path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planning&lt;/li&gt;
&lt;li&gt;Explanation&lt;/li&gt;
&lt;li&gt;Counterfactual reasoning&lt;/li&gt;
&lt;li&gt;Safety checks&lt;/li&gt;
&lt;li&gt;Repair strategies&lt;/li&gt;
&lt;li&gt;Autonomy under constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No inference from UI is needed; the agent receives a &lt;strong&gt;structural world model&lt;/strong&gt; similar to RL environments in research—but directly connected to real software.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Why This Matters for AI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6.1. Symbolic × Neural Integration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Manifesto provides the symbolic substrate AI systems have lacked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured state&lt;/li&gt;
&lt;li&gt;Deterministic transitions&lt;/li&gt;
&lt;li&gt;Explicit rules&lt;/li&gt;
&lt;li&gt;Finite action space&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LLMs reason over these structures much more reliably than raw UI observations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6.2. The Missing Layer Between LLMs and Applications&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Existing AI stacks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM ↔ (DOM / Vision / Heuristics) ↔ Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Manifesto replaces the brittle middle layer with a &lt;strong&gt;formal, semantic interface&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM ↔ Manifesto World Model ↔ Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;6.3. Enables True Agent Autonomy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Because the agent knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what it &lt;em&gt;can&lt;/em&gt; do (action space)&lt;/li&gt;
&lt;li&gt;what it &lt;em&gt;should not&lt;/em&gt; do (preconditions)&lt;/li&gt;
&lt;li&gt;what &lt;em&gt;will happen&lt;/em&gt; if it acts (effect semantics)&lt;/li&gt;
&lt;li&gt;why something &lt;em&gt;failed&lt;/em&gt; (explain tree)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It gains an unprecedented level of controllability and safety.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6.4. Enables Real-World Generalization&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every SaaS domain becomes a standardized environment:&lt;br&gt;
→ Agents can transfer patterns across domains.&lt;br&gt;
→ A universal semantic layer emerges.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Key Insight
&lt;/h2&gt;

&lt;p&gt;AI does not require an LLM to &lt;em&gt;infer&lt;/em&gt; the structure of software systems.&lt;br&gt;
Software systems already &lt;strong&gt;have&lt;/strong&gt; structure—it simply isn’t exposed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manifesto exposes that structure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By doing so, it provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A computable world&lt;/li&gt;
&lt;li&gt;A declarative logic layer&lt;/li&gt;
&lt;li&gt;A deterministic transition model&lt;/li&gt;
&lt;li&gt;A machine-consumable ontology&lt;/li&gt;
&lt;li&gt;A safe action interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the missing link that allows AI to &lt;strong&gt;act&lt;/strong&gt;, not just &lt;strong&gt;predict&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Summary Sentence
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Manifesto is a formal semantic interface that transforms real software systems into deterministic, explainable world models—enabling safe and generalizable AI agents to operate them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>UI is for Humans. Agents need a Semantic Projection. (A Proposal for AI-Native Architecture)</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Sun, 07 Dec 2025 15:24:34 +0000</pubDate>
      <link>https://forem.com/eggp/ui-is-for-humans-agents-need-a-semantic-projection-a-proposal-for-ai-native-architecture-14lb</link>
      <guid>https://forem.com/eggp/ui-is-for-humans-agents-need-a-semantic-projection-a-proposal-for-ai-native-architecture-14lb</guid>
      <description>&lt;p&gt;"We are witnessing a shift from Chat Interfaces to Agent Interfaces.&lt;/p&gt;

&lt;p&gt;While Vision-based agents demonstrate impressive capabilities, they face a fundamental structural limitation: they operate on the visual projection meant for humans, not the semantic truth of the system.&lt;/p&gt;

&lt;p&gt;To build reliable, deterministic enterprise agents, we need a new approach.&lt;/p&gt;

&lt;p&gt;This whitepaper proposes Intelligence Interface (I²)—an architecture where both the Human UI and the Agent Semantics are projected from a single domain source. It's an RFC (Request for Comments) for the future of AI-native application standards."&lt;/p&gt;

&lt;h1&gt;
  
  
  Intelligence Interface
&lt;/h1&gt;

&lt;h3&gt;
  
  
  A Semantic Architecture for AI-Native Applications
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Whitepaper v1.0&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;AI Agents have begun to operate applications. Yet today's UI was designed solely for humans—forcing Agents to infer invisible rules from what they can see. This is fundamentally incomplete.&lt;/p&gt;

&lt;p&gt;This whitepaper proposes &lt;strong&gt;Intelligence Interface (I²)&lt;/strong&gt;: an architecture that generates both the UI humans see and the semantics AI understands &lt;strong&gt;from a single source of truth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The essence of I² is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UI is a visual projection of the domain. AII is a semantic projection of the domain.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The two projections differ in form but share the same origin. This separation becomes the foundation of application architecture in the AI era.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Nature of the Problem
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 UI Was Designed for Humans
&lt;/h3&gt;

&lt;p&gt;For thirty years, UI evolved with only one consumer in mind: humans. Button colors, layout flows, animation timing—every detail was optimized for human cognition and perception.&lt;/p&gt;

&lt;p&gt;This design succeeded. Humans can now intuitively operate complex systems through UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 A New Consumer Emerges
&lt;/h3&gt;

&lt;p&gt;In 2024, a new UI consumer appeared: the AI Agent.&lt;/p&gt;

&lt;p&gt;Agents perceive UI in a fundamentally different way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Humans recognize &lt;strong&gt;visual patterns&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Agents parse &lt;strong&gt;structural data&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UI optimized for humans is &lt;strong&gt;informationally impoverished&lt;/strong&gt; for Agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 What Is Missing
&lt;/h3&gt;

&lt;p&gt;UI is a &lt;strong&gt;partial projection&lt;/strong&gt; of the domain. What appears on screen is the tip of the iceberg. Beneath the surface lies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why&lt;/strong&gt; is this button disabled?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Under what conditions&lt;/strong&gt; does this field appear?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What&lt;/strong&gt; must be entered to proceed?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which rules&lt;/strong&gt; validate this value?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Humans can use UI without this information. They learn patterns through trial and error, guided by intuition.&lt;/p&gt;

&lt;p&gt;Agents are different. For Agents, "trial and error" is &lt;strong&gt;failure&lt;/strong&gt;, and "intuition" is &lt;strong&gt;hallucination&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.4 The Decisive Example
&lt;/h3&gt;

&lt;p&gt;A user asks an Agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need to select a day of the week, but why isn't the day selector showing?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Vision Agent's limitation:&lt;/strong&gt;&lt;br&gt;
It knows the day selector isn't on screen. But it cannot know &lt;strong&gt;why&lt;/strong&gt;—that information isn't rendered. The Agent can only guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I² Agent's response:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;To select a day, you need to choose 'Weekly' instead of 'Monthly' 
in the Period option. The day selector is currently hidden because 
'Monthly' is selected.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This difference is not about model capability. It is about &lt;strong&gt;presence or absence of information&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Core Insight
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 UI Has a Grammar
&lt;/h3&gt;

&lt;p&gt;Observing hundreds of B2B SaaS applications, we discovered a pattern:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Surfaces differ, but structures are identical.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;CRUD, Dashboard, Workflow, Settings, Filters. Styles vary by product, but abstract structures are remarkably similar.&lt;/p&gt;

&lt;p&gt;The implication is clear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If UI Grammar exists, Domain and UI can be separated.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2.2 Two Projections
&lt;/h3&gt;

&lt;p&gt;If UI can be separated from Domain, &lt;strong&gt;other forms of projection&lt;/strong&gt; become possible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         Domain
            │
     ┌──────┴──────┐
     ▼             ▼
    UI            AII
 (for humans)  (for Agents)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI Projection&lt;/strong&gt;: Visual representation of the domain. Humans see and interact with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AII Projection&lt;/strong&gt;: Semantic representation of the domain. Agents read and understand it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two projections are &lt;strong&gt;different expressions of the same truth&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Defining Intelligence Interface
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Intelligence Interface (I²)&lt;/strong&gt; is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A common layer that &lt;strong&gt;simultaneously generates&lt;/strong&gt; the UI humans see and the semantics AI understands, from a single domain source.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I² does not replace UI. I² creates &lt;strong&gt;another projection that exists in parallel&lt;/strong&gt; with UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Why Vision Alone Is Insufficient
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 "What Is Visible" vs. "What Exists"
&lt;/h3&gt;

&lt;p&gt;Vision Agents understand what is &lt;strong&gt;visible&lt;/strong&gt; on screen.&lt;br&gt;
I² Agents understand what &lt;strong&gt;exists&lt;/strong&gt; in the system.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Vision&lt;/th&gt;
&lt;th&gt;I²&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What is this button?&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why is this button missing?&lt;/td&gt;
&lt;td&gt;✗&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How do I enable this?&lt;/td&gt;
&lt;td&gt;Guesses&lt;/td&gt;
&lt;td&gt;States conditions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What can I do now?&lt;/td&gt;
&lt;td&gt;Infers&lt;/td&gt;
&lt;td&gt;Responds immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;"The reason for what is invisible" is a question Vision cannot answer in principle.&lt;/p&gt;
&lt;h3&gt;
  
  
  3.2 Inference vs. Lookup
&lt;/h3&gt;

&lt;p&gt;Vision Agents &lt;strong&gt;infer&lt;/strong&gt; at every interaction.&lt;br&gt;
I² Agents &lt;strong&gt;look up&lt;/strong&gt; predefined rules.&lt;/p&gt;

&lt;p&gt;This is not merely a performance difference. The &lt;strong&gt;complexity class of the problem&lt;/strong&gt; differs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inference: Probabilistic, uncertain, unexplainable&lt;/li&gt;
&lt;li&gt;Lookup: Deterministic, certain, traceable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I² &lt;strong&gt;reduces an inference problem to a lookup problem&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  3.3 Testing and Trust
&lt;/h3&gt;

&lt;p&gt;Vision Agents cannot be tested. A small DOM change can produce entirely different results, with no way to understand why.&lt;/p&gt;

&lt;p&gt;I² Agents can be tested. Rules are explicit, enabling unit tests and predictable impact analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only testable systems can be trusted.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3.4 Explainability
&lt;/h3&gt;

&lt;p&gt;In regulated industries, "why did the AI make this decision" must be explainable.&lt;/p&gt;

&lt;p&gt;Vision Agent: "I looked at the screen and determined this button was correct."&lt;/p&gt;

&lt;p&gt;I² Agent: "order.status is 'draft' and user.role is 'manager', satisfying the submit conditions."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decisions that cannot be explained cannot be accountable.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  4. Why Now
&lt;/h2&gt;
&lt;h3&gt;
  
  
  4.1 The Turning Point
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Period&lt;/th&gt;
&lt;th&gt;UI Consumers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1995–2023&lt;/td&gt;
&lt;td&gt;Humans only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024–2025&lt;/td&gt;
&lt;td&gt;Humans + Agents (experimental)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026–&lt;/td&gt;
&lt;td&gt;Humans + Agents (mainstream)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Agents operating UI is no longer science fiction. It is happening now.&lt;/p&gt;
&lt;h3&gt;
  
  
  4.2 Recognition of Current Limits
&lt;/h3&gt;

&lt;p&gt;Vision-based Agents are producing impressive demos. But in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stability is lacking&lt;/li&gt;
&lt;li&gt;Testing is impossible&lt;/li&gt;
&lt;li&gt;Failure causes are unknown&lt;/li&gt;
&lt;li&gt;Maintenance costs are high&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The moment these limitations become widely recognized is approaching.&lt;/p&gt;
&lt;h3&gt;
  
  
  4.3 Why I² Differs from the Semantic Web
&lt;/h3&gt;

&lt;p&gt;The Semantic Web had a similar vision—"a web machines can understand"—but failed. Why is I² different?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Semantic Web&lt;/th&gt;
&lt;th&gt;I²&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;The entire web&lt;/td&gt;
&lt;td&gt;Form-centric B2B SaaS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generation&lt;/td&gt;
&lt;td&gt;Manual tagging&lt;/td&gt;
&lt;td&gt;Auto-derived from domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incentive&lt;/td&gt;
&lt;td&gt;Unclear&lt;/td&gt;
&lt;td&gt;DX benefits as standalone value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consumer&lt;/td&gt;
&lt;td&gt;Unclear&lt;/td&gt;
&lt;td&gt;AI Agents as clear consumers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Semantic Web failed trying to create "a standard for everything."&lt;br&gt;
I² provides "a practical solution for a specific problem."&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Philosophical Foundations of I²
&lt;/h2&gt;
&lt;h3&gt;
  
  
  5.1 Single Source of Truth
&lt;/h3&gt;

&lt;p&gt;If UI and AII are defined independently, inconsistency between them is inevitable. I² eliminates this problem at its root by making the &lt;strong&gt;Domain Layer the single source of truth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When Domain changes, both UI and AII change automatically. No manual synchronization required.&lt;/p&gt;
&lt;h3&gt;
  
  
  5.2 Declarative Rules
&lt;/h3&gt;

&lt;p&gt;Business rules should be expressed as &lt;strong&gt;data, not code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rules expressed as code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;period&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;weekly&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;showDaySelector&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rules expressed as data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"field"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"daySelector"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visible"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"AND"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"=="&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$state.period"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"weekly"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"LENGTH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$state.items"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code must be executed to know the result. Data can be read to know the meaning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Agents can understand is data.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 Intentional Limits on Expressiveness
&lt;/h3&gt;

&lt;p&gt;I²'s rule system is not Turing-complete. This is &lt;strong&gt;by design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Turing-complete system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cannot be statically analyzed&lt;/li&gt;
&lt;li&gt;Cannot guarantee termination&lt;/li&gt;
&lt;li&gt;Is difficult to understand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I² provides only the expressiveness &lt;strong&gt;necessary for UI decisions&lt;/strong&gt;. Beyond that, it delegates to the server.&lt;/p&gt;

&lt;p&gt;Constraints are not weakness. &lt;strong&gt;Constraints create predictability.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5.4 Progressive Adoption
&lt;/h3&gt;

&lt;p&gt;Technology that demands revolutionary change is not adopted. I² permits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding AII while keeping existing UI&lt;/li&gt;
&lt;li&gt;Building new features with I²&lt;/li&gt;
&lt;li&gt;Gradually transitioning legacy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;All-or-nothing becomes nothing.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Value Provided by I²
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6.1 For Agents
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Complete context&lt;/td&gt;
&lt;td&gt;Access to hidden rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deterministic control&lt;/td&gt;
&lt;td&gt;Rule-based, not inference-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explainability&lt;/td&gt;
&lt;td&gt;Every action's reason is traceable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  6.2 For Developers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework independence&lt;/td&gt;
&lt;td&gt;React/Vue/Native from same Domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Declarative development&lt;/td&gt;
&lt;td&gt;Rules as schema, not code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testability&lt;/td&gt;
&lt;td&gt;Unit tests for business rules&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  6.3 For Business
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI automation&lt;/td&gt;
&lt;td&gt;Agents safely perform tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regulatory compliance&lt;/td&gt;
&lt;td&gt;Auditable decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Future-proofing&lt;/td&gt;
&lt;td&gt;Standard architecture for the AI era&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Scope of Application
&lt;/h2&gt;

&lt;h3&gt;
  
  
  7.1 What I² Solves
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Form-centric transactional applications&lt;/li&gt;
&lt;li&gt;State-driven B2B SaaS&lt;/li&gt;
&lt;li&gt;CRUD business tools&lt;/li&gt;
&lt;li&gt;Workflow enterprise systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This domain represents an &lt;strong&gt;overwhelming share&lt;/strong&gt; of the commercial software market.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.2 What I² Does Not Solve
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Real-time canvas collaboration (Figma, Miro)&lt;/li&gt;
&lt;li&gt;CAD / 3D modeling&lt;/li&gt;
&lt;li&gt;Games / Media players&lt;/li&gt;
&lt;li&gt;Highly custom domain-specific UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not selection bias. It is &lt;strong&gt;intentional focus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Technology that tries to solve every problem solves none.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Position in the Competitive Landscape
&lt;/h2&gt;

&lt;h3&gt;
  
  
  8.1 Relationship with MCP
&lt;/h3&gt;

&lt;p&gt;MCP (Model Context Protocol) defines &lt;strong&gt;what&lt;/strong&gt; an Agent can do.&lt;br&gt;
I² defines &lt;strong&gt;why&lt;/strong&gt; it can do it and &lt;strong&gt;what&lt;/strong&gt; the current state is.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MCP:  "A submit_order function exists"
I²:   "submit_order is executable under these conditions..."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MCP handles &lt;strong&gt;actions&lt;/strong&gt;. I² handles &lt;strong&gt;meaning&lt;/strong&gt;.&lt;br&gt;
They are not alternatives—they are &lt;strong&gt;complements&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.2 Difference from RPA
&lt;/h3&gt;

&lt;p&gt;RPA depends on screen coordinates and selectors. When UI changes, it breaks.&lt;br&gt;
I² depends on semantics. When UI changes but meaning remains, it works.&lt;/p&gt;

&lt;p&gt;RPA says "click here."&lt;br&gt;
I² says "submit the order."&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;h3&gt;
  
  
  9.1 Core Propositions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;UI is a visual projection of the domain&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AII is a semantic projection of the domain&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generating both projections from a single source is I²&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  9.2 Historical Necessity
&lt;/h3&gt;

&lt;p&gt;The limitation of Vision Agents stems not from model capability but from &lt;strong&gt;structural absence of information&lt;/strong&gt;. No matter how intelligent, an Agent cannot read information that does not exist.&lt;/p&gt;

&lt;p&gt;I² provides that information.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.3 Our Conviction
&lt;/h3&gt;

&lt;p&gt;In an era where AI operates applications, a &lt;strong&gt;semantic layer&lt;/strong&gt; becomes not optional but essential.&lt;/p&gt;

&lt;p&gt;We are convinced that I² will be the name of that layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Appendix: Terminology
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;I²&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Intelligence Interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AII&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI Interpretation Interface — semantic projection for Agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Domain Layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Business logic layer containing entities, rules, and constraints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Projection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A purpose-specific representation derived from Domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Semantic Snapshot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complete representation of state + rules + available actions at a point in time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Intelligence Interface Whitepaper v1.0&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"UI is what humans see. AII is what Agents understand. Their origin is one."&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Don't Feed HTML to Your Agents</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Thu, 04 Dec 2025 15:49:45 +0000</pubDate>
      <link>https://forem.com/eggp/dont-feed-html-to-your-agents-2cf5</link>
      <guid>https://forem.com/eggp/dont-feed-html-to-your-agents-2cf5</guid>
      <description>&lt;h3&gt;
  
  
  Why Complex SaaS Needs a White Box Protocol for AI
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Beyond UI Generation — where humans and AI communicate through meaning, not pixels&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR — Give AI a White Box, Not a Black Box
&lt;/h2&gt;

&lt;p&gt;Most AI agents interact with web apps through &lt;strong&gt;Black Box&lt;/strong&gt; methods: consuming DOM dumps or screenshots, then guessing what to click.&lt;/p&gt;

&lt;p&gt;But HTML was never designed for machines. From the AI's perspective, the DOM is noise where business logic is faintly buried.&lt;/p&gt;

&lt;p&gt;This essay argues for a &lt;strong&gt;White Box&lt;/strong&gt; approach:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Instead of making agents reverse-engineer the UI, expose a &lt;strong&gt;Semantic State Layer&lt;/strong&gt; that reveals the application's structure, rules, state, and valid transitions directly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is not about replacing UI. It's about giving AI agents a proper interface — what I call an &lt;strong&gt;Intelligence Interface (II)&lt;/strong&gt; — alongside the traditional User Interface.&lt;/p&gt;

&lt;p&gt;This post introduces &lt;strong&gt;Manifesto&lt;/strong&gt;, an open-source engine that implements this philosophy with a concrete protocol: &lt;code&gt;@manifesto-io/*&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fhl9s53f2rf11curel7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fhl9s53f2rf11curel7.gif" alt="Manifesto Playground Demo" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎮 &lt;strong&gt;&lt;a href="https://manifesto-io-playground.vercel.app/" rel="noopener noreferrer"&gt;Try it yourself → Manifesto Playground&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Black Box: The Current State of AI + Web Apps
&lt;/h2&gt;

&lt;p&gt;Here's how most teams "add AI" to their web apps today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use LangChain, AutoGPT, or browser automation&lt;/li&gt;
&lt;li&gt;Drive Playwright or Puppeteer&lt;/li&gt;
&lt;li&gt;Dump the DOM or screenshot into the model&lt;/li&gt;
&lt;li&gt;Hope it figures out what to click&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the &lt;strong&gt;Black Box&lt;/strong&gt; approach. The agent sees only the rendered surface and must infer everything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Wrong with DOM Dumps?
&lt;/h3&gt;

&lt;p&gt;Consider a typical Material UI form field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MuiFormControl-root css-1u3bzj6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MuiInputLabel-root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Product Name&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MuiInputBase-root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;aria-invalid=&lt;/span&gt;&lt;span class="s"&gt;"false"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MuiInputBase-input"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MuiFormHelperText-root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;This field is required.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From an agent's perspective:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Token waste&lt;/td&gt;
&lt;td&gt;90% of tokens are class names and wrappers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Missing constraints&lt;/td&gt;
&lt;td&gt;Is it required? What's the max length?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No dependencies&lt;/td&gt;
&lt;td&gt;Does this field depend on others?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No causality&lt;/td&gt;
&lt;td&gt;Submit is disabled — but &lt;em&gt;why&lt;/em&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The agent is forced to &lt;strong&gt;guess&lt;/strong&gt;. A CSS refactor breaks everything. A layout change confuses the model. The logic was never exposed — only its visual projection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signal &amp;lt; 10%. Noise &amp;gt; 90%.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. White Box: Exposing the Application's Brain
&lt;/h2&gt;

&lt;p&gt;The alternative is a &lt;strong&gt;White Box&lt;/strong&gt; protocol.&lt;/p&gt;

&lt;p&gt;Instead of showing HTML, the engine exposes a &lt;strong&gt;Semantic Snapshot&lt;/strong&gt; — a structured representation of the application's internal state that agents can read directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"topology"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"viewId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"product-create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sections"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"basic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Basic Info"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"productType"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shipping"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Shipping"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"shippingWeight"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"form"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"isValid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"isDirty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"errors"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Required"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"productType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PHYSICAL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"errors"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"shippingWeight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"valid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"errors"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"constraints"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minLength"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxLength"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"shippingWeight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"min"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"max"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"dependsOn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"productType"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"interactions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updateField:name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"intent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updateField"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"available"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updateField:productType"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"intent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"updateField"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"target"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"productType"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"available"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"submit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"intent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"submit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"available"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Name is required"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the agent has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Topology&lt;/strong&gt;: Screen structure, sections, field hierarchy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State&lt;/strong&gt;: Current values, validity, visibility, errors — per field&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints&lt;/strong&gt;: Required, min/max, dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactions&lt;/strong&gt;: What actions are available, and &lt;strong&gt;why&lt;/strong&gt; some are blocked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No guessing. No inference. The agent reads the application's brain directly.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. A Real Use Case: "Where Do I Select the Week?"
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;🎮 &lt;strong&gt;See it in action&lt;/strong&gt;: &lt;a href="https://manifesto-io-playground.vercel.app/" rel="noopener noreferrer"&gt;Manifesto Playground&lt;/a&gt; — try changing field values and watch the semantic state update in real-time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's a scenario from a complex SaaS scheduling interface:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;User&lt;/strong&gt;: "I see a date picker, but where do I select which week?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Chatbot&lt;/strong&gt;: "The week selector only appears when you set frequency to 'Weekly'. Right now it's set to 'Daily'. Should I change it for you?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For this to work, the AI needs to know:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A field called &lt;code&gt;weekSelector&lt;/code&gt; exists&lt;/li&gt;
&lt;li&gt;It's currently hidden&lt;/li&gt;
&lt;li&gt;It becomes visible when &lt;code&gt;frequency === 'WEEKLY'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The current value of &lt;code&gt;frequency&lt;/code&gt; is &lt;code&gt;'DAILY'&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No amount of DOM parsing gives you this reliably. But a Semantic Snapshot does:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"frequency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DAILY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"weekSelector"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"visibleWhen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"frequency === 'WEEKLY'"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI reads this and &lt;strong&gt;knows&lt;/strong&gt; — without inference — exactly why the field is hidden and what would make it appear.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Protocol Loop
&lt;/h2&gt;

&lt;p&gt;Manifesto implements a continuous feedback loop between the engine and AI agents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  [Context Injection] → [Reasoning] → [Action Dispatch] → [Delta]    │
│          ▲                                                  │       │
│          └─────────────── Continuous Snapshots ─────────────┘       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step by Step:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Context Injection&lt;/strong&gt;: Engine exports a Semantic Snapshot&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topology (sections, fields, hierarchy)&lt;/li&gt;
&lt;li&gt;State (values, validity, visibility)&lt;/li&gt;
&lt;li&gt;Constraints (what's blocked and why)&lt;/li&gt;
&lt;li&gt;Interactions (available intents with reasons)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reasoning&lt;/strong&gt;: Agent plans next action based on snapshot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Action Dispatch&lt;/strong&gt;: Agent calls abstract intents, not DOM events&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;updateField&lt;/code&gt;, &lt;code&gt;submit&lt;/code&gt;, &lt;code&gt;reset&lt;/code&gt;, &lt;code&gt;validate&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Delta Feedback&lt;/strong&gt;: Engine returns what changed&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not just "success" — the actual state diff&lt;/li&gt;
&lt;li&gt;Agent learns causality: "I changed X, and Y became hidden"&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Loop continues&lt;/strong&gt; with updated snapshot&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is fundamentally different from "click and hope." The agent operates on &lt;strong&gt;structured meaning&lt;/strong&gt; with &lt;strong&gt;predictable feedback&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The API: Exploration and Execution
&lt;/h2&gt;

&lt;p&gt;Manifesto exposes this protocol through &lt;code&gt;@manifesto-io/ai&lt;/code&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploration Mode: "What can I do here?"
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createInteroperabilitySession&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@manifesto-io/ai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createInteroperabilitySession&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;       &lt;span class="c1"&gt;// FormRuntime instance&lt;/span&gt;
  &lt;span class="nx"&gt;viewSchema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="c1"&gt;// View definition&lt;/span&gt;
  &lt;span class="nx"&gt;entitySchema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// Entity definition&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// Get current semantic snapshot&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;snapshot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;// snapshot.interactions tells the agent:&lt;/span&gt;
&lt;span class="c1"&gt;// - submit: available=false, reason="Name is required"&lt;/span&gt;
&lt;span class="c1"&gt;// - updateField:name: available=true&lt;/span&gt;
&lt;span class="c1"&gt;// - updateField:productType: available=true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent now knows the current state and exactly what actions are valid.&lt;/p&gt;

&lt;h3&gt;
  
  
  Execution Mode: "Change it to digital"
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;updateField&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fieldId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_tag&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ok&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;delta&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;

  &lt;span class="c1"&gt;// delta shows exactly what changed:&lt;/span&gt;
  &lt;span class="c1"&gt;// {&lt;/span&gt;
  &lt;span class="c1"&gt;//   fields: {&lt;/span&gt;
  &lt;span class="c1"&gt;//     productType: { value: 'DIGITAL' },&lt;/span&gt;
  &lt;span class="c1"&gt;//     shippingWeight: { hidden: true },&lt;/span&gt;
  &lt;span class="c1"&gt;//     fulfillmentType: { hidden: true }&lt;/span&gt;
  &lt;span class="c1"&gt;//   },&lt;/span&gt;
  &lt;span class="c1"&gt;//   interactions: {&lt;/span&gt;
  &lt;span class="c1"&gt;//     'updateField:shippingWeight': { available: false, reason: 'Field is hidden' }&lt;/span&gt;
  &lt;span class="c1"&gt;//   }&lt;/span&gt;
  &lt;span class="c1"&gt;// }&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent doesn't just get "success." It gets a &lt;strong&gt;delta&lt;/strong&gt; showing the causal chain: changing productType to DIGITAL caused shippingWeight to become hidden.&lt;/p&gt;

&lt;h3&gt;
  
  
  LLM Tool Export
&lt;/h3&gt;

&lt;p&gt;Convert the snapshot into OpenAI/Claude-compatible function definitions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;toToolDefinitions&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@manifesto-io/ai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;toToolDefinitions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;snapshot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;omitUnavailable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// Returns JSON-Schema tool definitions:&lt;/span&gt;
&lt;span class="c1"&gt;// - updateField (with enum of available fields)&lt;/span&gt;
&lt;span class="c1"&gt;// - submit (if form is valid)&lt;/span&gt;
&lt;span class="c1"&gt;// - reset&lt;/span&gt;
&lt;span class="c1"&gt;// - validate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables agents to interact with forms through standard function-calling interfaces.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Safety Rails: The Hallucination Firewall
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Problem with Black Box
&lt;/h3&gt;

&lt;p&gt;When an agent manipulates DOM directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can click anything, including elements it shouldn't&lt;/li&gt;
&lt;li&gt;It can input invalid values&lt;/li&gt;
&lt;li&gt;It can trigger actions outside its permission&lt;/li&gt;
&lt;li&gt;Failures are silent or cryptic&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Manifesto's Safety Rails
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Hallucination Firewall&lt;/strong&gt;: Every agent action is validated before execution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;updateField&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;fieldId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nonexistent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// ❌ Unknown field&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// result._tag === 'Err'&lt;/span&gt;
&lt;span class="c1"&gt;// result.error === 'Field not found: nonexistent'&lt;/span&gt;
&lt;span class="c1"&gt;// State unchanged — no side effects&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What gets rejected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unknown fields → &lt;code&gt;Err&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Type mismatches (string to number field) → &lt;code&gt;Err&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Hidden field updates → &lt;code&gt;Err&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Disabled field updates → &lt;code&gt;Err&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Unauthorized actions → &lt;code&gt;Err&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Atomic Rollback&lt;/strong&gt;: On any failure, the previous snapshot remains intact. No partial mutations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic Contracts&lt;/strong&gt;: Same input + same state = same output. Agents can plan reliably.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;capability-based access control&lt;/strong&gt; for AI. The agent only sees and can only act on what's explicitly permitted.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. The Schema Layer
&lt;/h2&gt;

&lt;p&gt;The Semantic Snapshot is derived from a declarative schema. Here's how it looks:&lt;/p&gt;

&lt;h3&gt;
  
  
  Entity Schema (Domain truth)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;field&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;enumValue&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@manifesto-io/schema&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productTypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nf"&gt;enumValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PHYSICAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Physical Product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nf"&gt;enumValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Digital Product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productEntity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1.0.0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;field&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product name is required&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;

    &lt;span class="nx"&gt;field&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;productTypes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;required&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;defaultValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PHYSICAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;

    &lt;span class="nx"&gt;field&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Shipping Weight (kg)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  View Schema (UI behavior)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;view&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;section&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fieldEquals&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@manifesto-io/schema&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productCreateView&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;view&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;product-create&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Create Product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1.0.0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;entityRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;product&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;create&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nf"&gt;section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;basic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Basic Information&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1rem&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;textInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product Name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;

        &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Product Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reaction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
              &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;when&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;fieldEquals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
              &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateProp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
              &lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reaction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
              &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;when&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
              &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateProp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
              &lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;

        &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;numberInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;label&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Shipping Weight (kg)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dependsOn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;props&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;min&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;max&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The schema captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dependencies&lt;/strong&gt;: &lt;code&gt;.dependsOn('productType')&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactions&lt;/strong&gt;: &lt;code&gt;on.change().when(...).do(...)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business rules&lt;/strong&gt;: DIGITAL hides shipping fields&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this is &lt;strong&gt;introspectable&lt;/strong&gt;. The engine reads the schema, builds a DAG of dependencies, and exports the current state as a Semantic Snapshot.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Why Not Existing Tools?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;Gap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;XState&lt;/td&gt;
&lt;td&gt;State machines&lt;/td&gt;
&lt;td&gt;No UI semantics, no agent protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zod&lt;/td&gt;
&lt;td&gt;Validation&lt;/td&gt;
&lt;td&gt;No field dependencies, no visibility rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React Hook Form&lt;/td&gt;
&lt;td&gt;Form state&lt;/td&gt;
&lt;td&gt;Business logic buried in components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP&lt;/td&gt;
&lt;td&gt;Tool invocation&lt;/td&gt;
&lt;td&gt;No UI domain logic, no snapshot protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The missing piece is a layer that captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why&lt;/strong&gt; a field is hidden (not just that it is)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What&lt;/strong&gt; conditions enable an action&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How&lt;/strong&gt; fields relate to each other&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What changed&lt;/strong&gt; after an action (delta feedback)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is &lt;strong&gt;UI domain logic&lt;/strong&gt;. None of the above expose it in a machine-readable protocol.&lt;/p&gt;

&lt;p&gt;Manifesto fills that gap.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. UI for Humans, II for Agents
&lt;/h2&gt;

&lt;p&gt;For decades we've built &lt;strong&gt;User Interfaces&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look good on screen&lt;/li&gt;
&lt;li&gt;Feel responsive&lt;/li&gt;
&lt;li&gt;Work across devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That still matters. But it's no longer enough.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Software now needs both a &lt;strong&gt;UI&lt;/strong&gt; for humans and an &lt;strong&gt;II&lt;/strong&gt; — Intelligence Interface — for agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Consumer&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UI&lt;/td&gt;
&lt;td&gt;Humans&lt;/td&gt;
&lt;td&gt;Pixels, clicks, visual feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;II&lt;/td&gt;
&lt;td&gt;Agents&lt;/td&gt;
&lt;td&gt;Semantic Snapshot, intent dispatch, delta feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Manifesto's architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────┐
│                    Schema Layer                             │
│  ┌─────────────┬─────────────┬─────────────────────────┐    │
│  │   Entity    │    View     │   Reactions &amp;amp; Rules     │    │
│  └─────────────┴─────────────┴─────────────────────────┘    │
├─────────────────────────────────────────────────────────────┤
│                    Engine (DAG Runtime)                     │
├───────────────────────┬─────────────────────────────────────┤
│      UI Renderer      │       AI Protocol (@manifesto/ai)   │
│   (React/Vue/etc)     │    Snapshot + Dispatch + Delta      │
└───────────────────────┴─────────────────────────────────────┘
        ↓                              ↓
      Humans                        Agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Define the schema once. Generate both UI and II from it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. What Is an "AI-Native Application"?
&lt;/h2&gt;

&lt;p&gt;To me, an AI-native application has these properties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;White Box, not Black Box&lt;/strong&gt; — The engine exposes semantic state, not just rendered output&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UI is a projection&lt;/strong&gt; — A visual representation of state, not the source of truth&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agents interact with meaning&lt;/strong&gt; — Through structured snapshots and intent dispatch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Protocol over DOM&lt;/strong&gt; — Actions are validated, deterministic, and return deltas&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Safety by design&lt;/strong&gt; — Hallucination firewall, atomic rollback, capability-based access&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This doesn't mean abandoning UI. It means recognizing that &lt;strong&gt;UI alone is insufficient&lt;/strong&gt; when your users include both humans and machines.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Road Ahead
&lt;/h2&gt;

&lt;p&gt;We're at an inflection point.&lt;/p&gt;

&lt;p&gt;For decades, software was built for human consumption. UI was the interface, and it was enough.&lt;/p&gt;

&lt;p&gt;Now, AI agents are becoming first-class users. They don't need pixels and click events. They need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured state&lt;/li&gt;
&lt;li&gt;Explicit constraints&lt;/li&gt;
&lt;li&gt;Causal feedback&lt;/li&gt;
&lt;li&gt;Safe execution boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The teams that build for this will have AI integrations that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interpretable&lt;/strong&gt;: Agents understand intent, not just surface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic&lt;/strong&gt;: Same input, same output&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debuggable&lt;/strong&gt;: Trace exactly what changed and why&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe&lt;/strong&gt;: Hallucinations rejected, not silently executed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The teams that don't will find their AI integrations perpetually fragile — dependent on screenshot parsing and prompt hacks that break with every redesign.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;HTML is a great language for humans.&lt;/p&gt;

&lt;p&gt;For AI, it's a noisy encoding of things it shouldn't have to reverse-engineer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI doesn't need your pixels. It needs your meaning.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That meaning should be exposed as a &lt;strong&gt;Semantic State Layer&lt;/strong&gt; — a White Box protocol where agents can read state, dispatch intents, and receive causal feedback.&lt;/p&gt;

&lt;p&gt;Manifesto is my attempt to build that layer.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/eggplantiny/manifesto-io" rel="noopener noreferrer"&gt;github.com/eggplantiny/manifesto-io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playground&lt;/strong&gt;: &lt;a href="https://manifesto-io-playground.vercel.app/" rel="noopener noreferrer"&gt;manifesto-io-playground.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Package&lt;/strong&gt;: &lt;code&gt;@manifesto-io/*&lt;/code&gt; — The interoperability protocol for agents&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Don't feed HTML to your agents.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Give them a White Box: state, intent, and semantics.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>saas</category>
      <category>ai</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why UI Generation Is Not Enough in the AI Era</title>
      <dc:creator>Jung Sungwoo</dc:creator>
      <pubDate>Wed, 03 Dec 2025 06:26:51 +0000</pubDate>
      <link>https://forem.com/eggp/why-ui-generation-is-not-enough-in-the-ai-era-2048</link>
      <guid>https://forem.com/eggp/why-ui-generation-is-not-enough-in-the-ai-era-2048</guid>
      <description>&lt;h1&gt;
  
  
  Why UI Generation Is Not Enough in the AI Era
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;A philosophy of software architecture from the perspective of AI agents&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;For the past decade, UI generation has been the flagship promise of developer productivity. Visual builders, code templates, declarative schemas—all designed to accelerate the creation of user interfaces.&lt;/p&gt;

&lt;p&gt;But something fundamental has changed.&lt;/p&gt;

&lt;p&gt;The users of our software are no longer just humans. AI agents now interact with applications, trigger workflows, manipulate data, and evolve systems. And here's the uncomfortable truth: &lt;strong&gt;UI was never designed for them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This essay argues that in the AI era, generating UI is no longer the bottleneck. The bottleneck is the absence of machine-readable semantics. And until we address this, AI agents will continue to guess, hallucinate, and fail.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Lens Matters: Human Semantics ≠ Machine Semantics
&lt;/h2&gt;

&lt;p&gt;Before we proceed, let me be explicit about the lens through which I'm viewing software:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a critique of modern frontend development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React, Vue, and Svelte are sophisticated frameworks. They organize code into semantic components. A &lt;code&gt;&amp;lt;UserForm /&amp;gt;&lt;/code&gt; component is meaningful—to a human developer who can read its implementation.&lt;/p&gt;

&lt;p&gt;But an AI agent cannot open &lt;code&gt;UserForm.tsx&lt;/code&gt; and understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What fields exist inside&lt;/li&gt;
&lt;li&gt;Which fields depend on others&lt;/li&gt;
&lt;li&gt;What validation rules apply&lt;/li&gt;
&lt;li&gt;When a field becomes disabled&lt;/li&gt;
&lt;li&gt;What side effects occur on submit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The component is a &lt;strong&gt;black box&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Modern UI frameworks are semantic &lt;em&gt;for humans&lt;/em&gt;. They are opaque &lt;em&gt;for machines&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This distinction is the foundation of everything that follows.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why AI Fails: The Interpretation Gap
&lt;/h2&gt;

&lt;p&gt;When an AI agent "mis-clicks" or "hallucinates form behavior," the instinct is to blame model accuracy.&lt;/p&gt;

&lt;p&gt;My view is different.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI fails because applications do not expose their internal semantics.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consider what happens when an AI agent encounters a typical web form:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It sees a screenshot (or DOM structure)&lt;/li&gt;
&lt;li&gt;It identifies visual elements: buttons, inputs, dropdowns&lt;/li&gt;
&lt;li&gt;It &lt;em&gt;infers&lt;/em&gt; what those elements do based on labels and context&lt;/li&gt;
&lt;li&gt;It executes actions based on those inferences&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 3 is where everything breaks.&lt;/p&gt;

&lt;p&gt;The AI has no way of knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That selecting "Digital Product" should hide the "Shipping Weight" field&lt;/li&gt;
&lt;li&gt;That "Subcategory" depends on "Category" and should be disabled until Category is selected&lt;/li&gt;
&lt;li&gt;That "Freight" shipping type enforces a minimum weight of 50kg&lt;/li&gt;
&lt;li&gt;That "Final Price" is auto-calculated from "Price" and "Discount Rate"&lt;/li&gt;
&lt;li&gt;That SKU must be validated against a server endpoint for uniqueness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These rules are scattered across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useEffect&lt;/code&gt; hooks&lt;/li&gt;
&lt;li&gt;Custom validation schemas&lt;/li&gt;
&lt;li&gt;Service layer calls&lt;/li&gt;
&lt;li&gt;Global state management&lt;/li&gt;
&lt;li&gt;Ad-hoc conditional rendering&lt;/li&gt;
&lt;li&gt;Backend business logic&lt;/li&gt;
&lt;li&gt;Tribal knowledge in developers' heads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI sees the &lt;em&gt;surface&lt;/em&gt;. The meaning is &lt;em&gt;buried&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Any system that forces an AI to guess will inevitably break.&lt;/p&gt;




&lt;h2&gt;
  
  
  What AI Agents Actually Need
&lt;/h2&gt;

&lt;p&gt;Let me reframe the problem.&lt;/p&gt;

&lt;p&gt;Humans need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buttons to click&lt;/li&gt;
&lt;li&gt;Inputs to fill&lt;/li&gt;
&lt;li&gt;Visual feedback to understand state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI agents need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;em&gt;intent&lt;/em&gt; behind a button&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;semantics&lt;/em&gt; of a field&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;rules&lt;/em&gt; governing a workflow&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;dependencies&lt;/em&gt; between values&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;effects&lt;/em&gt; triggered by a change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UI expresses almost none of this in a machine-readable way.&lt;/p&gt;

&lt;p&gt;What AI agents truly need is not a screen. It's an &lt;strong&gt;Intent Graph&lt;/strong&gt;—a declarative representation of:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI Concept&lt;/th&gt;
&lt;th&gt;Semantic Equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Button&lt;/td&gt;
&lt;td&gt;Action with preconditions and effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input field&lt;/td&gt;
&lt;td&gt;Typed semantic value with constraints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screen&lt;/td&gt;
&lt;td&gt;View into a domain model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Form submission&lt;/td&gt;
&lt;td&gt;State transition with validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conditional visibility&lt;/td&gt;
&lt;td&gt;Dependency graph&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The UI can be generated, regenerated, or discarded. But the Intent Graph remains constant.&lt;/p&gt;

&lt;p&gt;That is what the AI should interact with.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Concrete Example: Declarative View Schema
&lt;/h2&gt;

&lt;p&gt;Let me show you what this looks like in practice.&lt;/p&gt;

&lt;p&gt;Here's a traditional React form (simplified):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ProductForm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;productType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setProductType&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PHYSICAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setWeight&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;fulfillment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setFulfillment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;STANDARD&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fulfillment&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;FREIGHT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;weight&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setWeight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;fulfillment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;productType&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setProductType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"PHYSICAL"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Physical&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"DIGITAL"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Digital&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;productType&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; 
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"number"&lt;/span&gt; 
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;weight&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setWeight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An AI agent looking at this has to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Parse the JSX&lt;/li&gt;
&lt;li&gt;Trace the &lt;code&gt;useState&lt;/code&gt; dependencies&lt;/li&gt;
&lt;li&gt;Understand the &lt;code&gt;useEffect&lt;/code&gt; logic&lt;/li&gt;
&lt;li&gt;Infer conditional rendering rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now compare this to a declarative semantic schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;productView&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;view&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;product-create&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fields&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;options&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PHYSICAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reaction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;when&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;fieldEquals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DIGITAL&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateProp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hidden&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
      &lt;span class="p"&gt;),&lt;/span&gt;

    &lt;span class="nx"&gt;viewField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;numberInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dependsOn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;productType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fulfillmentType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reaction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;when&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;and&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nf"&gt;fieldEquals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fulfillmentType&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;FREIGHT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;state&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
          &lt;span class="p"&gt;))&lt;/span&gt;
          &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;shippingWeight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference is profound.&lt;/p&gt;

&lt;p&gt;In the declarative schema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dependencies are explicit&lt;/strong&gt;: &lt;code&gt;dependsOn('productType', 'fulfillmentType')&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactions are declared, not imperative&lt;/strong&gt;: &lt;code&gt;on.change().when(...).do(...)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business rules are first-class&lt;/strong&gt;: "FREIGHT requires minimum 50kg"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visibility conditions are queryable&lt;/strong&gt;: &lt;code&gt;hidden: true&lt;/code&gt; when productType is DIGITAL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An AI agent reading this schema &lt;em&gt;knows&lt;/em&gt;—without inference, without guessing—exactly how the form behaves.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Existing Technologies Aren't Enough
&lt;/h2&gt;

&lt;p&gt;You might ask: don't we already have semantic technologies?&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;What It Captures&lt;/th&gt;
&lt;th&gt;What It Misses&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAPI&lt;/td&gt;
&lt;td&gt;API shape, request/response&lt;/td&gt;
&lt;td&gt;UI state, field dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphQL&lt;/td&gt;
&lt;td&gt;Data relationships&lt;/td&gt;
&lt;td&gt;Workflow logic, validation rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSON Schema&lt;/td&gt;
&lt;td&gt;Data structure, constraints&lt;/td&gt;
&lt;td&gt;View binding, reactive behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP&lt;/td&gt;
&lt;td&gt;Tool contracts&lt;/td&gt;
&lt;td&gt;Inter-field dependencies, UI state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React/Vue&lt;/td&gt;
&lt;td&gt;Component structure&lt;/td&gt;
&lt;td&gt;Business logic (encapsulated)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each of these is a &lt;em&gt;fragment&lt;/em&gt; of semantics.&lt;/p&gt;

&lt;p&gt;None provides a &lt;strong&gt;unified model&lt;/strong&gt; that spans:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data (Entity)&lt;/li&gt;
&lt;li&gt;View (Presentation + Interaction)&lt;/li&gt;
&lt;li&gt;Rules (Validation, Constraints)&lt;/li&gt;
&lt;li&gt;Dependencies (Field relationships)&lt;/li&gt;
&lt;li&gt;Actions (State transitions)&lt;/li&gt;
&lt;li&gt;Workflows (Multi-step processes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the missing layer. I call it the &lt;strong&gt;Semantic Execution Layer&lt;/strong&gt;—a unified runtime where meaning is explicit, queryable, and executable.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture of Meaning
&lt;/h2&gt;

&lt;p&gt;Here's how I envision the stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│           Natural Language              │  ← User or AI intent
├─────────────────────────────────────────┤
│         Semantic Layer                  │  ← Intent Graph / View Schema
│  ┌─────────┬──────────┬──────────────┐  │
│  │ Entity  │  View    │  Reactions   │  │
│  │ Schema  │  Schema  │  &amp;amp; Rules     │  │
│  └─────────┴──────────┴──────────────┘  │
├─────────────────────────────────────────┤
│         Execution Runtime               │  ← Interprets &amp;amp; executes
├─────────────────────────────────────────┤
│    UI Rendering    │    API Calls       │  ← Projections
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this architecture:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Entity Schema&lt;/strong&gt; defines domain truth: what data exists, what constraints apply&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;View Schema&lt;/strong&gt; defines presentation and interaction: how fields are displayed, how they react&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reactions&lt;/strong&gt; define behavior: when X changes, do Y&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution Runtime&lt;/strong&gt; interprets these schemas and manages state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI&lt;/strong&gt; is just one possible rendering—a projection of the semantic layer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI agent interacts with the Semantic Layer directly. It doesn't need to parse UI. It doesn't need to guess.&lt;/p&gt;




&lt;h2&gt;
  
  
  Inference vs. Guarantee
&lt;/h2&gt;

&lt;p&gt;There's a counterargument I often hear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"But LLMs are getting really good at understanding UI! They can look at screenshots and figure out what to do."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is true. And it's also insufficient.&lt;/p&gt;

&lt;p&gt;LLMs can &lt;em&gt;infer&lt;/em&gt; meaning from UI. But inference is probabilistic. It's a prediction, not a guarantee.&lt;/p&gt;

&lt;p&gt;For simple forms, inference works. For complex business logic—cascading dependencies, conditional validation, multi-step workflows—inference fails unpredictably.&lt;/p&gt;

&lt;p&gt;Consider the difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Reliability&lt;/th&gt;
&lt;th&gt;Debuggability&lt;/th&gt;
&lt;th&gt;Determinism&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Screenshot → LLM inference&lt;/td&gt;
&lt;td&gt;~70-80%&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DOM parsing → heuristics&lt;/td&gt;
&lt;td&gt;~80-85%&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic schema → direct access&lt;/td&gt;
&lt;td&gt;~99%+&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you're building a demo, inference is fine.&lt;/p&gt;

&lt;p&gt;If you're building production systems where AI agents execute real transactions, move real money, and affect real outcomes—you need guarantees.&lt;/p&gt;

&lt;p&gt;Semantic schemas provide those guarantees.&lt;/p&gt;




&lt;h2&gt;
  
  
  UI Is Ephemeral. Semantics Endure.
&lt;/h2&gt;

&lt;p&gt;Let me be clear about what I'm &lt;em&gt;not&lt;/em&gt; saying.&lt;/p&gt;

&lt;p&gt;I'm not saying UI is useless. UI is essential—for humans.&lt;/p&gt;

&lt;p&gt;I'm not saying we should stop building beautiful interfaces. We should.&lt;/p&gt;

&lt;p&gt;What I'm saying is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UI is one projection of a deeper structure. AI agents need access to that deeper structure directly.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today's software is built like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design the UI&lt;/li&gt;
&lt;li&gt;Implement the logic (scattered everywhere)&lt;/li&gt;
&lt;li&gt;Hope the AI can figure it out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tomorrow's software should be built like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define the semantic model (Entity + View + Rules)&lt;/li&gt;
&lt;li&gt;Generate UI as one projection&lt;/li&gt;
&lt;li&gt;Expose semantics to AI agents as another projection&lt;/li&gt;
&lt;li&gt;Let both humans and machines interact with the same underlying truth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The semantic layer becomes the &lt;strong&gt;single source of truth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;UI becomes a rendering concern—important, but not foundational.&lt;/p&gt;




&lt;h2&gt;
  
  
  Implications for Software Architecture
&lt;/h2&gt;

&lt;p&gt;If you accept this philosophy, several implications follow:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Schema-First Development
&lt;/h3&gt;

&lt;p&gt;Define your semantic schemas before writing UI code. The schema is the specification. The UI is an implementation detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Explicit Dependencies
&lt;/h3&gt;

&lt;p&gt;Never hide field dependencies in &lt;code&gt;useEffect&lt;/code&gt; hooks. Declare them in the schema where they can be queried and reasoned about.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Reactions as Data
&lt;/h3&gt;

&lt;p&gt;Business rules should be expressed as declarative reactions, not imperative code. &lt;code&gt;on.change().when(...).do(...)&lt;/code&gt; is data. An &lt;code&gt;if&lt;/code&gt; statement buried in a component is not.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI-Native APIs
&lt;/h3&gt;

&lt;p&gt;Expose your semantic layer to AI agents. Not just REST endpoints, but the full Intent Graph: fields, dependencies, constraints, valid actions, expected outcomes.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Runtime Introspection
&lt;/h3&gt;

&lt;p&gt;Build execution runtimes that can answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What fields are currently visible?"&lt;/li&gt;
&lt;li&gt;"What would happen if I set this value?"&lt;/li&gt;
&lt;li&gt;"What are the preconditions for this action?"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Road Ahead
&lt;/h2&gt;

&lt;p&gt;We're at an inflection point.&lt;/p&gt;

&lt;p&gt;For decades, software has been built for human consumption. UI was the interface, and it was sufficient.&lt;/p&gt;

&lt;p&gt;Now, AI agents are becoming first-class users of our systems. They don't need pixels and click events. They need structured meaning.&lt;/p&gt;

&lt;p&gt;The companies that recognize this shift early—that invest in semantic layers, declarative schemas, and AI-native architectures—will build systems that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interpretable&lt;/strong&gt;: AI agents can understand intent, not just surface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic&lt;/strong&gt;: Behavior is predictable, not probabilistic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evolvable&lt;/strong&gt;: Schemas can be versioned, migrated, and extended&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debuggable&lt;/strong&gt;: When something fails, you can trace exactly why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The companies that don't will find their AI integrations perpetually fragile—dependent on prompt engineering hacks and screenshot parsing tricks that break with every UI change.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;UI generation was the endgame for human developers.&lt;/p&gt;

&lt;p&gt;For AI agents, it's not enough.&lt;/p&gt;

&lt;p&gt;What we need is a &lt;strong&gt;Semantic Execution Layer&lt;/strong&gt;—a unified representation of data, view, rules, and behavior that both humans and machines can interact with.&lt;/p&gt;

&lt;p&gt;UI is a projection of this layer. An important one, but just one of many.&lt;/p&gt;

&lt;p&gt;As AI accelerates, the question shifts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What does my application look like?"&lt;/strong&gt; → &lt;strong&gt;"What does my application mean?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first question produces screens.&lt;/p&gt;

&lt;p&gt;The second question produces understanding.&lt;/p&gt;

&lt;p&gt;And in the age of AI agents, understanding is everything.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UI is transient. Semantics endure.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
