<?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: ArchSteer</title>
    <description>The latest articles on DEV Community by ArchSteer (@archsteer).</description>
    <link>https://dev.to/archsteer</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%2F4044074%2Fd8fe33d2-1b68-40bb-88c3-c6bd754abc7e.png</url>
      <title>DEV Community: ArchSteer</title>
      <link>https://dev.to/archsteer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/archsteer"/>
    <language>en</language>
    <item>
      <title>I mapped OpenAI's Agents SDK: 844 components and one architecture lesson</title>
      <dc:creator>ArchSteer</dc:creator>
      <pubDate>Thu, 30 Jul 2026 20:16:32 +0000</pubDate>
      <link>https://dev.to/archsteer/i-mapped-openais-agents-sdk-844-components-and-one-architecture-lesson-4591</link>
      <guid>https://dev.to/archsteer/i-mapped-openais-agents-sdk-844-components-and-one-architecture-lesson-4591</guid>
      <description>&lt;p&gt;I wanted to test ArchSteer on a codebase that was both substantial and directly&lt;br&gt;
connected to agentic software development. OpenAI's&lt;br&gt;
&lt;a href="https://github.com/openai/openai-agents-python" rel="noopener noreferrer"&gt;Agents SDK for Python&lt;/a&gt; was an&lt;br&gt;
obvious choice: it is active, open source, and had roughly 27,000 GitHub stars&lt;br&gt;
when I ran this analysis.&lt;/p&gt;

&lt;p&gt;The question was simple: &lt;strong&gt;can a zero-config architecture pass tell us&lt;br&gt;
something useful about a repository this large?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It can. It also gets some things wrong. Both parts are worth looking at.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Credit:&lt;/strong&gt; The architecture model, component inventory, dependency counts,&lt;br&gt;
and report in this article were produced by the &lt;strong&gt;ArchSteer 0.10.0&lt;/strong&gt;&lt;br&gt;
distribution. I reviewed&lt;br&gt;
and interpreted the output; ArchSteer did the repository analysis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What I ran
&lt;/h2&gt;

&lt;p&gt;I analyzed commit&lt;br&gt;
&lt;a href="https://github.com/openai/openai-agents-python/commit/974733eff567edeb8d550f042610fa9966efa5c2" rel="noopener noreferrer"&gt;&lt;code&gt;974733e&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
on July 30, 2026.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/openai/openai-agents-python.git
&lt;span class="nb"&gt;cd &lt;/span&gt;openai-agents-python
pipx &lt;span class="nb"&gt;install &lt;/span&gt;archsteer
archsteer xray
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last command is read-only. It statically reads the repository and writes&lt;br&gt;
the results under &lt;code&gt;.archsteer/&lt;/code&gt;. It does not run the SDK, call a model, or&lt;br&gt;
upload the code.&lt;/p&gt;

&lt;p&gt;The first pass found:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Repository-wide result&lt;/th&gt;
&lt;th&gt;ArchSteer output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Components mapped&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;844&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External call sites&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;431&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automatically inferred layers&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture baseline&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Created&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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%2Fw8qbt653bh8lb1h1puhi.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%2Fw8qbt653bh8lb1h1puhi.png" alt="The unedited ArchSteer report for the OpenAI Agents SDK" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The report above is the direct ArchSteer output. The odd suffix in the title&lt;br&gt;
comes from the temporary directory used for the analysis.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The runtime package tells the more useful story
&lt;/h2&gt;

&lt;p&gt;The 844-component total includes tests, examples, documentation scripts, and&lt;br&gt;
repository tooling. I narrowed the generated model to &lt;code&gt;src/agents/&lt;/code&gt;, which is&lt;br&gt;
the shipped runtime package.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Runtime package signal&lt;/th&gt;
&lt;th&gt;Observed value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python components&lt;/td&gt;
&lt;td&gt;295&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines mapped&lt;/td&gt;
&lt;td&gt;103,197&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Import edges&lt;/td&gt;
&lt;td&gt;3,370&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External call sites&lt;/td&gt;
&lt;td&gt;149&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Those numbers are not a grade. They are a map of where to look.&lt;/p&gt;

&lt;p&gt;The most useful finding was the way architectural context gathers around a&lt;br&gt;
small set of orchestration files.&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%2F5xgqg6nhmpjammy4irkm.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%2F5xgqg6nhmpjammy4irkm.png" alt="Horizontal bar chart of the five runtime files with the most import edges" width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openai_realtime.py&lt;/code&gt; led the list with 62 import edges, followed by the internal&lt;br&gt;
run loop with 56. &lt;code&gt;agent.py&lt;/code&gt;, tool execution, and run state were close behind.&lt;/p&gt;

