<?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: Олег</title>
    <description>The latest articles on DEV Community by Олег (@_a9de0f38ed294cfb7e5e).</description>
    <link>https://dev.to/_a9de0f38ed294cfb7e5e</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%2F3452487%2F06d82531-14a2-483d-bbe5-7b29260d387e.png</url>
      <title>DEV Community: Олег</title>
      <link>https://dev.to/_a9de0f38ed294cfb7e5e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_a9de0f38ed294cfb7e5e"/>
    <language>en</language>
    <item>
      <title>Can We Automate the Work of a Software Engineer? The Story Behind HEALER</title>
      <dc:creator>Олег</dc:creator>
      <pubDate>Sat, 22 Aug 2026 00:45:20 +0000</pubDate>
      <link>https://dev.to/_a9de0f38ed294cfb7e5e/can-we-automate-the-work-of-a-software-engineer-the-story-behind-healer-2mge</link>
      <guid>https://dev.to/_a9de0f38ed294cfb7e5e/can-we-automate-the-work-of-a-software-engineer-the-story-behind-healer-2mge</guid>
      <description>&lt;p&gt;In my previous article, I wrote about &lt;strong&gt;X-Ray&lt;/strong&gt; — an observability system that grew out of my work on PAD+ AI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://habr.com/ru/articles/1057236/" rel="noopener noreferrer"&gt;Read the X-Ray article on Habr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before X-Ray, I could see two things:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request → Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After X-Ray, every request became a detailed execution map.&lt;/p&gt;

&lt;p&gt;I could see individual phases, calls, timings, failures, state transitions, and causal relationships inside the pipeline.&lt;/p&gt;

&lt;p&gt;At first, that seemed to solve the problem.&lt;/p&gt;

&lt;p&gt;It didn't.&lt;/p&gt;

&lt;p&gt;It created a new one.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Strange Algorithm
&lt;/h2&gt;

&lt;p&gt;After X-Ray appeared, I stopped looking for problems manually.&lt;/p&gt;

&lt;p&gt;X-Ray was finding them for me.&lt;/p&gt;

&lt;p&gt;But then I noticed something strange.&lt;/p&gt;

&lt;p&gt;Every time it reported a problem, I was doing almost exactly the same thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read the diagnostic
      ↓
Find the cause
      ↓
Design a fix
      ↓
Apply the change
      ↓
Run tests
      ↓
Keep or rollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then repeat.&lt;/p&gt;

&lt;p&gt;Day after day.&lt;/p&gt;

&lt;p&gt;Week after week.&lt;/p&gt;

&lt;p&gt;And eventually I realized:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wasn't making a new engineering decision every time. I was repeatedly executing the same algorithm.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That led to a much more interesting question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If a system can already observe and diagnose its own problems, why couldn't it execute the engineering loop as well?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question became the starting point for &lt;strong&gt;HEALER&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Not "Self-Healing" — Automating the Engineering Loop
&lt;/h2&gt;

&lt;p&gt;The term &lt;em&gt;self-healing&lt;/em&gt; is already widely used.&lt;/p&gt;

&lt;p&gt;Usually it means something relatively simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Failure → Detect → Restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A crashed container gets restarted.&lt;/p&gt;

&lt;p&gt;A failed service gets recreated.&lt;/p&gt;

&lt;p&gt;A node disappears and another one takes over.&lt;/p&gt;

&lt;p&gt;Useful, but I was interested in something different.&lt;/p&gt;

&lt;p&gt;I wanted to automate the &lt;strong&gt;engineering process itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Something failed. Restart it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Something is wrong. Find out why. Propose a change. Apply it safely. Verify the result. Roll back if necessary. Remember what happened."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So before writing the implementation, I wrote down the cycle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Detect a problem
       ↓
2. Diagnose the cause
       ↓
3. Generate a fix
       ↓
4. Verify the fix
       ↓
5. Roll back if verification fails
       ↓
6. Learn from the result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the process was explicit, the architecture became much easier to design.&lt;/p&gt;




&lt;h2&gt;
  
  
  Six Layers
&lt;/h2&gt;

&lt;p&gt;Instead of building one giant "AI repair agent", I split HEALER into independent layers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Layer 5: Meta-Learning
         ↑
         │ remembers results
         │
Layer 4: Orchestrator
         ↑
         │ controls the cycle
         │
Layer 3: Verification
         ↑
         │ tests the proposed change
         │
Layer 2: Patch Engine
         ↑
         │ generates code changes
         │
Layer 1: Diagnostics
         ↑
         │ detects and analyzes problems
         │
Layer 0: X-Ray Kernel
         │
         └── execution evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each layer has a specific responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 0 — X-Ray
&lt;/h3&gt;

&lt;p&gt;X-Ray provides the execution evidence.&lt;/p&gt;

&lt;p&gt;It records what happened inside the application: phases, timings, errors, relationships and execution state.&lt;/p&gt;

&lt;p&gt;HEALER doesn't have to guess what happened.&lt;/p&gt;

&lt;p&gt;It can start with a trace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1 — Diagnostics
&lt;/h3&gt;

&lt;p&gt;Diagnostics analyzes the available execution data and looks for known classes of problems.&lt;/p&gt;

&lt;p&gt;The current implementation contains multiple detectors covering issues such as resource leaks, slow operations, import-related problems and causal violations.&lt;/p&gt;

&lt;p&gt;The important part is the separation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;X-Ray observes. Diagnostics interprets.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2 — Patch Engine
&lt;/h3&gt;

&lt;p&gt;Once a problem has been identified, HEALER needs to construct a possible correction.&lt;/p&gt;

&lt;p&gt;For Python code, the Patch Engine can work with the &lt;strong&gt;AST (Abstract Syntax Tree)&lt;/strong&gt; rather than blindly modifying text.&lt;/p&gt;

&lt;p&gt;That gives the system a structural representation of the code it is modifying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3 — Verification
&lt;/h3&gt;

&lt;p&gt;A generated patch is not considered successful simply because it was generated.&lt;/p&gt;

&lt;p&gt;It has to survive verification.&lt;/p&gt;

&lt;p&gt;The basic principle is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Patch
 ↓
Syntax check
 ↓
Tests
 ↓
Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If verification fails, the change should not remain in the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4 — Orchestrator
&lt;/h3&gt;

