<?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>DEV Community: Elzo Brito dos Santos Filho</title>
    <description>The latest articles on DEV Community by Elzo Brito dos Santos Filho (@elzobrito).</description>
    <link>https://dev.to/elzobrito</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4044021%2Fedc420ef-345b-481e-8036-7bc010fbaefb.png</url>
      <title>DEV Community: Elzo Brito dos Santos Filho</title>
      <link>https://dev.to/elzobrito</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elzobrito"/>
    <language>en</language>
    <item>
      <title>Four operational problems behind AI agents, and four public projects exploring them</title>
      <dc:creator>Elzo Brito dos Santos Filho</dc:creator>
      <pubDate>Thu, 23 Jul 2026 14:51:03 +0000</pubDate>
      <link>https://dev.to/elzobrito/four-operational-problems-behind-ai-agents-and-four-public-projects-exploring-them-70a</link>
      <guid>https://dev.to/elzobrito/four-operational-problems-behind-ai-agents-and-four-public-projects-exploring-them-70a</guid>
      <description>&lt;p&gt;AI agent demos tend to optimize for one thing: what the model can generate. Production systems fail somewhere else: at the boundaries around state, memory, retrieval, and authority.&lt;/p&gt;

&lt;p&gt;Over the last months, I have been building a small public portfolio around those boundaries. This is not a claim that the projects form one integrated stack. They are independent tools connected by the same engineering question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can we give agents useful capabilities without giving them unrestricted authority over the system they modify?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am the author and maintainer of the projects described below. The goal of this post is to explain the problems, the current design choices, and the limitations, not to ask for stars.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Unrestricted mutation: ESAA-Core
&lt;/h2&gt;

&lt;p&gt;A coding agent can modify files, run commands, and declare success. But a transcript is not a state machine, and a log of messages does not prove that the resulting repository state followed an allowed workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elzobrito/ESAA-Core" rel="noopener noreferrer"&gt;ESAA-Core&lt;/a&gt; explores a stricter model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent proposes
  -&amp;gt; Orchestrator validates
    -&amp;gt; Event store records
      -&amp;gt; Deterministic projection rebuilds state
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent emits an intention such as &lt;code&gt;claim&lt;/code&gt;, &lt;code&gt;complete&lt;/code&gt;, or &lt;code&gt;review&lt;/code&gt;. A single writer validates the transition, applies workflow gates, records an append-only event, and rebuilds the read model.&lt;/p&gt;

&lt;p&gt;This does &lt;strong&gt;not&lt;/strong&gt; make an LLM truthful or eliminate bad code. It does make several classes of invalid transition observable and rejectable: completing work without a prior claim, applying file effects outside an allowed boundary, approving with the wrong role, or silently reopening terminal work.&lt;/p&gt;

&lt;p&gt;The practical benefit is replayability. Instead of trusting the latest JSON file or chat message, the system can rebuild current state from the ordered event history and verify projection hashes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Context loss between tools: Conversation ESAA
&lt;/h2&gt;

&lt;p&gt;Governance state and conversational memory are different concerns. A task protocol should not become a dumping ground for every assistant message, but switching between Codex, Claude Code, Grok, or another runner should not erase the reasoning that led to a decision.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elzobrito/conversation-esaa" rel="noopener noreferrer"&gt;Conversation ESAA&lt;/a&gt; is an event-sourced memory layer for continuity and handoff across agents. It captures conversation events, derives topics and handoffs, and keeps the append-only history separate from the formal ESAA task store.&lt;/p&gt;

&lt;p&gt;That separation matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;governance answers: &lt;em&gt;Which transition is valid?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;memory answers: &lt;em&gt;What context should the next agent recover?&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mixing them would make both harder to reason about. Conversation ESAA can support ESAA-governed work, but it is not a substitute for the governance protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Retrieval overhead: rag-sqlite
&lt;/h2&gt;

&lt;p&gt;Semantic search is useful for large conversation histories, but running embeddings inside a synchronous hook is a poor operational trade-off. An early pilot took roughly 16 minutes to build its first index. Putting that work in the critical path would increase hook latency and make the primary workflow depend on Ollama and an embedding model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elzobrito/rag-sqlite" rel="noopener noreferrer"&gt;rag-sqlite&lt;/a&gt; packages deterministic local retrieval as a JSON CLI backed by one SQLite database. It supports local Ollama embeddings, an offline hash mode for tests, hybrid ranking, index generations, and a stable command surface for LLM tools.&lt;/p&gt;