&lt;p&gt;None of that means these files are poorly designed. It means a change there&lt;br&gt;
needs more context than a change to a small adapter. They sit where model&lt;br&gt;
providers, tools, state, tracing, guardrails, streaming, and handoffs meet.&lt;/p&gt;

&lt;p&gt;That is useful for a human reviewer. It is even more useful for a coding agent.&lt;br&gt;
If an agent touches the run loop, ArchSteer can tell it which boundaries and&lt;br&gt;
decisions matter before it starts copying a nearby pattern.&lt;/p&gt;
&lt;h2&gt;
  
  
  The new graph makes a component's neighborhood concrete
&lt;/h2&gt;

&lt;p&gt;ArchSteer 0.10.0 adds a &lt;code&gt;graph&lt;/code&gt; command. Instead of reading the entire model,&lt;br&gt;
you can ask one focused question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;archsteer graph src/agents/agent.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For &lt;code&gt;agent.py&lt;/code&gt;, ArchSteer reported 29 direct local dependencies and 55 direct&lt;br&gt;
dependents. The second number includes runtime code, tests, and examples because&lt;br&gt;
the X-ray covers the repository as a whole.&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%2Fdosopn9gyei9idifraqf.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%2Fdosopn9gyei9idifraqf.png" alt="ArchSteer 0.10.0 dependency graph for src/agents/agent.py in the OpenAI Agents SDK" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This view is more actionable than a generic complexity score. The left side&lt;br&gt;
shows what &lt;code&gt;agent.py&lt;/code&gt; needs in order to work. The right side shows the blast&lt;br&gt;
radius of changing it. Before an agent edits this file, that two-way&lt;br&gt;
neighborhood is the context I would want it to see.&lt;/p&gt;

&lt;p&gt;The graph count is deliberately different from the earlier import-edge chart.&lt;br&gt;
The chart counts all parsed import edges, including external imports. The&lt;br&gt;
&lt;code&gt;graph&lt;/code&gt; command resolves direct repository components and shows both dependency&lt;br&gt;
directions.&lt;/p&gt;
&lt;h2&gt;
  
  
  State and tool execution are the governance seams
&lt;/h2&gt;

&lt;p&gt;The largest runtime files reinforced the same point:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;run_state.py&lt;/code&gt; — 3,820 mapped lines&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tool.py&lt;/code&gt; — 2,735&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;run_internal/tool_execution.py&lt;/code&gt; — 2,554&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;run_internal/turn_resolution.py&lt;/code&gt; — 2,500&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agent frameworks are often described in terms of prompts and handoffs. The&lt;br&gt;
engineering weight is elsewhere: durable state, tool-call ownership,&lt;br&gt;
interruption and resumption, provider translation, error behavior, and&lt;br&gt;
tracing.&lt;/p&gt;

&lt;p&gt;Those are exactly the places where a plausible patch can pass a narrow test and&lt;br&gt;
still bend the architecture. A tool result may be persisted in the wrong place.&lt;br&gt;
A provider-specific type may leak into core state. A new execution path may&lt;br&gt;
skip an established guardrail.&lt;/p&gt;

&lt;p&gt;ArchSteer gives a team a way to turn those expectations into explicit rules.&lt;br&gt;
For this kind of SDK, maintainers might choose rules such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;core run state cannot depend on a concrete model provider;&lt;/li&gt;
&lt;li&gt;provider adapters can depend on core interfaces, but not the reverse;&lt;/li&gt;
&lt;li&gt;tool execution must pass through the approved tracing and guardrail paths;&lt;/li&gt;
&lt;li&gt;session backends stay behind the session abstraction; and&lt;/li&gt;
&lt;li&gt;sandbox-provider integrations do not leak into the core run loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those examples are my interpretation, not rules declared by the OpenAI&lt;br&gt;
maintainers. The important point is that ArchSteer can check whatever intent a&lt;br&gt;
team actually chooses.&lt;/p&gt;
&lt;h2&gt;
  
  
  The first map was useful—and clearly incomplete
&lt;/h2&gt;

&lt;p&gt;Here is the honest limitation from this run: ArchSteer inferred only &lt;code&gt;model&lt;/code&gt; and&lt;br&gt;
&lt;code&gt;util&lt;/code&gt; as layers. Within &lt;code&gt;src/agents/&lt;/code&gt;, 266 of 295 components remained&lt;br&gt;
unassigned.&lt;/p&gt;