&lt;p&gt;The Orchestrator controls the overall cycle and determines how HEALER operates.&lt;/p&gt;

&lt;p&gt;The architecture supports different levels of automation, including monitoring, suggestion and automatic execution.&lt;/p&gt;

&lt;p&gt;This is important because &lt;strong&gt;autonomous code modification should not have to be an all-or-nothing decision&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 5 — Meta-Learning
&lt;/h3&gt;

&lt;p&gt;The final layer records what happened.&lt;/p&gt;

&lt;p&gt;A successful repair is useful information.&lt;/p&gt;

&lt;p&gt;A failed repair is useful information too.&lt;/p&gt;

&lt;p&gt;The goal is not to make the system magically "smarter", but to accumulate structured experience that can influence future repair attempts.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment I Stopped Writing the Fixes
&lt;/h2&gt;

&lt;p&gt;The strangest part wasn't the first automatically generated patch.&lt;/p&gt;

&lt;p&gt;It was realizing that the complete engineering loop could be executed without me manually performing every step.&lt;/p&gt;

&lt;p&gt;Previously:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;X-Ray
  ↓
I read the report
  ↓
I found the cause
  ↓
I wrote the fix
  ↓
I ran the tests
  ↓
I rolled back if necessary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With HEALER:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;X-Ray
  ↓
Diagnostics
  ↓
Patch Engine
  ↓
Backup
  ↓
Verification
  ↓
Meta-Learning
  ↓
Rollback if necessary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference is subtle but important.&lt;/p&gt;

&lt;p&gt;HEALER isn't simply another component that "fixes bugs".&lt;/p&gt;

&lt;p&gt;It is an attempt to turn a repeated engineering workflow into an &lt;strong&gt;executable system&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Real Example
&lt;/h2&gt;

&lt;p&gt;Consider a simple resource leak.&lt;/p&gt;

&lt;p&gt;Suppose a diagnostic detects that a function opens a file without reliably closing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_config&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;config.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The diagnostic identifies the problematic pattern.&lt;/p&gt;

&lt;p&gt;The Patch Engine can transform the structure of the code into:&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_config&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;config.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But generating this code is only the middle of the process.&lt;/p&gt;

&lt;p&gt;HEALER then has to deal with the consequences.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 1 — Backup
&lt;/h3&gt;

&lt;p&gt;Before modifying the file, the original version is preserved.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;read_config.py
read_config.py.healer.bak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backup provides a recovery point.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2 — Verification
&lt;/h3&gt;

&lt;p&gt;The modified code is checked.&lt;/p&gt;

&lt;p&gt;At minimum, the system needs to establish that the generated code is syntactically valid and that the relevant tests pass.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generated patch
      ↓
Syntax validation
      ↓
Tests
      ↓
PASS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only then is the repair considered successful.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3 — Rollback
&lt;/h3&gt;

&lt;p&gt;Now consider the opposite scenario.&lt;/p&gt;

&lt;p&gt;The generated patch causes a test failure.&lt;/p&gt;

&lt;p&gt;The process becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Patch
 ↓
Verification
 ↓
FAIL
 ↓
Rollback
 ↓
Original code restored
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one of the most important principles of the entire system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autonomous modification without autonomous verification is dangerous.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ability to undo a change is therefore not an optional feature. It is part of the architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does HEALER Actually Automate?
&lt;/h2&gt;

&lt;p&gt;This distinction matters.&lt;/p&gt;

&lt;p&gt;HEALER does &lt;strong&gt;not&lt;/strong&gt; mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"An AI programmer that can independently build any software."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's not what I am claiming.&lt;/p&gt;

&lt;p&gt;The current system automates a much narrower and more measurable problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can a system observe a known class of engineering problem, diagnose it, construct a candidate repair, verify the repair, and recover safely when the repair fails?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much more interesting engineering question.&lt;/p&gt;

&lt;p&gt;And it is testable.&lt;/p&gt;




&lt;h2&gt;
  
  
  HEALER Inside PAD+ AI
&lt;/h2&gt;

&lt;p&gt;HEALER didn't appear as an isolated project.&lt;/p&gt;

&lt;p&gt;It emerged from &lt;strong&gt;PAD+ AI → X-Ray → HEALER&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The progression was almost inevitable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PAD+ AI
Cognitive architecture
       ↓
X-Ray
Observe execution
       ↓
HEALER
Act on detected problems
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PAD+ AI provided the complex execution environment.&lt;/p&gt;

&lt;p&gt;X-Ray provided visibility.&lt;/p&gt;

&lt;p&gt;HEALER became the experimental layer that could act on that visibility.&lt;/p&gt;

&lt;p&gt;This separation is important because observability and automated intervention should not be the same thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;X-Ray observes. HEALER acts.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seeing HEALER in PAD+ AI
&lt;/h2&gt;

&lt;p&gt;HEALER is integrated into the PAD+ AI platform and can be inspected through the application interface.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://pad-plus-ai.onrender.com/" rel="noopener noreferrer"&gt;Open the PAD+ AI platform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The HEALER section currently exposes several parts of the system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflection Panel
&lt;/h3&gt;

&lt;p&gt;Shows what HEALER learned from previous cycles and what changes were made.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trace Panel
&lt;/h3&gt;

&lt;p&gt;HEALER activity is itself observable through the X-Ray tracing channel.&lt;/p&gt;

&lt;p&gt;That means the system doesn't have a blind spot simply because the component performing the repair is autonomous.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bridge Status
&lt;/h3&gt;

&lt;p&gt;Shows the current operating mode and system state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auto-Cycle
&lt;/h3&gt;

&lt;p&gt;Allows the automatic diagnostic/repair cycle to be enabled and monitored.&lt;/p&gt;

&lt;p&gt;The frontend also receives events through WebSocket, including detector activity and cycle results.&lt;/p&gt;

&lt;p&gt;So the goal isn't to create a mysterious autonomous process running somewhere in the background.&lt;/p&gt;

&lt;p&gt;The goal is almost the opposite:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;make the autonomous process observable.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why X-Ray Had to Come First
&lt;/h2&gt;

&lt;p&gt;This is probably the most important architectural lesson I learned while building the system.&lt;/p&gt;

&lt;p&gt;Imagine giving an automated repair system permission to modify code without first having a reliable picture of what happened.&lt;/p&gt;