&lt;p&gt;Conversation ESAA consumes it as an &lt;strong&gt;optional external adapter&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;activity.jsonl
  -&amp;gt; asynchronous export
    -&amp;gt; derived private corpus
      -&amp;gt; external rag-sqlite index
        -&amp;gt; search results rehydrated from canonical event IDs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The RAG projection is disposable and fail-open for the main conversation pipeline. Hooks mark the index dirty and schedule work; they do not execute embeddings while holding the main synchronization lock. If retrieval is unavailable, sync and verification still work.&lt;/p&gt;

&lt;p&gt;This project is intentionally independent. It can also serve other local corpora without pretending that every use is an ESAA adoption. Its downloads and usage must remain separate from ESAA adoption metrics.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Unverifiable automated audits: ESAA-Security
&lt;/h2&gt;

&lt;p&gt;Security agents introduce another authority problem. A model can produce plausible findings, but teams need to know which domains were examined, which boundaries applied, what evidence supported a classification, and whether a rerun reconstructs the same audit state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elzobrito/ESAA-Security" rel="noopener noreferrer"&gt;ESAA-Security&lt;/a&gt; applies the ESAA architecture to structured automated auditing across 16 security domains. Findings, classifications, and audit transitions are governed through the same append-only and projection-oriented approach.&lt;/p&gt;

&lt;p&gt;The ambition is not to replace human security review. It is to make automated audit work inspectable: explicit scope, repeatable tasks, recorded transitions, and findings that can be traced back to evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  A portfolio, not an integrated stack
&lt;/h2&gt;

&lt;p&gt;The four projects currently align around a simple vocabulary:&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;Project&lt;/th&gt;
&lt;th&gt;Current role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agents mutate state without a control plane&lt;/td&gt;
&lt;td&gt;ESAA-Core&lt;/td&gt;
&lt;td&gt;Governance protocol and runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context disappears between agents&lt;/td&gt;
&lt;td&gt;Conversation ESAA&lt;/td&gt;
&lt;td&gt;Event-sourced continuity and handoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local RAG requires too much infrastructure&lt;/td&gt;
&lt;td&gt;rag-sqlite&lt;/td&gt;
&lt;td&gt;Deterministic SQLite retrieval CLI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automated audits are difficult to replay&lt;/td&gt;
&lt;td&gt;ESAA-Security&lt;/td&gt;
&lt;td&gt;Governed security-audit application&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;They should not be described as a seamless platform today. Integration needs contracts, examples, and tests before marketing language claims a stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence and limits
&lt;/h2&gt;

&lt;p&gt;As of July 23, 2026, the public adoption scan found four independent Tier 3 adopters across five public implementations of the ESAA pattern. ESAA-Core had 57 GitHub stars and 812 PyPI downloads in the previous 30 days; ESAA-Security had 200 stars. Stars and downloads are reach signals, not proof of operational adoption.&lt;/p&gt;

&lt;p&gt;The more important limitations are technical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ESAA-Core is still pre-release software.&lt;/li&gt;
&lt;li&gt;Event sourcing rejects known invalid transitions; it does not prove that an agent's implementation is correct.&lt;/li&gt;
&lt;li&gt;Conversation memory can preserve bad context as faithfully as good context.&lt;/li&gt;
&lt;li&gt;Retrieval quality depends on the corpus, embedding model, and ranking settings.&lt;/li&gt;
&lt;li&gt;Automated security findings still require validation and human judgment.&lt;/li&gt;
&lt;li&gt;The projects are maintained by a small team and need more external reproduction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Licensing
&lt;/h2&gt;

&lt;p&gt;ESAA-Core, Conversation ESAA, and rag-sqlite are MIT-licensed. At publication time, GitHub does not detect an explicit license for ESAA-Security, so it should be treated as publicly readable code rather than assumed to grant open-source reuse rights. Clarifying that repository's licensing is a concrete follow-up item.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to learn next
&lt;/h2&gt;

&lt;p&gt;The next milestone is not a larger promotional number. It is better external evidence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can a new maintainer run the ESAA-Core quickstart without assistance?&lt;/li&gt;
&lt;li&gt;Which workflow gates reject real mistakes rather than only synthetic tests?&lt;/li&gt;
&lt;li&gt;Does Conversation ESAA improve a genuine cross-agent handoff?&lt;/li&gt;
&lt;li&gt;At what corpus size does rag-sqlite stop being the right trade-off?&lt;/li&gt;
&lt;li&gt;Which ESAA-Security domains produce findings that survive independent validation?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you work on coding agents, agent memory, local RAG, or AppSec automation, I would value criticism of the boundaries and failure modes more than a generic endorsement.&lt;/p&gt;

&lt;p&gt;Start with &lt;a href="https://github.com/elzobrito/ESAA-Core" rel="noopener noreferrer"&gt;ESAA-Core&lt;/a&gt;, or inspect the &lt;a href="https://github.com/elzobrito?tab=repositories" rel="noopener noreferrer"&gt;full public repository list&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>opensource</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