&lt;p&gt;The SDK plainly has a richer shape than that. It contains core agent&lt;br&gt;
abstractions, orchestration, tools, handoffs, guardrails, providers, sessions,&lt;br&gt;
tracing, realtime behavior, MCP integrations, sandboxes, and extensions.&lt;/p&gt;

&lt;p&gt;So I would not present the two-layer diagram as “the architecture of the OpenAI&lt;br&gt;
Agents SDK.” It is a first hypothesis derived from names and code structure.&lt;/p&gt;

&lt;p&gt;That is still helpful. Starting from an imperfect map is much faster than&lt;br&gt;
starting from a blank page. A maintainer can name the real boundaries once,&lt;br&gt;
store that intent with the repository, and let ArchSteer keep comparing the&lt;br&gt;
code against it.&lt;/p&gt;

&lt;p&gt;The data-store detection also produced noise. The repository-wide report showed&lt;br&gt;
60 store-like signals, but that list mixed genuine persistence concepts with&lt;br&gt;
SQL tokens, variable names, and example code. It does &lt;strong&gt;not&lt;/strong&gt; mean the SDK uses&lt;br&gt;
60 databases.&lt;/p&gt;

&lt;p&gt;I like that the file-level evidence is visible. A false positive can be&lt;br&gt;
inspected and corrected instead of disappearing behind a confident score.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this matters now
&lt;/h2&gt;

&lt;p&gt;Coding agents are excellent at local consistency. They read the files around an&lt;br&gt;
edit and imitate what they see.&lt;/p&gt;

&lt;p&gt;That becomes a problem when a repository contains two competing patterns. A&lt;br&gt;
half-finished migration often has more examples of the old approach than the&lt;br&gt;
new one. An architecture diagram in a slide deck will not help the agent if it&lt;br&gt;
never enters the working context.&lt;/p&gt;

&lt;p&gt;The dangerous result is not obviously broken code. It is code that compiles,&lt;br&gt;
passes tests, and makes the intended architecture a little less true.&lt;/p&gt;

&lt;p&gt;ArchSteer addresses that with a control loop rather than a one-time diagram:&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%2Fspdqjp7w0srljlbsephl.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%2Fspdqjp7w0srljlbsephl.png" alt="ArchSteer's four-stage architecture control loop: map, intent, steer, and check" width="799" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The “check” step uses a ratchet. A team can baseline known violations and block&lt;br&gt;
only net-new drift. Existing debt stays visible, but it does not force a&lt;br&gt;
big-bang cleanup before the tool becomes useful.&lt;/p&gt;

&lt;p&gt;That is the part of ArchSteer I find most relevant to agentic development. The&lt;br&gt;
same model serves four moments:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Moment&lt;/th&gt;
&lt;th&gt;What ArchSteer contributes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Before the edit&lt;/td&gt;
&lt;td&gt;Shows components, dependencies, hotspots, and external calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;While the agent works&lt;/td&gt;
&lt;td&gt;Supplies file-scoped architectural guidance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;During review and CI&lt;/td&gt;
&lt;td&gt;Detects net-new boundary violations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After the change&lt;/td&gt;
&lt;td&gt;Records evolution and drafts decisions worth preserving&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  What this run proves—and what it does not
&lt;/h2&gt;

&lt;p&gt;One static X-ray cannot tell us whether the SDK is secure, reliable, or “well&lt;br&gt;
architected.” Python is dynamic. Configuration, dependency injection, generated&lt;br&gt;
code, and runtime behavior can hide edges from any static tool.&lt;/p&gt;

&lt;p&gt;I also did not apply maintainer-authored intent, so there is no meaningful&lt;br&gt;
conformance score here.&lt;/p&gt;

&lt;p&gt;What the run did prove is more practical: ArchSteer turned a large, active&lt;br&gt;
repository into an inspectable architecture dataset with one command. It&lt;br&gt;
identified the files where architectural context concentrates, created a&lt;br&gt;
baseline for future changes, and made the gaps in automatic inference obvious.&lt;/p&gt;

&lt;p&gt;That is a credible starting point for architecture work in an agent-heavy&lt;br&gt;
development process.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try the same X-ray
&lt;/h2&gt;