&lt;p&gt;You would have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unknown problem
      ↓
Unknown reasoning
      ↓
Automatic modification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a dangerous combination.&lt;/p&gt;

&lt;p&gt;With X-Ray:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Observed execution
      ↓
Diagnostic evidence
      ↓
Candidate repair
      ↓
Verification
      ↓
Controlled modification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repair mechanism is therefore built &lt;strong&gt;on top of evidence&lt;/strong&gt;, rather than operating entirely from assumptions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Testing the System
&lt;/h2&gt;

&lt;p&gt;Before allowing a system like this to modify code, the obvious question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the repair cycle itself work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The current HEALER implementation has been tested with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;121 unit tests&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;smoke testing across all six layers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;9 diagnostic integration scenarios&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;a demo run containing &lt;strong&gt;201 completed traces&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;115 diagnostic reports&lt;/strong&gt; generated by the detector layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current implementation is also designed to be self-contained, using Python's standard library rather than requiring a large external runtime.&lt;/p&gt;

&lt;p&gt;These numbers are not proof that autonomous software engineering is solved.&lt;/p&gt;

&lt;p&gt;They are simply evidence that the current experimental implementation can execute and test the intended workflow.&lt;/p&gt;

&lt;p&gt;And that distinction matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Important Limitation
&lt;/h2&gt;

&lt;p&gt;There is an easy trap here.&lt;/p&gt;

&lt;p&gt;Once you see a system successfully detect a resource leak, generate a patch, run tests and keep the result, it is tempting to conclude:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We've built a self-programming AI."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We haven't.&lt;/p&gt;

&lt;p&gt;A controlled repair of a known problem class is very different from general software engineering.&lt;/p&gt;

&lt;p&gt;Real software contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ambiguous requirements;&lt;/li&gt;
&lt;li&gt;architectural trade-offs;&lt;/li&gt;
&lt;li&gt;undocumented dependencies;&lt;/li&gt;
&lt;li&gt;business constraints;&lt;/li&gt;
&lt;li&gt;hidden assumptions;&lt;/li&gt;
&lt;li&gt;security implications;&lt;/li&gt;
&lt;li&gt;changes whose correctness cannot be established by unit tests alone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A passing test suite does not automatically mean that an architectural decision was correct.&lt;/p&gt;

&lt;p&gt;That is exactly why HEALER is still an &lt;strong&gt;experimental research platform&lt;/strong&gt;, rather than a claim that autonomous programming has been solved.&lt;/p&gt;




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

&lt;p&gt;X-Ray answered one question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What happened inside the system?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;HEALER started answering another:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can the system act on what it observes?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But this creates a much harder question.&lt;/p&gt;

&lt;p&gt;If the system can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;observe;&lt;/li&gt;
&lt;li&gt;diagnose;&lt;/li&gt;
&lt;li&gt;modify;&lt;/li&gt;
&lt;li&gt;verify;&lt;/li&gt;
&lt;li&gt;rollback;&lt;/li&gt;
&lt;li&gt;learn from previous repairs...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;then eventually we have to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Who decides what should be changed in the first place?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A detector can tell us that something is wrong.&lt;/p&gt;

&lt;p&gt;A patch engine can propose a correction.&lt;/p&gt;

&lt;p&gt;A test can tell us whether the correction passes a defined validation.&lt;/p&gt;

&lt;p&gt;But none of those things necessarily tells us whether the &lt;strong&gt;architecture itself should change&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that is where the next layer of the problem begins.&lt;/p&gt;




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

&lt;p&gt;The evolution of the project currently looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PAD+ AI
   │
   ├── Cognitive Architecture
   │
   └── X-Ray
         │
         └── Observability
                │
                └── HEALER
                      │
                      ├── Diagnostics
                      ├── Patch Engine
                      ├── Verification
                      ├── Rollback
                      └── Meta-Learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next question isn't simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can we make HEALER repair more bugs?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is much more fundamental:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can an AI system distinguish between a local implementation problem and a deeper architectural problem?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's where I want to take the research next.&lt;/p&gt;

&lt;p&gt;And this is also where I am looking for other engineers and researchers who want to experiment with the system rather than simply watch a demo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to Experiment With It?
&lt;/h2&gt;

&lt;p&gt;PAD+ AI is an open research platform.&lt;/p&gt;

&lt;p&gt;The goal isn't to build another AI chatbot.&lt;/p&gt;

&lt;p&gt;The goal is to investigate what happens when an LLM-based system is surrounded by explicit architecture for memory, state, observability, verification and controlled evolution.&lt;/p&gt;

&lt;p&gt;If you're interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI agents;&lt;/li&gt;
&lt;li&gt;LLM orchestration;&lt;/li&gt;
&lt;li&gt;AI observability;&lt;/li&gt;
&lt;li&gt;autonomous software engineering;&lt;/li&gt;
&lt;li&gt;Python infrastructure;&lt;/li&gt;
&lt;li&gt;cognitive architectures;&lt;/li&gt;
&lt;li&gt;debugging and verification;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd be much more interested in &lt;strong&gt;your experiments, criticism and pull requests&lt;/strong&gt; than in people simply clicking through the demo.&lt;/p&gt;

&lt;p&gt;The HEALER repository is currently private while the architecture is being stabilized, but I can provide access to people who want to study the implementation or contribute.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links &amp;amp; Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;📚 Read the full PAD+ AI series:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part 1:&lt;/strong&gt; &lt;a href="https://dev.to/_a9de0f38ed294cfb7e5e/building-a-modular-cognitive-architecture-around-modern-language-models-2lc1"&gt;Building a modular cognitive architecture around modern language models&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 2:&lt;/strong&gt; &lt;a href="https://dev.to/_a9de0f38ed294cfb7e5e/x-ray-for-ai-or-how-i-stopped-understanding-my-own-neural-network-and-built-my-own-apm-2l4p"&gt;X-Ray for AI — or how I stopped understanding my own neural network and built my own APM&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🌐 PAD+ AI — live platform:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://pad-plus-ai.onrender.com/" rel="noopener noreferrer"&gt;Open PAD+ AI on Render&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 PAD+ AI repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/Ovladimirovich/pad-plus-ai" rel="noopener noreferrer"&gt;PAD+ AI on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 X-Ray integration kit:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/Ovladimirovich/xray-integration-kit" rel="noopener noreferrer"&gt;X-Ray Integration Kit on GitHub&lt;/a&gt;&lt;br&gt;
The X-Ray repository is currently private. If you want to examine the architecture or participate in its development, contact me via Telegram and I can provide access to interested contributors.&lt;br&gt;
&lt;strong&gt;💻 HEALER:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/Ovladimirovich/Healer.git" rel="noopener noreferrer"&gt;https://github.com/Ovladimirovich/Healer.git&lt;/a&gt;&lt;br&gt;
The HEALER repository is currently private. If you want to examine the architecture or participate in its development, contact me via Telegram and I can provide access to interested contributors.&lt;br&gt;
&lt;strong&gt;💬 Telegram:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://t.me/padplusai" rel="noopener noreferrer"&gt;PAD+ AI Telegram&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  One Last Question
&lt;/h2&gt;

&lt;p&gt;When I started PAD+ AI, I wanted to understand whether an LLM could become part of a larger cognitive architecture.&lt;/p&gt;

&lt;p&gt;X-Ray came from the need to understand what that architecture was actually doing.&lt;/p&gt;

&lt;p&gt;HEALER came from the realization that once you can observe a complex system, you can begin asking whether some of the work of maintaining it can itself be automated.&lt;/p&gt;

&lt;p&gt;Now I am left with a harder question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If an AI system can eventually diagnose, modify and verify its own code — where does the engineer's job actually begin and end?&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>observability</category>
    </item>
    <item>
      <title>X-Ray for AI — or how I stopped understanding my own neural network and built my own APM</title>
      <dc:creator>Олег</dc:creator>
      <pubDate>Wed, 22 Jul 2026 14:33:38 +0000</pubDate>
      <link>https://dev.to/_a9de0f38ed294cfb7e5e/x-ray-for-ai-or-how-i-stopped-understanding-my-own-neural-network-and-built-my-own-apm-2l4p</link>
      <guid>https://dev.to/_a9de0f38ed294cfb7e5e/x-ray-for-ai-or-how-i-stopped-understanding-my-own-neural-network-and-built-my-own-apm-2l4p</guid>
      <description>&lt;p&gt;&lt;strong&gt;I no longer understood my own program.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me show you exactly when it happened.&lt;/p&gt;

&lt;p&gt;A user asked a perfectly ordinary question. Something like &lt;em&gt;"Summarize our discussion about neural architecture search."&lt;/em&gt; The answer looked correct. Fluent. Polished.&lt;/p&gt;

&lt;p&gt;But later I discovered that the response had completely bypassed Semantic Memory because one span silently failed. The system had answered from raw conversation history alone — no long-term knowledge, no personal context, no verified facts.&lt;/p&gt;

&lt;p&gt;The logs showed nothing unusual.&lt;/p&gt;

&lt;p&gt;That is when I realized I was not debugging a program anymore. I was debugging a process I could not see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/_a9de0f38ed294cfb7e5e/building-a-modular-cognitive-architecture-around-modern-language-models-2lc1"&gt;Previously&lt;/a&gt;, I wrote about building PAD+ AI — a modular cognitive architecture that routes requests through a structured pipeline instead of throwing a prompt at an LLM. Intent analysis. Memory retrieval. Emotional context. Personality. Verification.&lt;/p&gt;

&lt;p&gt;That system works. But somewhere between millions of test runs and growing complexity, I hit a wall.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shape of the Problem
&lt;/h2&gt;

&lt;p&gt;Most AI applications follow a simple pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request → Prompt → LLM → Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That shape is easy to debug. Add memory, RAG, knowledge graphs, emotion models, multiple verification passes, and persona evolution, and the shape changes to something far more complex. Now you see the input. You see the output. Everything in between is a black box.&lt;/p&gt;

&lt;p&gt;You cannot answer basic questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which components participated in this response?&lt;/li&gt;
&lt;li&gt;In what order did they execute?&lt;/li&gt;
&lt;li&gt;Where did the 12-second delay come from?&lt;/li&gt;
&lt;li&gt;Did any step silently fail?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my case, the answer to the last question was &lt;em&gt;yes&lt;/em&gt; — and I had no way of knowing which one or why.&lt;/p&gt;




&lt;h2&gt;
  
  
  Logging vs. Tracing: Why the Distinction Matters
&lt;/h2&gt;

&lt;p&gt;The first instinct is to add more logs. I tried that. The logs grew. The understanding did not.&lt;/p&gt;

&lt;p&gt;Here is the fundamental difference:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Logging&lt;/th&gt;
&lt;th&gt;Tracing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Individual events&lt;/td&gt;
&lt;td&gt;Complete execution path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flat sequence&lt;/td&gt;
&lt;td&gt;Hierarchical structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timestamp tells &lt;em&gt;when&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Causality tells &lt;em&gt;why&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Difficult to reconstruct&lt;/td&gt;
&lt;td&gt;Full reconstruction on demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passive recording&lt;/td&gt;
&lt;td&gt;Active structural capture&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A log says: &lt;em&gt;"Event X occurred at time T."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A trace says: &lt;em&gt;"Here is the complete path the system took to reach this result, with all dependencies, timings, and causal relationships."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That difference makes it possible to reconstruct the full processing picture — days or even weeks later. It also makes it possible to answer the question that logs cannot: &lt;em&gt;Did every step that was supposed to happen actually happen?&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How Traces Changed Everything
&lt;/h2&gt;

&lt;p&gt;I stopped looking at individual events and started looking at execution paths. Each user request became a &lt;strong&gt;Trace&lt;/strong&gt;. Inside it, each operation became a &lt;strong&gt;Span&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The pipeline that was invisible became visible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─ Trace ──────────────────────────────────┐
│                                           │
│  Safety → Intent → RAG                    │
│                   ↓                       │
│           Knowledge Graph                  │
│                   ↓                       │
│           Semantic Memory                  │
│                   ↓                       │
│           Persona → Generate → Truth Loop  │
│                                  ↓        │
│                          Response Guard    │
│                                           │
└───────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a metaphor. Every phase has a start time, end time, status, parent span, and optional error context. You can watch it execute in real time through a WebSocket endpoint:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2xyyz9cptq81sb95va9z.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2xyyz9cptq81sb95va9z.png" alt="AI Under Microscope" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the structure was there, observability stopped being a nice-to-have and became part of the architecture itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question Everyone Asks: Why Not OpenTelemetry?
&lt;/h2&gt;