&lt;p&gt;ArchSteer is local-first, open source, and MIT licensed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;archsteer
&lt;span class="nb"&gt;cd &lt;/span&gt;your-repository
archsteer xray
open .archsteer/report.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The best first question is not “did I get a perfect diagram?” It is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did ArchSteer show me that I would want a coding agent to know before its&lt;br&gt;
next edit?&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Run the same local X-ray:&lt;/strong&gt; &lt;a href="https://www.archsteer.com/get-started?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=openai_agents_xray" rel="noopener noreferrer"&gt;Get started with ArchSteer&lt;/a&gt; · &lt;a href="https://www.archsteer.com/blog/openai-agents-sdk-architecture-xray?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=openai_agents_xray" rel="noopener noreferrer"&gt;Original case study&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Architecture X-Ray Challenge: Find One Surprise in Your Codebase</title>
      <dc:creator>ArchSteer</dc:creator>
      <pubDate>Thu, 23 Jul 2026 15:34:21 +0000</pubDate>
      <link>https://dev.to/archsteer/the-architecture-x-ray-challenge-find-one-surprise-in-your-codebase-2eh8</link>
      <guid>https://dev.to/archsteer/the-architecture-x-ray-challenge-find-one-surprise-in-your-codebase-2eh8</guid>
      <description>&lt;p&gt;Most teams have an architecture diagram. Fewer have a diagram they trust.&lt;/p&gt;

&lt;p&gt;The codebase is the only completely current record of the system, but reading&lt;br&gt;
it file by file is a poor way to see boundaries, dependency direction, data&lt;br&gt;
access, and how the shape has changed over time.&lt;/p&gt;

&lt;p&gt;So this week I am running a deliberately simple experiment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run an architecture X-ray on one repository and find one thing you did not&lt;br&gt;
know.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The challenge
&lt;/h2&gt;

&lt;p&gt;You need Python 3.10 or newer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;archsteer
&lt;span class="nb"&gt;cd &lt;/span&gt;your-repo
archsteer xray
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;.archsteer/report.html&lt;/code&gt;, then look for one surprise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a dependency crossing a boundary you thought was clean;&lt;/li&gt;
&lt;li&gt;a module that owns much more of the system than its name suggests;&lt;/li&gt;
&lt;li&gt;data access in an unexpected layer;&lt;/li&gt;
&lt;li&gt;an external call site nobody remembered;&lt;/li&gt;
&lt;li&gt;a legacy architecture still living inside the current one; or&lt;/li&gt;
&lt;li&gt;a structural change that should have produced an ADR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Share the finding, open an issue if the model is wrong, or keep the result&lt;br&gt;
private. All three outcomes are useful.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it does and does not do
&lt;/h2&gt;

&lt;p&gt;ArchSteer statically reads the repository and emits a code-derived model,&lt;br&gt;
living architecture documentation, diagrams, an evolution feed, and draft ADRs&lt;br&gt;
for boundary-altering changes. It runs locally, does not execute the target&lt;br&gt;
code, does not upload the repository, and requires no account.&lt;/p&gt;

&lt;p&gt;The model is heuristic. It is supposed to be an always-current starting point&lt;br&gt;
that an architect can curate, not a formal proof that the system behaves a&lt;br&gt;
certain way. A confidently wrong boundary is exactly the kind of result I want&lt;br&gt;
reported.&lt;/p&gt;

&lt;p&gt;Current language support covers Python, TypeScript/JavaScript, Java Spring, and&lt;br&gt;
Salesforce Apex.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this matters more with coding agents
&lt;/h2&gt;

&lt;p&gt;Coding agents learn the local pattern from the files around an edit. In a&lt;br&gt;
half-migrated codebase, legacy examples outnumber target examples, so an agent&lt;br&gt;
can produce perfectly plausible code that pushes the architecture backward.&lt;/p&gt;

&lt;p&gt;An accurate current model makes a control loop possible:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;derive the architecture the code actually implements;&lt;/li&gt;
&lt;li&gt;declare one target invariant;&lt;/li&gt;
&lt;li&gt;put the relevant invariant into the coding agent's file-scoped context;&lt;/li&gt;
&lt;li&gt;check the resulting code; and&lt;/li&gt;
&lt;li&gt;block only net-new violations, so delivery continues while debt ratchets
down.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The challenge starts with step one because it should provide value before a&lt;br&gt;
team writes any rules.&lt;/p&gt;
&lt;h2&gt;
  
  
  Participate
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;archsteer &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; archsteer xray
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then share one surprising finding and link to&lt;br&gt;
&lt;a href="https://github.com/einvoice-dev1/archsteer" rel="noopener noreferrer"&gt;ArchSteer on GitHub&lt;/a&gt;, or file the&lt;br&gt;
most specific example you can where the model got your architecture wrong.&lt;br&gt;
ArchSteer is free and MIT licensed.&lt;/p&gt;




&lt;p&gt;Originally published at &lt;a href="https://www.archsteer.com/blog/architecture-xray-challenge?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=xray_week" rel="noopener noreferrer"&gt;archsteer.com&lt;/a&gt;. I build ArchSteer and welcome blunt feedback on the model.&lt;/p&gt;

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