&lt;p&gt;It is the first comment on every observability post, so let me answer it directly.&lt;/p&gt;

&lt;p&gt;OpenTelemetry is excellent at answering the question: &lt;em&gt;"What happened inside my infrastructure?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;X-Ray was designed to answer a different question: &lt;em&gt;"What happened inside the cognitive process itself?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Its spans represent reasoning stages rather than network requests. Its audit validates causal chains rather than distributed service calls. Its replay reconstructs cognitive execution instead of infrastructure metrics.&lt;/p&gt;

&lt;p&gt;You can absolutely use OpenTelemetry for AI observability. Many teams do. But I wanted something that treats a reasoning pipeline the way APM tools treat a request lifecycle — with the assumption that execution has a &lt;em&gt;structure&lt;/em&gt; worth preserving, not just events worth logging.&lt;/p&gt;

&lt;p&gt;That difference became the foundation of the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What X-Ray Looks Like Today
&lt;/h2&gt;

&lt;p&gt;X-Ray is mature enough to support production workloads inside PAD+ AI. Its job is not to manage the application or make decisions. Its job is to record execution with enough fidelity that you can reconstruct any request hours or days later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capabilities that matter in practice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trace/Span model&lt;/strong&gt; with parent-child relationships and causal depth tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparent trace_id propagation&lt;/strong&gt; across service boundaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI middleware&lt;/strong&gt; integration (one decorator, zero config)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence to disk&lt;/strong&gt; — every completed trace is saved as JSON; on restart, all traces are recovered; active traces become &lt;code&gt;interrupted&lt;/code&gt; with all spans preserved&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operation modes:&lt;/strong&gt; &lt;code&gt;live&lt;/code&gt;, &lt;code&gt;shadow&lt;/code&gt;, &lt;code&gt;readonly&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity audit&lt;/strong&gt; — automated validation that every span has a valid parent and no causal chain is broken&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON/CSV export&lt;/strong&gt; for external analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The directory layout after a day of production use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trace_store/
├── traces/{trace_id}.json
├── spans/{trace_id}/span_{id}.json
├── index.json
├── archive/
└── quarantine/    # Auto-detected corruption
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is a flight recorder, not a dashboard. The value is not real-time alerts. The value is that when something goes wrong, you have the complete picture — not a pile of log lines.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9ira1safho7j6ytbrwq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj9ira1safho7j6ytbrwq.png" alt="Picture of what is happening" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Integration Story
&lt;/h2&gt;

&lt;p&gt;Adding X-Ray to a FastAPI application takes a few minutes. The middleware extracts propagation context, creates spans around external calls, and persistence works out of the box.&lt;/p&gt;

&lt;p&gt;I will not paste the full code here — the repository has working examples and a quick-start guide. The point is that the integration surface is minimal because the library assumes nothing about the application. It only needs to know when a trace starts, when spans open and close, and where to store the result.&lt;/p&gt;

&lt;p&gt;Everything else — the structure, the hierarchy, the causal links — is derived from those three signals.&lt;/p&gt;




&lt;h2&gt;
  
  
  Watching It Live
&lt;/h2&gt;

&lt;p&gt;X-Ray is running in production as part of PAD+ AI, deployed on Render.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://pad-plus-ai.onrender.com" rel="noopener noreferrer"&gt;pad-plus-ai.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each request leaves a complete trace. You can watch it happen in real time through a WebSocket live view at &lt;code&gt;/api/v1/xray/ws&lt;/code&gt; — every pipeline stage lights up as it executes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Safety → Intent → Retrieve → Persona → Generate → Verify → Remember → Emit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each stage shows execution time, success status, and position in the pipeline. You can also query recent traces via REST API and export them as JSON or CSV.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where This Is Going
&lt;/h2&gt;

&lt;p&gt;After X-Ray came online, something interesting happened. The system could now see everything happening inside. Every phase, every error, every degradation, every deviation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If it can already see its own problems... why can't it start fixing them?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question led to another project — &lt;strong&gt;HEALER&lt;/strong&gt; — but that is a story for the next article in this series.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build With Me
&lt;/h2&gt;

&lt;p&gt;X-Ray started as a debugging tool for a single AI architecture. Today it is a standalone observability library. But I do not believe its architecture is finished.&lt;/p&gt;

&lt;p&gt;I am looking for engineers interested in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distributed tracing&lt;/li&gt;
&lt;li&gt;Causal execution graphs&lt;/li&gt;
&lt;li&gt;Middleware integrations for non-FastAPI frameworks&lt;/li&gt;
&lt;li&gt;Replay and debugger tooling&lt;/li&gt;
&lt;li&gt;Storage backends beyond local JSON&lt;/li&gt;
&lt;li&gt;Developer experience for observability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any of these topics interest you, I would love to discuss ideas, architecture, or pull requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links and Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Part 1: &lt;a href="https://dev.to/_a9de0f38ed294cfb7e5e/building-a-modular-cognitive-architecture-around-modern-language-models-2lc1"&gt;Building a modular cognitive architecture around modern language models&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub (PAD+ AI):&lt;/strong&gt; &lt;a href="https://github.com/Ovladimirovich/pad-plus-ai" rel="noopener noreferrer"&gt;github.com/Ovladimirovich/pad-plus-ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo on Render:&lt;/strong&gt; &lt;a href="https://pad-plus-ai.onrender.com" rel="noopener noreferrer"&gt;pad-plus-ai.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;X-Ray integration kit (GitHub):&lt;a href="https://github.com/Ovladimirovich/xray-integration-kit.git" rel="noopener noreferrer"&gt;https://github.com/Ovladimirovich/xray-integration-kit.git&lt;/a&gt; *&lt;/em&gt; repository is private — available on request (&lt;a href="https://t.me/padplusai" rel="noopener noreferrer"&gt;Telegram&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram:&lt;/strong&gt; &lt;a href="https://t.me/padplusai" rel="noopener noreferrer"&gt;t.me/padplusai&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;X-Ray answered one question for me: &lt;em&gt;How can we observe complex cognitive systems in a way that does not require reading log files?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I do not think it has found the final answer. If you are interested in tracing, observability, distributed systems, or AI infrastructure, I would like this project to become a place where those ideas are debated, tested, and improved together.&lt;/p&gt;

&lt;p&gt;That is the reason it is open source.&lt;/p&gt;

</description>
      <category>observability</category>
      <category>python</category>
      <category>opensource</category>
      <category>development</category>
    </item>
    <item>
      <title>Building a modular cognitive architecture around modern language models.</title>
      <dc:creator>Олег</dc:creator>
      <pubDate>Fri, 17 Jul 2026 22:13:57 +0000</pubDate>
      <link>https://dev.to/_a9de0f38ed294cfb7e5e/building-a-modular-cognitive-architecture-around-modern-language-models-2lc1</link>
      <guid>https://dev.to/_a9de0f38ed294cfb7e5e/building-a-modular-cognitive-architecture-around-modern-language-models-2lc1</guid>
      <description>&lt;h1&gt;
  
  
  Modern AI Does Not Need Another Chatbot. It Needs a Better Architecture
&lt;/h1&gt;

&lt;blockquote&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    U[User] --&amp;gt; UI[Interface]
    UI --&amp;gt; API[API Layer]
    API --&amp;gt; PIPE[Modular Cognitive Pipeline]
    PIPE --&amp;gt; MEM[Memory Systems]
    PIPE --&amp;gt; PSN[Persona &amp;amp; Emotion]
    PIPE --&amp;gt; VER[Verification &amp;amp; Reflection]
    PIPE --&amp;gt; OBS[Observability / X-Ray]
    PIPE --&amp;gt; LLM[LLM Provider]
    VER --&amp;gt; RESP[Response]
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;p&gt;Most AI applications still look surprisingly similar.&lt;/p&gt;

&lt;p&gt;User&lt;br&gt;
↓&lt;br&gt;
Prompt&lt;br&gt;
↓&lt;br&gt;
LLM&lt;br&gt;
↓&lt;br&gt;
Response&lt;/p&gt;

&lt;p&gt;That shape is simple, and that simplicity is part of the problem. It makes building a product feel easy. It also makes the system feel shallow. In many cases, the intelligence of the application is reduced to a single call to a language model, with the rest of the runtime delegated to prompt engineering, a few retrieval steps, and some post-processing.&lt;/p&gt;

&lt;p&gt;That is not a criticism of language models. It is an observation about architecture.&lt;/p&gt;

&lt;p&gt;Modern LLMs are powerful, but they are not substitutes for structure. They are not a complete cognitive system by themselves. Once an application grows beyond a trivial demo, the real question is no longer “how do we make the model answer better?” It becomes “what happens between the user’s request and the final response?”&lt;/p&gt;

&lt;p&gt;That question is where PAD+ AI begins.&lt;/p&gt;

&lt;p&gt;PAD+ AI is not another LLM. It is not another wrapper around an API. It is not a chatbot with a nicer shell. It is an open research platform for exploring cognitive architectures around existing language models. The goal is not to replace the model. The goal is to build a system that can reason, remember, verify, adapt, and explain its behavior in ways that a single prompt-driven interaction cannot.&lt;/p&gt;

&lt;p&gt;That is a more interesting problem than most product teams admit.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Architectural Problem
&lt;/h2&gt;

&lt;p&gt;The mainstream approach to AI applications has converged on a very narrow mental model: the model is the brain, and everything else is scaffolding. The result is that many systems are optimized for fluency rather than continuity.&lt;/p&gt;

&lt;p&gt;A user asks a question, the system sends it to a model, and the model returns an answer. That is convenient, but it leaves several important concerns unresolved.&lt;/p&gt;

&lt;p&gt;First, there is no durable sense of state. The system may remember a few recent turns, but it often lacks a deeper notion of identity, intention, emotional context, or long-term trajectory. Second, the system has very little internal discipline. There is no explicit verification loop. Third, the architecture usually lacks observability. If something goes wrong, it is hard to explain why. Fourth, the system cannot easily evolve. It is difficult to test alternative reasoning strategies, compare memory mechanisms, or reason about how one component influences another.&lt;/p&gt;

&lt;p&gt;This is why many AI products feel impressive in isolation and brittle in practice. They can generate text well. They struggle to sustain a coherent internal process over time.&lt;/p&gt;

&lt;p&gt;The deeper issue is not that the model is insufficient. The deeper issue is that we keep asking the model to do too much with too little structure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The interesting question is no longer “How do we make the model smarter?” It is “How do we make the system around the model more deliberate?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Why I Started PAD+ AI
&lt;/h2&gt;

&lt;p&gt;I started PAD+ AI because I wanted to explore an alternative.&lt;/p&gt;

&lt;p&gt;The idea was simple: instead of treating the LLM as the entire cognitive engine, treat it as one component in a larger architecture. The system would still use language models for generation, but it would also include layers for intention, memory, personality, emotional state, verification, and reflection.&lt;/p&gt;

&lt;p&gt;That shift changes the nature of the project. It turns the system from a feature into an experiment in architectural design.&lt;/p&gt;

&lt;p&gt;This matters because a lot of AI work today is still organized around short-term product goals. A particular interface is built, a prompt is tuned, a retrieval strategy is added, and the system is shipped. That works for demos. It does not necessarily produce a durable foundation for research.&lt;/p&gt;

&lt;p&gt;PAD+ AI was built with a different expectation. It treats the architecture itself as the product of interest.&lt;/p&gt;

&lt;p&gt;The aim is not to create a polished end-user experience first. The aim is to investigate how an AI system can preserve causal continuity across multiple stages of processing. In other words: what happens if the system does not simply react to a prompt, but develops a more structured internal path from input to output?&lt;/p&gt;
&lt;h2&gt;
  
  
  Building a Cognitive Architecture
&lt;/h2&gt;

&lt;p&gt;The central idea behind PAD+ AI is that generation should not be the first and only step in the pipeline.&lt;/p&gt;

&lt;p&gt;A more interesting path looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input
  → Intent and context analysis
  → Memory retrieval and consolidation
  → Personality and emotional state influence
  → Generation
  → Verification and evaluation
  → State update and reflection
  → Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not a metaphor. It is the shape of the system being explored in the repository.&lt;/p&gt;

&lt;p&gt;The architecture is intentionally modular. Each stage can be reasoned about independently. That is important. If a system is going to support experimentation, it cannot be a single opaque block of prompt logic. It needs boundaries. It needs phases. It needs interfaces that allow replacement, reordering, or disabling without breaking the whole runtime.&lt;/p&gt;

&lt;p&gt;That is why the project leans toward a modular cognitive pipeline rather than a monolithic execution flow. The pipeline is not presented as a universal truth. It is a way of making architectural hypotheses testable.&lt;/p&gt;

&lt;p&gt;This also changes the way we think about responsibility. A language model can still generate text, but it does not need to carry the entire burden of interpretation, memory, judgment, and self-correction. Those concerns can be distributed across components that are easier to inspect and reason about.&lt;/p&gt;

&lt;p&gt;That is one of the strongest reasons to care about this kind of platform. It makes architecture visible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flowchart TD
    A[User Input] --&amp;gt; B[Intent &amp;amp; Context Analysis]
    B --&amp;gt; C[Memory Retrieval]
    C --&amp;gt; D[Persona &amp;amp; Emotional Influence]
    D --&amp;gt; E[Generation]
    E --&amp;gt; F[Verification &amp;amp; Evaluation]
    F --&amp;gt; G[State Update &amp;amp; Reflection]
    G --&amp;gt; H[Response]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Memory Beyond Vector Databases
&lt;/h2&gt;

&lt;p&gt;One of the most common mistakes in AI application design is to equate memory with vector search.&lt;/p&gt;

&lt;p&gt;That is useful, but it is incomplete.&lt;/p&gt;

&lt;p&gt;A system that needs to behave coherently over time cannot rely on a single retrieval mechanism. It needs memory as an ecosystem. That means different forms of memory serving different purposes.&lt;/p&gt;

&lt;p&gt;There is episodic memory for what happened in prior interactions. There is semantic memory for concepts and facts. There are more structural layers for principles, identity, and persistent preferences. In this kind of architecture, retrieval is not just “find similar chunks.” It is about selecting the right form of context for the current task.&lt;/p&gt;

&lt;p&gt;This is important because language models do not only need context; they need the right kind of context. A model that has access to raw conversation history is not necessarily in a better position than a model that is grounded in stable principles, relevant experiences, and a coherent notion of identity.&lt;/p&gt;

&lt;p&gt;The interesting design challenge is not to store more data. It is to decide what kind of memory is relevant, when it should be activated, and how it should influence generation without overwhelming the model with noise.&lt;/p&gt;

&lt;p&gt;That is why PAD+ AI is interested in memory as a layered system rather than a single storage abstraction. The architecture explores the difference between immediate recall, long-term accumulation, personal consistency, and factual grounding. These are not equivalent problems, and treating them as one problem leads to brittle systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Observability Became Necessary
&lt;/h2&gt;

&lt;p&gt;Once an architecture begins to span multiple cognitive stages, debugging becomes a different discipline.&lt;/p&gt;

&lt;p&gt;With a single prompt-based flow, it is easy to ask “why did the model answer this way?” The answer is often unsatisfying because the system has no explicit internal state to inspect. With a more structured architecture, the question becomes richer and more useful: which memory sources influenced the response? Which strategy was selected? Which assumptions were challenged? Which parts of the output were verified, and which were left unverified?&lt;/p&gt;

&lt;p&gt;That is where observability stops being a nice-to-have and becomes part of the architecture itself.&lt;/p&gt;

&lt;p&gt;The system eventually became complex enough that I could no longer understand what happened inside it from the logs alone. That problem became X-Ray.&lt;/p&gt;

&lt;p&gt;That sentence is important because it explains the motivation behind the observability layer. X-Ray is not a feature added after the fact to make the system look more sophisticated. It is the result of an architecture that became too rich to inspect casually. The same applies to the broader platform. Once the system begins to coordinate multiple decisions, internal traceability becomes essential.&lt;/p&gt;

&lt;p&gt;A dashboard is not just a UI layer. It is a way to inspect the structure of cognition. It allows us to observe the pipeline, the state transitions, the memory retrieval steps, and the verification outcomes. That kind of transparency matters for both engineering and research.&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsy8j3yze0gr9uwhjlorf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsy8j3yze0gr9uwhjlorf.png" alt=" " width="799" height="392"&gt;&lt;/a&gt;&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd1cha0fcf7caed7gcfmq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd1cha0fcf7caed7gcfmq.png" alt="[Pasted image 20260717234632.png]" width="799" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Is Different From Ordinary LLM Orchestration
&lt;/h3&gt;

&lt;p&gt;It is easy to look at a system like this and assume that it is just another orchestration layer on top of a model. That is only partially true.&lt;/p&gt;

&lt;p&gt;The difference is that PAD+ AI is not primarily concerned with chaining tool calls or wrapping a few prompts in a workflow engine. It is concerned with the structure of cognition itself. The project asks whether an LLM application can preserve a more coherent internal process by separating concerns that are usually collapsed into one opaque prompt.&lt;/p&gt;

&lt;p&gt;That distinction matters because many orchestration frameworks stop at the level of execution. They coordinate calls. They sequence steps. They manage retries. They provide basic tool use. They can be useful. But they do not necessarily create a system that can be reasoned about as an evolving cognitive architecture.&lt;/p&gt;

&lt;p&gt;PAD+ AI is trying to go one layer deeper.&lt;/p&gt;

&lt;p&gt;The architecture makes a few assumptions that are not common in simpler systems. First, it assumes that generation should be constrained by context that has been filtered and interpreted, not simply by whatever was most recently available. Second, it assumes that memory is not a single store but a set of interacting mechanisms with different responsibilities. Third, it assumes that verification is not a cosmetic addition but a core design feature. Fourth, it assumes that observability should be built in from the beginning because an architecture with multiple decision stages becomes difficult to understand without traceability.&lt;/p&gt;

&lt;p&gt;These are not small matters. They shift the focus from “can the model answer?” to “can the system behave with a recognizable degree of internal discipline?”&lt;/p&gt;

&lt;p&gt;This is also why the project has a strong interest in evolution. A system that only reacts to the latest input is not much more than a reactive interface. A system that updates its internal state over time can begin to develop a more durable form of behavior. That is a different engineering problem. It requires thinking about state transitions, feedback loops, memory consolidation, and the long-term effect of past decisions.&lt;/p&gt;

&lt;p&gt;In practice, that means the architecture is less interested in making the model look smart in a single turn and more interested in making the system behave intelligently over many turns. The difference is subtle but important. One is an interaction pattern. The other is a design philosophy.&lt;/p&gt;

&lt;p&gt;There is also a practical reason to care about this distinction. Many AI products are built to impress in a short demo and then become hard to maintain when they are asked to behave consistently over time. The more the system depends on hidden prompt logic, the more difficult it becomes to introduce new reasoning strategies, adjust memory behavior, or evaluate performance beyond narrow success metrics. A modular architecture is easier to debug, easier to experiment with, and easier to evolve.&lt;/p&gt;

&lt;p&gt;That is one of the practical values of this project. It provides a way to think about AI systems as software architectures rather than as isolated model calls wrapped in convenience layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Research Instead of Finished Product
&lt;/h2&gt;

&lt;p&gt;One of the most important decisions in this project was to avoid presenting it as a finished product.&lt;/p&gt;

&lt;p&gt;PAD+ AI is not positioned as a turnkey framework that solves agentic AI for everyone. It is an open research platform for exploring architectural ideas that are still under active development.&lt;/p&gt;

&lt;p&gt;That distinction matters. A finished product is optimized for polish. A research platform is optimized for inquiry. It exists to ask better questions, not only to deliver a polished answer.&lt;/p&gt;

&lt;p&gt;That is why the experimental section is being developed carefully and transparently. Some areas are still exploratory. Some ideas are not yet mature. That is not a weakness. It is the natural state of a platform whose purpose is to test architectural hypotheses rather than simply ship features.&lt;/p&gt;

&lt;p&gt;This is also why the project is valuable to the broader engineering community. The interesting work is not only the implementation. The interesting work is the design space itself.&lt;/p&gt;

&lt;p&gt;A good architecture discussion does not begin with “which library should we use?” It begins with “what trade-offs are we making, and why?” A good research platform creates room for that kind of conversation.&lt;/p&gt;

&lt;p&gt;That is the kind of contribution this project invites.&lt;/p&gt;

&lt;p&gt;Challenge assumptions. Suggest better designs. Open issues. Discuss trade-offs. Question existing ideas. Submit pull requests. These are not merely maintenance activities. They are ways of participating in an architectural investigation.&lt;/p&gt;

&lt;p&gt;The repository is not only a codebase. It is a place to think through the structure of intelligent systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Demo as a Window Into the Architecture
&lt;/h2&gt;

&lt;p&gt;The live demo is useful, but it should not be framed as a simple chatbot experience.&lt;/p&gt;

&lt;p&gt;Its real purpose is to make the architecture observable.&lt;/p&gt;

&lt;p&gt;A user can explore the dashboard, inspect the cognitive pipeline, watch how state evolves, and see how different memory sources contribute to the runtime. That is a very different experience from “try the assistant.” It is closer to studying a system of interacting components.&lt;/p&gt;

&lt;p&gt;That is important for the audience this project is trying to reach. Senior engineers, systems designers, AI researchers, and backend developers are not usually interested in a product that looks like a wrapper. They are interested in how a system is built, how it fails, how it explains itself, and how it can be extended.&lt;/p&gt;

&lt;p&gt;The demo is therefore an instrument for inspection. It is a way to look under the hood without needing to read the entire codebase first.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Brief Note on HEALER
&lt;/h2&gt;

&lt;p&gt;HEALER is part of the broader system, but it is not the center of the story here. It is one more example of how the project treats resilience, monitoring, and diagnostics as architectural concerns rather than separate add-ons.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;The next step is not to declare that the platform is complete. The next step is to continue refining the research surface.&lt;/p&gt;

&lt;p&gt;That means improving the experimental framework, strengthening the observability story, and making the architecture easier to inspect and discuss. It also means continuing to separate the ideas worth preserving from the ideas that are only convenient in the short term.&lt;/p&gt;

&lt;p&gt;This is where the project becomes more interesting. The real value is not in building one more wrapper around an LLM. The real value is in creating a foundation for thinking carefully about how intelligence can be structured in software.&lt;/p&gt;

&lt;p&gt;There is also a clear path to a second article focused more directly on X-Ray and the question of interpretability. That will be a deeper exploration of how a complex system can become legible to the people who build it. For now, the point is to establish the broader architectural direction.&lt;/p&gt;

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

&lt;p&gt;The reason this project is worth discussing is not that it is trying to be fashionable. It is that it addresses a real engineering gap.&lt;/p&gt;

&lt;p&gt;We have become very good at integrating models into applications. We have become much less disciplined about building systems around them.&lt;/p&gt;

&lt;p&gt;The missing piece is architecture.&lt;/p&gt;

&lt;p&gt;Not architecture as a decorative diagram. Not architecture as a vague set of principles. Architecture as an explicit structure for memory, state, verification, explanation, and evolution.&lt;/p&gt;

&lt;p&gt;That is the space PAD+ AI is trying to occupy.&lt;/p&gt;

&lt;p&gt;If you are interested in how AI systems can be designed beyond prompt-response loops, this repository is worth studying. If you are interested in modular cognitive design, observability, and architectural experimentation, it is worth following. If you want to see how a system can evolve from a prototype into a research platform, it is worth watching closely.&lt;/p&gt;

&lt;p&gt;The goal is not to convince readers that PAD+ AI is the final answer. The goal is to invite them into a more serious conversation about what the next generation of AI systems might look like when they are designed as software architectures rather than as single-model shortcuts.&lt;/p&gt;

&lt;p&gt;If that sounds interesting, the best place to start is the repository itself.&lt;/p&gt;

&lt;p&gt;The architecture is there. The code is there. The questions are there. And the most valuable contribution may be to help refine the questions themselves.&lt;/p&gt;




&lt;p&gt;If you want to explore the project, the best next step is to visit the GitHub repository and look at the architecture directly. That is where the system is being built, tested, and discussed.&lt;br&gt;
GitHub repository: &lt;a href="https://github.com/Ovladimirovich/pad-plus-ai" rel="noopener noreferrer"&gt;https://github.com/Ovladimirovich/pad-plus-ai&lt;/a&gt;&lt;br&gt;
Do you want to see it in action?&lt;br&gt;&lt;br&gt;
 Real-time demonstration: &lt;a href="https://pad-plus-ai.onrender.com" rel="noopener noreferrer"&gt;https://pad-plus-ai.onrender.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
