<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>zerowithdot — AI for CAD, manufacturing and design</title><description>Practice notes on making AI understand geometry and CAD — context, constraints, what worked and what did not.</description><link>https://zerowithdot.com/</link><language>en-gb</language><ttl>60</ttl><atom:link href="https://zerowithdot.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Text-to-Diagram for AI Systems: Designing a DSL an LLM Gets Right</title><link>https://zerowithdot.com/blog/text-to-diagram-for-ai-systems/</link><guid isPermaLink="true">https://zerowithdot.com/blog/text-to-diagram-for-ai-systems/</guid><description>Gnomon, the DSL from my DevAI 2026 keynote: a Python compiler built on Lark and an ontology, turning talk about a system into a diagram you can check.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I have worked on sensor design, e-commerce, airlines, medicine and CAD software, in several countries. The domains could not be more different, yet one problem kept coming back: people do not understand each other. Not because they are careless. Everybody simply looks at the same system from a different side. Legal sees data, the CEO sees cost, DevOps sees uptime.&lt;/p&gt;
&lt;p&gt;Take one sentence from a kick-off meeting:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“We are building an agent to &lt;strong&gt;fix&lt;/strong&gt; invoices.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What does &lt;em&gt;fix&lt;/em&gt; mean? Who uses it? Does it see customer data? Where does it run, and who owns it? Nobody asks, because everybody &lt;em&gt;thinks&lt;/em&gt; they know. A year later the project has five different answers to each of those questions.&lt;/p&gt;
&lt;p&gt;Large language models make this more urgent, not less. Anybody can now describe a system in a paragraph, and a model will happily draw it. The open question is whether that drawing is &lt;em&gt;the&lt;/em&gt; architecture, or just &lt;em&gt;an&lt;/em&gt; architecture.&lt;/p&gt;
&lt;p&gt;Gnomon is my attempt at an answer. It is a small language, gnomocode, and a compiler that checks every statement against an ontology. A language model translates what people say into gnomocode; the compiler decides what is allowed; and the result can be drawn, queried and read back as prose. The compiler is written in Python, on top of Lark, rdflib and pySHACL.&lt;/p&gt;
&lt;p&gt;I presented it as a keynote at &lt;a href=&quot;https://devai.dssconf.pl/&quot;&gt;DevAI by Data Science Summit&lt;/a&gt; in Warsaw on 20 October 2026, under the title of this article. This is the written version of that talk: why I built Gnomon, how it works, and what the measurements say about it.&lt;/p&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;Status&lt;/p&gt;&lt;p&gt;Work in progress, October 2026. A public repository is being prepared. Until it exists, this article is the best description of what is built and why it looks the way it does.&lt;/p&gt;&lt;/aside&gt;
&lt;h2 id=&quot;motivation&quot;&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Draw the invoice agent and you are done in five seconds: invoices go in, an agent does something, fixed invoices come out. The box is easy. The questions around it are the architecture: who owns the data, where the model runs, whether personal data is involved, who reviews the edge cases. That gap between &lt;strong&gt;words&lt;/strong&gt; and a &lt;strong&gt;diagram somebody can be held to&lt;/strong&gt; is what I wanted to close.&lt;/p&gt;
&lt;p&gt;It has to work in both directions. Forward, from a conversation to a model that a developer, or an agent, can build from. Backward, from existing code and diagrams to text that people can read. The forward direction is the harder one, and it is what this article is mostly about.&lt;/p&gt;
&lt;p&gt;Before writing any code, I wrote down what a language sitting in the middle has to offer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unambiguous terms;&lt;/li&gt;
&lt;li&gt;native words for what we build today: language models, memory, tools, MCP &lt;a href=&quot;#ref-15&quot;&gt;[15]&lt;/a&gt;, A2A &lt;a href=&quot;#ref-16&quot;&gt;[16]&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;easy to read &lt;em&gt;and&lt;/em&gt; write, by people as well as by models;&lt;/li&gt;
&lt;li&gt;one model, many views, one per reader;&lt;/li&gt;
&lt;li&gt;versions, diffs and references;&lt;/li&gt;
&lt;li&gt;a way to say “I am not sure”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The last one turned out to matter more than I expected.&lt;/p&gt;
&lt;h2 id=&quot;approach&quot;&gt;Approach&lt;/h2&gt;
&lt;p&gt;I did not start with a language. I started with the cheapest option and let it fail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Just ask the model.&lt;/strong&gt; “Draw an architecture for an agent that fixes invoices.” The answer is fluent, plausible and different every time. It invents words, gives no errors and no line numbers, and there is nothing to diff. When it is wrong, nothing tells you where.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Objects.&lt;/strong&gt; Pydantic &lt;a href=&quot;#ref-12&quot;&gt;[12]&lt;/a&gt; classes, filled in by the model through structured output. Validation is real and every provider supports it. But an architecture is a &lt;em&gt;graph&lt;/em&gt;, not a tree. A missing fact is either an error or a &lt;code&gt;null&lt;/code&gt;, and a conversation with a client is mostly missing facts. Two statements cannot be merged, nor can they contradict each other, and every new term means a new class and a new release. The vocabulary ends up cemented in code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Existing notations.&lt;/strong&gt; UML, BPMN, C4 &lt;a href=&quot;#ref-10&quot;&gt;[10]&lt;/a&gt;, ArchiMate and SysML v2 &lt;a href=&quot;#ref-11&quot;&gt;[11]&lt;/a&gt; are standards, and people understand them. They come with fixed symbols and a fixed depth, none of them has a “maybe”, and only some of them check whether a diagram &lt;em&gt;makes sense&lt;/em&gt;, as opposed to whether it is drawn correctly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A language of my own, with a compiler.&lt;/strong&gt; This is the one that stayed. The idea is old and boring, which is how I like my ideas: &lt;strong&gt;let the model talk, let the compiler decide.&lt;/strong&gt;&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/pipeline-light.png&quot; alt=&quot;Pipeline: natural language goes to text2gnc (a language model), then to gnomocode, then to a compiler with rules only, then to a graph, then to views, diagrams and recommendations. Compiler errors loop back to text2gnc for up to three rounds; gnc2text turns the graph back into prose.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;1&lt;/span&gt; — The language model translates; it never gets the last word. Compiler errors go back to it for up to three rounds of repair.&lt;/figcaption&gt;&lt;/figure&gt;&lt;script type=&quot;module&quot; src=&quot;https://zerowithdot.com/home/runner/work/zerowithdot-website-ai4cad/zerowithdot-website-ai4cad/src/components/brand/Figure.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;The translator, text2gnc, turns natural language into gnomocode. The compiler, which is plain rules with no model inside, checks each statement and builds a graph. When it finds errors, it sends them back to the translator with line numbers and hints. Everything else, diagrams for different audiences, recommendations, even prose, is drawn from the graph.&lt;/p&gt;
&lt;p&gt;Two consequences matter to me. The &lt;strong&gt;script&lt;/strong&gt; is the source of truth, not a single call to a model: the same script always compiles to the same graph. And errors are &lt;strong&gt;located and readable&lt;/strong&gt;, so a person and a model can both act on them.&lt;/p&gt;
&lt;h2 id=&quot;the-ontology-is-the-key&quot;&gt;The ontology is the key&lt;/h2&gt;
&lt;p&gt;Before designing a single keyword, I went looking for who had already described this world. Plenty of people had. A taxonomy says what is a kind of what: a language model is a machine learning model. An ontology goes further and adds relations and rules: an agent &lt;em&gt;uses&lt;/em&gt; a model, a model &lt;em&gt;runs on&lt;/em&gt; an environment, and a dataset cannot run on anything at all. Such vocabularies have been written in RDF &lt;a href=&quot;#ref-1&quot;&gt;[1]&lt;/a&gt; for years, and some are widely used: SKOS &lt;a href=&quot;#ref-3&quot;&gt;[3]&lt;/a&gt; for taxonomies, PROV-O &lt;a href=&quot;#ref-2&quot;&gt;[2]&lt;/a&gt; for provenance, DCAT &lt;a href=&quot;#ref-4&quot;&gt;[4]&lt;/a&gt; for data catalogues, DPV &lt;a href=&quot;#ref-7&quot;&gt;[7]&lt;/a&gt; for privacy, QUDT &lt;a href=&quot;#ref-8&quot;&gt;[8]&lt;/a&gt; for units and schema.org &lt;a href=&quot;#ref-9&quot;&gt;[9]&lt;/a&gt; for the web. OWL &lt;a href=&quot;#ref-6&quot;&gt;[6]&lt;/a&gt; defines the classes and SHACL &lt;a href=&quot;#ref-5&quot;&gt;[5]&lt;/a&gt; checks the graphs.&lt;/p&gt;
&lt;p&gt;So the rule became: &lt;strong&gt;take terms, relations, types and hierarchy from what exists, and add the minimum.&lt;/strong&gt; The result is a kernel of 57 terms and twelve modules (systems, deployment, integration, data, ML, agents, processes, operations, security, legal, cost and service levels) that a script imports only when it needs them. From day one there was also a licence rule: nothing copyleft goes in, so that the whole thing can later be distributed freely &lt;em&gt;and&lt;/em&gt; commercially.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/ontology-sources-light.png&quot; alt=&quot;Names of existing vocabularies (PROV-O, DCAT, DPV, SKOS, schema.org, QUDT, OWL, SHACL, ODRL, Dublin Core, SPDX, ML Schema, AIRO, Croissant, TOSCA) funnel into the Gnomon tree: a kernel of 57 terms and modules for systems, deployment, integration, data, ML, agents, processes, operations, security, legal, cost and service levels.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;2&lt;/span&gt; — Many sources in, one small vocabulary out.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Why call the ontology &lt;em&gt;the&lt;/em&gt; key? Because every other part of Gnomon is generated from it or checked against it. Take a single word that a script writes, &lt;code&gt;runs_on&lt;/code&gt;. In the ontology it has three layers: a lexicon entry that gives the word and its inverse reading, a property with a definition, and a shape that says what may stand on either side of it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ontology (abridged)&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;gnlex:runs-on a skos:Concept ; skos:prefLabel &amp;quot;runs on&amp;quot;@en ;
    gn:inverseReading &amp;quot;hosts&amp;quot;@en ;
    gn:denotes gn:runsOn .

gn:runsOn a owl:ObjectProperty ;
    rdfs:label &amp;quot;runs on&amp;quot;@en ;
    skos:definition &amp;quot;The subject executes in or on the object.&amp;quot;@en ;
    gn:acyclic true .

gnsh:runsOn-subject a sh:NodeShape ;
    sh:targetSubjectsOf gn:runsOn ;
    sh:or ( [ sh:class gn:System ]
            [ sh:class gn:Model ]
            [ sh:class gn:Activity ] ) ;
    sh:message &amp;quot;only a system, a model or an activity can run on something&amp;quot; ;
    gn:diagnosticCode &amp;quot;type/signature&amp;quot; .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That one definition feeds the whole tool chain. The lexicon decides which words a script may use, and therefore which words a model may generate. The shape becomes the compiler’s error message, word for word. The labels become the English sentences in which a script is read back. The concerns attached to each term decide which audience sees it on a diagram. And because Gnomon’s classes are declared as subclasses of the borrowed ones (a &lt;code&gt;gn:Dataset&lt;/code&gt; is also a &lt;code&gt;dcat:Dataset&lt;/code&gt; and a &lt;code&gt;prov:Entity&lt;/code&gt;), the compiled graph is readable by tools that have never heard of Gnomon.&lt;/p&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;Info&lt;/p&gt;&lt;p&gt;The grammar of gnomocode is generated from the kernel alone. Words come from the lexicon, so adding a module adds vocabulary without changing the grammar. Extending the language is a matter of editing data, not releasing code.&lt;/p&gt;&lt;/aside&gt;
&lt;h2 id=&quot;the-language&quot;&gt;The language&lt;/h2&gt;
&lt;p&gt;Why not let the model write RDF directly and validate it with SHACL? RDF is precise, but it is not something I want to read in a review. Here is the invoice agent as gnomocode, 23 lines:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;fix-invoices.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-gnomocode&quot;&gt;---
gnomon: 0.2.2
as_of: 2026-10
state: TARGET
import: systems, deployment, ml, agent, process
---

finance_team: Team
erp: Application
    owned_by = finance_team
    runs_on = CloudEnvironment() ~0.5        # &amp;quot;in the cloud, I think&amp;quot;
invoices: Dataset
    stored_in = erp
    contains_personal_data = true

invoice_agent: AIAgent
    uses = LanguageModel()
    classifies(invoices, frequency = 200/DAY)

fixing: Process = check &amp;gt;&amp;gt; (&amp;quot;amount &amp;gt; 10k&amp;quot; =&amp;gt; review | post)
review.performer = finance_team
invoices -&amp;gt; check -&amp;gt; checked_invoices
checked_invoices: Dataset&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It compiles to 76 lines of RDF. Three forms carry almost everything: &lt;code&gt;name: Type&lt;/code&gt; declares an element, &lt;code&gt;property = value&lt;/code&gt; states a fact about it, and &lt;code&gt;action(object)&lt;/code&gt; says what it does. Flows connect steps (&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;) and data (&lt;code&gt;-&amp;gt;&lt;/code&gt;). The notation borrows from places people already know: front matter from Markdown, indented blocks and assignments from Python, arrows from graph query languages. Even the case of a word tells you its kind: &lt;code&gt;Type&lt;/code&gt;, &lt;code&gt;property&lt;/code&gt;, &lt;code&gt;CONSTANT&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The front matter pins the release of the ontology the script was written against, says whether it describes the current state or a target, and imports only the modules the text needs. An old script therefore compiles against the same release, or gets migrated to a new one on purpose.&lt;/p&gt;
&lt;p&gt;Look at the &lt;code&gt;~0.5&lt;/code&gt; on the &lt;code&gt;runs_on&lt;/code&gt; line. It means “I think so, but I am only half sure”, and it is part of the language. Confidence has a few reference points: 1 is confirmed in a system or a document, 0.8 is stated by someone who does the work, 0.5 is second-hand, 0.2 is a guess. Below 0.7 a fact is not an error, but it is reported as a finding. In the graph it becomes an annotated statement, so you can query for everything that still needs confirming:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;fix-invoices.trig (excerpt)&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-turtle&quot;&gt;    rdf:subject :erp ;
    rdf:predicate gn:runsOn ;
    rdf:object minted:cloud-environment-0 ;
    gn:confidence 0.5 .&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;the-syntax-at-a-glance&quot;&gt;The syntax at a glance&lt;/h3&gt;
&lt;p&gt;The invoice script uses only part of the language. Here is most of the rest in one script that compiles, with a comment on what each line does:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;support.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-gnomocode&quot;&gt;---
gnomon: 0.2.2
as_of: 2026-10
state: CURRENT
import: systems, deployment, ml, agent, process
---

sales_team: Team                             # declares an element
support_team: Team
cloud_account: CloudEnvironment
tickets: Dataset
product_catalogue: Dataset

crm: Application
    runs_on = cloud_account ~0.8             # a fact and its confidence
    owned_by = sales_team                    # inverse reading of owns
    search_tool: Tool                        # a part of crm

support_agent: AIAgent
    uses = search_tool, LanguageModel()      # two values, one unnamed
    reads(product_catalogue)                 # an action: a new activity
    summarises(tickets, frequency = 50/DAY)  # with its own properties

LanguageModel[0] is gpt_4o                   # two names, one element
gpt_4o: LanguageModel
    name = &amp;quot;GPT-4o&amp;quot;

triage: Process = sort &amp;gt;&amp;gt; (&amp;quot;urgent&amp;quot; =&amp;gt; call_back | answer)
sort: Classification
    performer = support_agent
    duration = 3 MIN                         # a quantity with a unit
call_back.performer = support_team
tickets -&amp;gt; sort -&amp;gt; sorted_tickets            # data flows through a step
sorted_tickets: Dataset&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few things are worth noticing. A declaration inside a block makes the element a part of its parent, so nesting is how you say “consists of”. An action such as &lt;code&gt;reads(product_catalogue)&lt;/code&gt; does not need a name: the compiler creates an unnamed activity of the right kind, with the agent as its performer and the catalogue as its input, and numbers it so that later lines can refer to it. And &lt;code&gt;|&lt;/code&gt; in a flow means exactly one branch is taken, while &lt;code&gt;&amp;amp;&lt;/code&gt; means all of them are.&lt;/p&gt;
&lt;h3 id=&quot;a-compiler-in-python-built-on-lark&quot;&gt;A compiler in Python, built on Lark&lt;/h3&gt;
&lt;p&gt;The compiler is plain Python 3.14, managed with uv. Parsing is done by &lt;a href=&quot;https://github.com/lark-parser/lark&quot;&gt;Lark&lt;/a&gt; &lt;a href=&quot;#ref-20&quot;&gt;[20]&lt;/a&gt;, a parsing toolkit for Python under the MIT licence. The grammar is not written by hand: &lt;code&gt;gnomon grammar&lt;/code&gt; generates it from the kernel of the ontology, with one slot per class of words. A new module adds words, never grammar rules. An excerpt:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gnomocode.lark (excerpt)&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;declaration: NAME &amp;quot;:&amp;quot; type_ref confidence? assigned_flow? _NEWLINE block?
block: _INDENT member+ _DEDENT
own_property: NAME &amp;quot;=&amp;quot; values _NEWLINE
own_action: NAME &amp;quot;(&amp;quot; [arguments] &amp;quot;)&amp;quot; confidence? _NEWLINE
step_flow: step_term (&amp;quot;&amp;gt;&amp;gt;&amp;quot; step_term)+
data_flow: reference (&amp;quot;-&amp;gt;&amp;quot; reference)+
group: &amp;quot;(&amp;quot; branch (&amp;quot;|&amp;quot; branch)* &amp;quot;)&amp;quot; -&amp;gt; one_of
     | &amp;quot;(&amp;quot; branch (&amp;quot;&amp;amp;&amp;quot; branch)+ &amp;quot;)&amp;quot; -&amp;gt; all_of
confidence: &amp;quot;~&amp;quot; NUMBER

TYPE: /[A-Z][A-Z0-9]*[a-z][A-Za-z0-9]*/
CONST: /[A-Z][A-Z0-9_]*(?![A-Za-z0-9_])/
NAME: /[^\W\dA-Z]\w*/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Indentation works exactly as in Python, because Lark ships a post-lexer for it. Subclass &lt;code&gt;Indenter&lt;/code&gt;, name the tokens, and the LALR parser receives &lt;code&gt;_INDENT&lt;/code&gt; and &lt;code&gt;_DEDENT&lt;/code&gt; like any other token:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;syntax.py (abridged)&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from lark import Lark
from lark.indenter import Indenter


class GnomocodeIndenter(Indenter):
    NL_type = &amp;quot;_NEWLINE&amp;quot;
    OPEN_PAREN_types = [&amp;quot;LPAR&amp;quot;, &amp;quot;LSQB&amp;quot;]
    CLOSE_PAREN_types = [&amp;quot;RPAR&amp;quot;, &amp;quot;RSQB&amp;quot;]
    INDENT_type = &amp;quot;_INDENT&amp;quot;
    DEDENT_type = &amp;quot;_DEDENT&amp;quot;
    tab_len = 4


parser = Lark(
    grammar,
    parser=&amp;quot;lalr&amp;quot;,
    postlex=GnomocodeIndenter(),
    propagate_positions=True,
)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;LALR keeps parsing fast and deterministic, which matters when the studio rechecks the script after every pause in typing. &lt;code&gt;propagate_positions&lt;/code&gt; keeps the line and column of every node, so each diagnostic can point at the exact span of the source. A Lark &lt;code&gt;Transformer&lt;/code&gt; turns the parse tree into statements; &lt;a href=&quot;https://github.com/RDFLib/rdflib&quot;&gt;rdflib&lt;/a&gt; &lt;a href=&quot;#ref-21&quot;&gt;[21]&lt;/a&gt; builds the graph from them; the rules of the release derive further facts; and &lt;a href=&quot;https://github.com/RDFLib/pySHACL&quot;&gt;pySHACL&lt;/a&gt; &lt;a href=&quot;#ref-22&quot;&gt;[22]&lt;/a&gt; validates the result against the shapes of the ontology. Every violation is mapped back to the line it came from.&lt;/p&gt;
&lt;h3 id=&quot;what-the-compiler-says&quot;&gt;What the compiler says&lt;/h3&gt;
&lt;p&gt;Mistype a word and the compiler answers like a linter, with the line, a caret and a suggestion taken from the lexicon:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;typos.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-gnomocode&quot;&gt;---
gnomon: 0.2.2
as_of: 2026-10
state: TARGET
import: systems, ml, agent
---

finance_team: Team
erp: Application
invoices: Dataset
    stored_at = erp
reviewer: HumanRol&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;gnomon check typos.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;typos.gnc:11:5: error type/vocabulary: unknown property `stored_at`
   |
11 |     stored_at = erp
   |     ^^^^^^^^^
   = hint: did you mean `stored_in` or `stores`?
typos.gnc:12:11: error type/vocabulary: unknown type `HumanRol`
   |
12 | reviewer: HumanRol
   |           ^^^^^^^^
   = hint: did you mean `HumanRole` or `HumanReview`?
typos.gnc: blocked (2 errors, 0 warnings, 0 infos)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Syntax errors look the same. Indent a block by three spaces instead of four and you get:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gnomon check&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;syntax.gnc:9:1: error syntax/indentation: an indentation of 3 spaces
  |
9 |    owned_by = finance_team
  | ^^^
  = hint: indent with four spaces per level&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A script that compiles still gets its findings. For &lt;code&gt;support.gnc&lt;/code&gt; above the verdict is &lt;code&gt;compiles (0 errors, 12 warnings, 18 infos)&lt;/code&gt;, starting with lines such as:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gnomon check support.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;support.gnc:11:1: warning finding/missing-owner: no owner: `tickets`
support.gnc:11:1: warning finding/missing-personal-data-marker: personal data not marked: `tickets`
support.gnc:19:1: warning finding/missing-owner: no owner: `support_agent`
support.gnc:28:52: warning finding/missing-performer: no performer: `answer`
support.gnc:19:1: info finding/missing-runs-on: where it runs is not stated: `support_agent`
support.gnc: compiles (0 errors, 12 warnings, 18 infos)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With &lt;code&gt;--format json&lt;/code&gt; the same diagnostics come as records. This is what the translator receives in the repair loop:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;gnomon check --format json typos.gnc (first record)&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;file&amp;quot;: &amp;quot;typos.gnc&amp;quot;,
  &amp;quot;line&amp;quot;: 11,
  &amp;quot;column&amp;quot;: 5,
  &amp;quot;end_line&amp;quot;: 11,
  &amp;quot;end_column&amp;quot;: 14,
  &amp;quot;severity&amp;quot;: &amp;quot;error&amp;quot;,
  &amp;quot;code&amp;quot;: &amp;quot;type/vocabulary&amp;quot;,
  &amp;quot;message&amp;quot;: &amp;quot;unknown property `stored_at`&amp;quot;,
  &amp;quot;hint&amp;quot;: &amp;quot;did you mean `stored_in` or `stores`?&amp;quot;,
  &amp;quot;rules&amp;quot;: []
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;from-a-sentence-to-a-line-to-a-picture&quot;&gt;From a sentence to a line to a picture&lt;/h3&gt;
&lt;p&gt;Each line of the script answers something somebody said. Suppose the kick-off meeting went on a few minutes longer. This is how its sentences map onto the script, and how the compiler reads each line back, in its own controlled English (&lt;code&gt;gnomon explain&lt;/code&gt;, no model involved):&lt;/p&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;What was said&lt;/th&gt;&lt;th&gt;Gnomocode&lt;/th&gt;&lt;th&gt;What the compiler reads back&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;”We are building…”&lt;/td&gt;&lt;td&gt;&lt;code&gt;state: TARGET&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This description is of the target state, as of 2026-10.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”…an agent…”&lt;/td&gt;&lt;td&gt;&lt;code&gt;invoice_agent: AIAgent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Invoice agent is an AI agent.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”…that uses an LLM…”&lt;/td&gt;&lt;td&gt;&lt;code&gt;uses = LanguageModel()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Invoice agent uses the unnamed language model 0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”About 200 invoices a day.”&lt;/td&gt;&lt;td&gt;&lt;code&gt;classifies(invoices, frequency = 200/DAY)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Invoice agent classifies invoices (classification 0). The frequency of the unnamed classification 0 is 200 per day.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”Invoices hold customer data.”&lt;/td&gt;&lt;td&gt;&lt;code&gt;contains_personal_data = true&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Invoices contains personal data.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”The ERP is in the cloud, I think.”&lt;/td&gt;&lt;td&gt;&lt;code&gt;runs_on = CloudEnvironment() ~0.5&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Possibly (confidence 0.5): erp runs on the unnamed cloud environment 0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”Anything over 10k goes to review.”&lt;/td&gt;&lt;td&gt;&lt;code&gt;check &amp;gt;&amp;gt; (&amp;quot;amount &amp;gt; 10k&amp;quot; =&amp;gt; review | post)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;After check comes exactly one of these: review when “amount &amp;gt; 10k”; post.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;”Finance does the review.”&lt;/td&gt;&lt;td&gt;&lt;code&gt;review.performer = finance_team&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The performer of review is finance team.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The read-back matters more than it looks. A person who will never learn gnomocode can still check, sentence by sentence, whether the script says what they meant. And a language model that turns the script into prose works from these sentences, so it has nothing to guess.&lt;/p&gt;
&lt;p&gt;The same lines are also a picture. The process line becomes the process view, with the branch, its condition and the performer of the review:&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/process-light.png&quot; alt=&quot;Isometric process view: the activity check, marked as an exclusive branch, followed by review and post, all three on a plate labelled fixing; review carries a small cube marking its performer, the finance team.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;3&lt;/span&gt; — One line of gnomocode, check &amp;gt;&amp;gt; (&amp;quot;amount &amp;gt; 10k&amp;quot; =&amp;gt; review | post), drawn as the process view in Gnomon Studio.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;vague-is-valid-contradictions-are-not&quot;&gt;Vague is valid, contradictions are not&lt;/h3&gt;
&lt;p&gt;This is the principle I am most attached to. A real conversation is full of gaps and guesses. A language that rejects every incomplete statement will never be used; a language that accepts everything is useless. So the compiler draws a different line: &lt;strong&gt;it accepts vagueness and rejects contradictions.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;invoice_agent: AIAgent&lt;/code&gt; is valid. It is vague, but it is true. The statements below are not, and the compiler says why, with the line and the reason taken straight from the ontology:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;invalid.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-gnomocode&quot;&gt;---
gnomon: 0.2.2
as_of: 2026-10
state: CURRENT
import: systems, deployment, process
---

finance_team: Team
erp: Application
invoices: Dataset
    runs_on = erp
check: Activity
    automation_level = MANUAL
    automation_level = AUTOMATED
erp: Dataset
module_a: System
    part_of = module_b
module_b: System
    part_of = module_a&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;gnomon check invalid.gnc&lt;/em&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;invalid.gnc:9:1: error inconsistency/disjoint-kinds: disjoint kinds: `erp`
invalid.gnc:11:15: error type/signature: only a system, a model or an activity can run on something: `invoices`
invalid.gnc:14:24: error inconsistency/single-value: two values of a single-valued term: `check`
invalid.gnc:17:15: error inconsistency/cycle: partOf cycle: `module_a`
invalid.gnc:19:15: error inconsistency/cycle: partOf cycle: `module_b`
invalid.gnc: blocked (5 errors, 8 warnings, 5 infos)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;the-compiler-talks-back&quot;&gt;The compiler talks back&lt;/h3&gt;
&lt;p&gt;Diagnostics have three levels. Errors block; warnings and infos pass. The useful side effect is that the missing information turns into questions. The invoice script compiles, with 11 warnings and 15 infos, and those read like the agenda for the next meeting:&lt;/p&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;The compiler says&lt;/th&gt;&lt;th&gt;The question it is asking&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;no owner: invoices&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Who owns the invoices?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;no tool: invoice_agent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;What can the agent actually do?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;where it runs is not stated: invoice_agent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Where is it hosted?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;personal data not marked: checked_invoices&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Does the output fall under GDPR too?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;a fact below the confidence threshold: erp runs on&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Is the ERP really in the cloud?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;These are the questions nobody asked at the kick-off. The same messages, with their line numbers and hints, are what the translator receives in the repair loop. In practice that is what makes a language model usable here: it gets an error it can act on, not a shrug.&lt;/p&gt;
&lt;h2 id=&quot;one-model-many-pictures&quot;&gt;One model, many pictures&lt;/h2&gt;
&lt;p&gt;A diagram is a projection of the graph, not the model itself. Gnomon draws three views of a script (architecture, process and data lineage), filters them for an audience (executives, architects, legal and compliance, security, operations) and folds them to a level of detail. A lawyer sees the personal data and where it is kept; an architect sees every part.&lt;/p&gt;
&lt;p&gt;The drawing itself is replaceable too. The same compiled graph goes to Gnomon’s own isometric canvas, to Mermaid, or to LikeC4, and nothing in the script changes:&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/renderers-light.png&quot; alt=&quot;The architecture view of the invoice script drawn three ways: on the left an isometric canvas with coloured blocks for the ERP on a cloud environment slab, the invoices, the invoice agent and the language model; top right a Mermaid flowchart; bottom right a LikeC4 diagram with coloured cards.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;4&lt;/span&gt; — The architecture view of fix-invoices.gnc, drawn by Gnomon&amp;#39;s canvas (left), Mermaid (top right) and LikeC4 (bottom right). One model, three renderers.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Each renderer makes its own choices. The canvas sets the ERP on the slab of the cloud it runs on and marks personal data with a red lock. Mermaid labels every edge. LikeC4 stacks the same edges top-down. The facts underneath are identical, which is the point: you can argue about the picture without arguing about the system.&lt;/p&gt;
&lt;p&gt;From the same graph, the rules of the ontology also recommend where an agent could take over work, ranked by effort, with the facts still missing to decide.&lt;/p&gt;
&lt;h2 id=&quot;evaluation&quot;&gt;Evaluation&lt;/h2&gt;
&lt;p&gt;I did not want to show only a demo, so I built a way to measure the translation.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/evaluation-light.png&quot; alt=&quot;Evaluation scheme: the original text goes through text2gnc to a script, then gnc2text to prose (the round trip); a hand-written golden script goes through gnc2text to prose (the ceiling); an LLM judge compares both proses with the original for coverage and faithfulness; code compares the generated graph with the golden graph for graph F1.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;5&lt;/span&gt; — The round trip: text to script to prose, judged against the original. A second path through a hand-written golden script shows what the language itself can carry.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;There are three measures. &lt;strong&gt;Coverage&lt;/strong&gt; says how much of the original the prose still says. &lt;strong&gt;Faithfulness&lt;/strong&gt; says how much of the prose the original supports. &lt;strong&gt;Graph F1&lt;/strong&gt; counts the facts two graphs share, and it is computed by code, with no model involved. The first two use a language model as a judge &lt;a href=&quot;#ref-13&quot;&gt;[13]&lt;/a&gt;: it extracts claims from a text, each with a quote of the original that code then verifies, and gives a verdict per claim.&lt;/p&gt;
&lt;p&gt;The test set is 54 texts about architectures, agent systems, data pipelines, processes and audits, all from public sources that allow reuse: 40 from the Azure Architecture Center &lt;a href=&quot;#ref-18&quot;&gt;[18]&lt;/a&gt;, 5 from the GDS Way &lt;a href=&quot;#ref-17&quot;&gt;[17]&lt;/a&gt; and 9 algorithmic transparency records of the UK government &lt;a href=&quot;#ref-19&quot;&gt;[19]&lt;/a&gt;. Each has a golden script written for it.&lt;/p&gt;
&lt;h3 id=&quot;does-it-compile&quot;&gt;Does it compile?&lt;/h3&gt;
&lt;p&gt;With Claude Sonnet 5.5 as the translator, all 54 texts ended up as scripts that compile. 29 compiled at once, 23 needed one repair round, and 2 needed two or three.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/compile-light.png&quot; alt=&quot;Stacked bar of 54 texts: 29 compiled at once, 23 after one repair round, 2 after two or three rounds; 25 texts were saved by the repair loop.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;6&lt;/span&gt; — The repair loop earns its keep: without it, nearly half of the texts would not compile.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;where-do-the-facts-go&quot;&gt;Where do the facts go?&lt;/h3&gt;
&lt;p&gt;Of 100 claims in an original text, 58 survive the round trip. The interesting part is where the other 42 go. Splitting the loss into layers shows that about 40 are lost because the language, and my golden scripts, cannot say them yet. The translator loses only 7.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/waterfall-light.png&quot; alt=&quot;Waterfall chart per 100 claims: 100 claims of the original, minus 39.6 lost by the language and the golden scripts, minus 7.0 lost by the translator, plus 4.5 gained when telling the script as prose, leaving 58.0 kept; whiskers show 95% bootstrap intervals.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;7&lt;/span&gt; — Where 100 claims of an original go. The language and the golden scripts lose about 40, the translator 7. The prose restores 4.5 that its controlled sentences do not state.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I find this the most useful result of the whole project. &lt;strong&gt;The bottleneck is the language, not the translator.&lt;/strong&gt; That is a very different to-do list from “use a bigger model”, and it tells me which words to add next.&lt;/p&gt;
&lt;h3 id=&quot;how-far-to-trust-the-judge-and-the-graph&quot;&gt;How far to trust the judge, and the graph?&lt;/h3&gt;
&lt;p&gt;Not blindly. The judge finds every claim of a text in the text itself, and 99.7 of 100 in a text with a fifth of its sentences removed. But when asked to notice the removed claims, it caught only 57 of 100. Two different judges (gpt-oss-120b and Claude Haiku 4.5) gave the same verdict on 73% of 6,054 claims, a Cohen’s kappa of 0.55, which counts as moderate &lt;a href=&quot;#ref-14&quot;&gt;[14]&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The graph measure needs no judge. Against its own golden graph, a generated graph scores an F1 of 0.56 on average; against the golden graph of a &lt;em&gt;different&lt;/em&gt; text, 0.29.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/graph-f1-light.png&quot; alt=&quot;Dot plot of 54 texts sorted by graph F1: each text has a gold dot for F1 against its own golden graph (mean 0.56) and a grey dot for F1 against the golden graph of another text (mean 0.29), joined by a thin line.&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;8&lt;/span&gt; — Each text twice: against its own golden graph (gold) and against another text&amp;#39;s (grey, the chance level). The graph is about the right text, but only about half of its facts match.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;So the graph is clearly about the right text, and only about half of its facts match. Part of that is the translator choosing different relations and levels of detail for the same fact: two translations of one text agree with each other at an F1 of 0.74. This is enough for a demo, not yet proof, and I would rather say so here than have you find out.&lt;/p&gt;
&lt;h2 id=&quot;what-it-looks-like&quot;&gt;What it looks like&lt;/h2&gt;
&lt;p&gt;All of this sits behind a local web page, Gnomon Studio: the chat on the left, the script in the middle with live diagnostics and its description in plain English, and the diagram on the right. You describe a system, a script appears, compiles or repairs itself, and the picture updates. Every later message extends the script instead of starting again.&lt;/p&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/text-to-diagram-for-ai-systems/studio.png&quot; alt=&quot;Gnomon Studio: on the left a chat where the user describes how a support team answers customer emails and then asks for an AI agent to draft the answers; in the middle 40 lines of gnomocode that compile with 5 warnings and 4 infos, with the description in plain English below; on the right an isometric diagram of the CRM on a cloud environment, the shared mailbox and the emails dataset.&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;9&lt;/span&gt; — Gnomon Studio after two messages: the chat, the script with its diagnostics and description, and the architecture view.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;conclusions&quot;&gt;Conclusions&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Everyone sees a different system.&lt;/strong&gt; This is a people problem before it is a technology problem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A shared language beats a better drawing.&lt;/strong&gt; A drawing can be nicer; only a language can be checked, diffed and versioned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The ontology carries the weight.&lt;/strong&gt; Vocabulary, rules, error messages, read-back and views all come from one place. Borrowing it from existing standards made it smaller and more trustworthy than anything I would have invented.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Let the model talk, let the compiler decide.&lt;/strong&gt; Models are excellent at turning messy words into structure and poor at being consistent. Put the determinism somewhere else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measure the layers separately.&lt;/strong&gt; “58%” alone would have told me to improve the model. Splitting the loss showed me where the loss really was.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Allow “I don’t know” in the language itself.&lt;/strong&gt; It changes what people are willing to write down.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What is next: separating the public repository (the ontology, the compiler and the studio); conventions that narrow the ways of writing one fact, since the same text still gives different scripts; words for the 40% the language cannot say yet; and the backward direction at scale, from existing code and diagrams to text.&lt;/p&gt;
&lt;p&gt;If you work on architecture descriptions, agent systems, or on making language models and rules cooperate, I would be glad to hear from you. Gnomon is also meant as a working tool for audits: mapping the processes and data of a company before anyone builds an agent for them. The &lt;a href=&quot;https://zerowithdot.com/projects/gnomon/&quot;&gt;project page&lt;/a&gt; collects the scenarios I have translated so far.&lt;/p&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ol class=&quot;references&quot;&gt;&lt;li id=&quot;ref-1&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/rdf11-concepts/&quot;&gt;RDF 1.1 Concepts and Abstract Syntax&lt;/a&gt;, Recommendation, 25 February 2014.&lt;/li&gt;&lt;li id=&quot;ref-2&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/prov-o/&quot;&gt;PROV-O: The PROV Ontology&lt;/a&gt;, Recommendation, 30 April 2013.&lt;/li&gt;&lt;li id=&quot;ref-3&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/skos-reference/&quot;&gt;SKOS Simple Knowledge Organization System Reference&lt;/a&gt;, Recommendation, 18 August 2009.&lt;/li&gt;&lt;li id=&quot;ref-4&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/vocab-dcat-3/&quot;&gt;Data Catalog Vocabulary (DCAT), Version 3&lt;/a&gt;, Recommendation, 22 August 2024.&lt;/li&gt;&lt;li id=&quot;ref-5&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/shacl/&quot;&gt;Shapes Constraint Language (SHACL)&lt;/a&gt;, Recommendation, 20 July 2017.&lt;/li&gt;&lt;li id=&quot;ref-6&quot;&gt;W3C, &lt;a href=&quot;https://www.w3.org/TR/owl2-overview/&quot;&gt;OWL 2 Web Ontology Language Document Overview (Second Edition)&lt;/a&gt;, Recommendation, 11 December 2012.&lt;/li&gt;&lt;li id=&quot;ref-7&quot;&gt;Data Privacy Vocabularies and Controls Community Group, &lt;a href=&quot;https://w3id.org/dpv/&quot;&gt;Data Privacy Vocabulary (DPV)&lt;/a&gt;, W3C Community Group report.&lt;/li&gt;&lt;li id=&quot;ref-8&quot;&gt;&lt;a href=&quot;https://qudt.org/&quot;&gt;QUDT&lt;/a&gt;, Quantities, Units, Dimensions and Types.&lt;/li&gt;&lt;li id=&quot;ref-9&quot;&gt;&lt;a href=&quot;https://schema.org/&quot;&gt;Schema.org&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-10&quot;&gt;S. Brown, &lt;a href=&quot;https://c4model.com/&quot;&gt;The C4 model&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-11&quot;&gt;Object Management Group, &lt;a href=&quot;https://www.omg.org/spec/SysML/2.0/About-SysML&quot;&gt;Systems Modeling Language (SysML) 2.0&lt;/a&gt;, 2025.&lt;/li&gt;&lt;li id=&quot;ref-12&quot;&gt;&lt;a href=&quot;https://pydantic.dev/docs/&quot;&gt;Pydantic documentation&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-13&quot;&gt;L. Zheng et al., &lt;a href=&quot;https://arxiv.org/abs/2306.05685&quot;&gt;Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena&lt;/a&gt;, NeurIPS 2023 Datasets and Benchmarks Track.&lt;/li&gt;&lt;li id=&quot;ref-14&quot;&gt;J. R. Landis, G. G. Koch, &lt;a href=&quot;https://doi.org/10.2307/2529310&quot;&gt;The Measurement of Observer Agreement for Categorical Data&lt;/a&gt;, Biometrics 33(1), 1977, pp. 159–174.&lt;/li&gt;&lt;li id=&quot;ref-15&quot;&gt;&lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;Model Context Protocol&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-16&quot;&gt;&lt;a href=&quot;https://a2a-protocol.org/&quot;&gt;Agent2Agent (A2A) Protocol&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-17&quot;&gt;Government Digital Service, &lt;a href=&quot;https://gds-way.digital.cabinet-office.gov.uk/standards/user-support.html&quot;&gt;How GDS provides user support&lt;/a&gt;, The GDS Way, Open Government Licence v3.0.&lt;/li&gt;&lt;li id=&quot;ref-18&quot;&gt;Microsoft, &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/&quot;&gt;Azure Architecture Center&lt;/a&gt;, CC BY 4.0.&lt;/li&gt;&lt;li id=&quot;ref-19&quot;&gt;GOV.UK, &lt;a href=&quot;https://www.gov.uk/algorithmic-transparency-records&quot;&gt;Algorithmic transparency records&lt;/a&gt;, Open Government Licence v3.0.&lt;/li&gt;&lt;li id=&quot;ref-20&quot;&gt;&lt;a href=&quot;https://github.com/lark-parser/lark&quot;&gt;Lark&lt;/a&gt;, a parsing toolkit for Python, MIT licence; &lt;a href=&quot;https://lark-parser.readthedocs.io/&quot;&gt;documentation&lt;/a&gt;.&lt;/li&gt;&lt;li id=&quot;ref-21&quot;&gt;&lt;a href=&quot;https://github.com/RDFLib/rdflib&quot;&gt;rdflib&lt;/a&gt;, a Python library for working with RDF.&lt;/li&gt;&lt;li id=&quot;ref-22&quot;&gt;&lt;a href=&quot;https://github.com/RDFLib/pySHACL&quot;&gt;pySHACL&lt;/a&gt;, a SHACL validator in Python.&lt;/li&gt;&lt;/ol&gt;</content:encoded><category>gnomon</category><category>dsl</category><category>lark</category><category>ontology</category><category>llm</category><category>solution-architecture</category><category>ai-agents</category><category>evaluation</category><category>python</category><category>AI-for-AI</category><author>Oleg Żero</author></item><item><title>GPT-6 Astra&apos;s impact on CAD</title><link>https://zerowithdot.com/blog/gpt-6-astra-impact-on-cad/</link><guid isPermaLink="true">https://zerowithdot.com/blog/gpt-6-astra-impact-on-cad/</guid><description>What GPT-6 Astra actually changes in CAD work: the benchmarks read against their own fine print, and what holds up in architecture, mechanical design and PCB layout.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I get uneasy when every new model release arrives with an AGI announcement attached. In engineering the bar sits somewhere else: things either work or they don’t, and when they don’t, it gets expensive, and occasionally it gets dangerous. So one distinction is worth holding on to. “It looks like it did the job” is not the same as “it did the job”.&lt;/p&gt;
&lt;p&gt;AI is evolving quickly and will probably keep evolving. But a model release adds options. It does not, on its own, decide whether a class of engineers gets replaced. My guess runs the other way: they will be needed more.&lt;/p&gt;
&lt;p&gt;This article asks a narrow question: what does Astra actually change in CAD-related work? The situation is fresh, since the model was released very recently, and I treat the evidence accordingly. I look at three areas that match my own interests: architecture, product design, electronics and hardware. Everything outside them is out of scope here. For each area I collected references to projects where people tried the model in practice and set them next to the official releases, then added my own reading of where we stand given current experience and understanding. If only one of those domains interests you, jump straight to it.&lt;/p&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;danger&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;A warning about the evidence base&lt;/p&gt;&lt;p&gt;Almost every “test” published so far is either an OpenAI demo or a quick proof of concept from a passionate engineer or blogger. As of writing this article (10th September 2026), we still need to wait for proper production deployments to see.&lt;/p&gt;&lt;/aside&gt;
&lt;h2 id=&quot;what-astra-is-and-what-it-is-not&quot;&gt;What Astra is and what it is not&lt;/h2&gt;
&lt;p&gt;GPT-6 Astra is OpenAI’s general multimodal model, released on 2026-09-03 under the model ID &lt;code&gt;gpt-6-astra&lt;/code&gt;. It is proprietary: there are no open weights, and the only way in is the API (&lt;a href=&quot;https://developers.openai.com/api/docs/models/gpt-6-astra&quot;&gt;API documentation&lt;/a&gt;). The context window is about 1 050 000 tokens, max output 128 000, and the knowledge cutoff is 2026-04-30 (&lt;a href=&quot;https://scalevise.com/resources/openai-gpt-6-astra-rollout-pricing-api-access/&quot;&gt;scalevise&lt;/a&gt;). It is available through the OpenAI API, ChatGPT Pro/Business/Enterprise, Microsoft Azure Foundry and AWS Bedrock (&lt;a href=&quot;https://azure.microsoft.com/en-us/blog/gpt-6-astra-frontier-intelligence-for-work-now-generally-available-in-microsoft-foundry/&quot;&gt;Azure&lt;/a&gt;). One parameter matters more than the rest for anything agentic: &lt;code&gt;reasoning.effort&lt;/code&gt;, which runs from low to max. Going from low to max costs roughly 10× more and takes roughly 8× longer (&lt;a href=&quot;https://artificialanalysis.ai/models/gpt-6-astra/providers&quot;&gt;Artificial Analysis&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;One naming note, because it otherwise wastes time. This is not Google Project Astra, which is a completely different product: a multimodal assistant in Gemini Live. The shared name clutters every search (&lt;a href=&quot;https://www.androidcentral.com/apps-software/ai/project-astra&quot;&gt;Android Central&lt;/a&gt;).&lt;/p&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;Astra is not a CAD model&lt;/p&gt;&lt;p&gt;It is a general model that writes code and operates a computer. Everything it does in CAD, it does through code (Python, &lt;code&gt;CadQuery&lt;/code&gt;, &lt;code&gt;bpy&lt;/code&gt;) or by clicking in a GUI. That has consequences for everything below.&lt;/p&gt;&lt;/aside&gt;
&lt;p&gt;Multimodality does not change the mechanism underneath. Astra’s understanding of a problem, of space, of an engineering task rests on the classic LLM machinery: a context window, tools, and a large number of parameters. Its ability to work with CAD tools comes down to two things: understanding what is displayed on the screen, and formulating the code that goes through the API.&lt;/p&gt;
&lt;h2 id=&quot;benchmarks&quot;&gt;Benchmarks&lt;/h2&gt;
&lt;h3 id=&quot;what-they-say&quot;&gt;What they say&lt;/h3&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/gpt-6-astra-impact-on-cad/benchcad-light.png&quot; alt=&quot;BenchCAD Vision2Code scores: Astra 95.9%, Claude Fable 5.1 84.3%, GPT-5.6 Sol 83.3%&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;1&lt;/span&gt; — &lt;p&gt;BenchCAD Vision2Code, September 2026. Every one of these numbers was submitted by the vendor that scored it. Data: &lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;benchcad.com/leaderboard&lt;/a&gt;. Chart: author’s own.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;script type=&quot;module&quot; src=&quot;https://zerowithdot.com/home/runner/work/zerowithdot-website-ai4cad/zerowithdot-website-ai4cad/src/components/brand/Figure.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;The loudest voice regarding CAD is BenchCAD: a benchmark from May 2026, authored at the University of Virginia (Zhang, Liu, Chen, Li, Yang, Peng, Chen). It holds 17 900 execution-verified CadQuery programs across 106 families of industrial parts, with parameters tied to 47 standards (ISO/DIN/EN/ASME/IEC) (&lt;a href=&quot;https://arxiv.org/abs/2605.10865&quot;&gt;arXiv 2605.10865&lt;/a&gt;, &lt;a href=&quot;https://github.com/BenchCAD/BenchCAD-main&quot;&gt;GitHub&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What it measures: the main metric is Voxel IoU at 256³ resolution, plus Chamfer Distance, Hausdorff Distance and Feature-F1. The tasks are Vision2Code, CodeEdit, Vision-QA and Code-QA. Scoring is execution-grounded, computed by a CAD kernel rather than an LLM judge. That is a good construction (&lt;a href=&quot;https://arxiv.org/html/2605.10865v1&quot;&gt;arXiv&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It also deserves credit for going past visual similarity. This benchmark tests parametric operations such as sweep, loft, twist, not to mention sketch+extrude. And here is how Astra compares to other models: Astra &lt;strong&gt;95.9%&lt;/strong&gt;, Claude Fable 5.1 84.3%, GPT-5.6 Sol 83.3%. If you’d like to know more, here is the link to the &lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;BenchCAD leaderboard&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;what-they-dont-say&quot;&gt;What they don’t say&lt;/h3&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/gpt-6-astra-impact-on-cad/harness-light.png&quot; alt=&quot;ARC-AGI-3: 62.7% on the ARC Prize harness versus 99.9% on OpenAI&apos;s own harness&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;2&lt;/span&gt; — &lt;p&gt;The same model on the same benchmark, 37.2 points apart, because of two API settings. Data: &lt;a href=&quot;https://arcprize.org/blog/astra&quot;&gt;ARC Prize&lt;/a&gt; and &lt;a href=&quot;https://openai.com/index/how-two-settings-tripled-our-arc-agi-3-scores/&quot;&gt;OpenAI&lt;/a&gt;. Chart: author’s own.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The result is, so far, self-reported and not independently verified. The BenchCAD leaderboard explicitly distinguishes results “re-graded from submitted predictions” from “vendor self-reported voxel IoU, not re-graded”. Both OpenAI’s 95.9% and Anthropic’s 84.3% fall into the second category (&lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;leaderboard&lt;/a&gt;, confirmed by direct check).&lt;/p&gt;
&lt;p&gt;Furthermore, the result applies to the model operating as an agent, one that can render, measure and make corrections before answering. So far, nobody has published a study of how it performs there (&lt;a href=&quot;https://thenewstack.io/openai-gpt6-astra-benchmarks/&quot;&gt;The New Stack&lt;/a&gt;, &lt;a href=&quot;https://www.vellum.ai/blog/gpt-6-astra-benchmarks-explained&quot;&gt;Vellum&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;A high IoU metric does not guarantee that a designed part is error free. The BenchCAD team themselves report an example of a part whose geometric similarity reached 96.1% despite being faulty: a follow-up operation closed an opening which was supposed to be left open (&lt;a href=&quot;https://www.ibtimes.co.uk/openai-gpt6-astra-ai-design-tool-1818412&quot;&gt;IBTimes&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Finally, what is compared is not always “apples to apples”. To give you the context, here are some other benchmarks.&lt;/p&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Benchmark&lt;/th&gt;&lt;th&gt;Astra&lt;/th&gt;&lt;th&gt;Predecessor / rival&lt;/th&gt;&lt;th&gt;Source&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BenchCAD Vision2Code&lt;/td&gt;&lt;td&gt;95.9%&lt;/td&gt;&lt;td&gt;Sol 83.3% · Fable 5.1 84.3%&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;leaderboard&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OSWorld 2.0 (computer use)&lt;/td&gt;&lt;td&gt;72.6%&lt;/td&gt;&lt;td&gt;Sol 65.7%&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://officechai.com/ai/gpt-6-astra-benchmarks/&quot;&gt;officechai&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPQA Diamond&lt;/td&gt;&lt;td&gt;96.0%&lt;/td&gt;&lt;td&gt;Sol 94.6% · Gemini 3.8 95.3%&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://www.vellum.ai/blog/gpt-6-astra-benchmarks-explained&quot;&gt;vellum&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FrontierMath Tier 4 v2&lt;/td&gt;&lt;td&gt;97.6%&lt;/td&gt;&lt;td&gt;Fable 5.1 87.8%&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://officechai.com/ai/gpt-6-astra-benchmarks/&quot;&gt;officechai&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Humanity’s Last Exam&lt;/td&gt;&lt;td&gt;57.2%&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Fable 5.1 65.0%, Astra loses&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://emergent.sh/learn/gpt-6-astra-benchmarks&quot;&gt;emergent.sh&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ARC-AGI-3&lt;/td&gt;&lt;td&gt;62.7% (ARC harness) vs &lt;strong&gt;99.9% (OpenAI harness)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://arcprize.org/blog/astra&quot;&gt;ARC Prize&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;How to read the numbers?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ARC-AGI-3 is the textbook example of how to read numbers like these.&lt;/strong&gt; The same Astra, the same attempt: 62.7% on the standard ARC Prize harness and 99.9% on OpenAI’s own harness. The 37-point difference comes from two API settings (“retained reasoning” and “compaction”) that OpenAI did not disclose in the main announcement (&lt;a href=&quot;https://arcprize.org/blog/astra&quot;&gt;ARC Prize&lt;/a&gt;, &lt;a href=&quot;https://openai.com/index/how-two-settings-tripled-our-arc-agi-3-scores/&quot;&gt;OpenAI&lt;/a&gt;, &lt;a href=&quot;https://thenewstack.io/astra-arc-agi-benchmark/&quot;&gt;The New Stack&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independent measurement is less enthusiastic.&lt;/strong&gt; On the Artificial Analysis Intelligence Index: Astra 61.2, GPT-5.6 Sol 60.9, Claude Fable 5.1 &lt;strong&gt;65.7, higher than Astra&lt;/strong&gt;. Astra is 2.5× more expensive than Sol, and the total cost per task is about 75% higher (&lt;a href=&quot;https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra&quot;&gt;Artificial Analysis&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenAI’s system card has no section on CAD, 3D or geometry.&lt;/strong&gt; It focuses on safety. There is also no public model card with architecture and training data (&lt;a href=&quot;https://deploymentsafety.openai.com/gpt-6-astra&quot;&gt;deploymentsafety.openai.com&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;key-takeaway&quot;&gt;Key takeaway&lt;/h3&gt;
&lt;p&gt;The jump on BenchCAD is real and large (+12.6 pp over the predecessor), but it is a jump in &lt;strong&gt;generating CAD code from views in a loop with tools&lt;/strong&gt;, confirmed by the vendor alone. That is something other than “the model understands design”.&lt;/p&gt;
&lt;p&gt;So let’s dive in to see how well it does in specific engineering areas.&lt;/p&gt;
&lt;h2 id=&quot;architecture-and-bim&quot;&gt;Architecture and BIM&lt;/h2&gt;
&lt;h3 id=&quot;capabilities-demonstrated-so-far&quot;&gt;Capabilities demonstrated so far&lt;/h3&gt;
&lt;p&gt;OpenAI’s official demo, verified directly, runs from an architectural brief to an editable Blender scene to a walkthrough in Unreal Engine 5. Astra writes scripts through the &lt;strong&gt;Blender Python API (&lt;code&gt;bpy&lt;/code&gt;)&lt;/strong&gt; and also opens and inspects the scene through computer use (&lt;a href=&quot;https://developers.openai.com/blog/architectural-visualization-with-astra&quot;&gt;OpenAI Developers&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;What OpenAI admits in that same demo is worth reading closely; the quotes below are verified. The geometry consists of &lt;strong&gt;“modeled mesh objects”&lt;/strong&gt;: meshes, not a parametric model. Pillows and bedding are “authored shapes”, chosen so that nobody has to run a cloth simulation. “Some shader behavior was approximated”, so the look needed manual inspection. Mirrors in Unreal show reflection artifacts. And the closing caveat is OpenAI’s own: &lt;strong&gt;“the concept plan still needs professional review of the site, structure, and building requirements before it could inform construction”&lt;/strong&gt;. What OpenAI did &lt;strong&gt;not&lt;/strong&gt; publish is execution time or token cost. I checked directly; those numbers are not there.&lt;/p&gt;
&lt;p&gt;Outside the vendor demo the picture is mixed. A reconstruction of the Palace of Fine Arts in Blender holds architectural detail against the reference photos (&lt;a href=&quot;https://github.com/magiccreator-ai/awesome-gpt-6-astra&quot;&gt;X/tomkrcha, via awesome-gpt-6-astra&lt;/a&gt;). A pavilion test (courtyard, plinth, three walls, colonnade, roof) produced &lt;strong&gt;6 columns on one run and 11 on another&lt;/strong&gt;, so the model does not consistently hold a specified number of elements (&lt;a href=&quot;https://blendermcp.org/guides/astra-blender&quot;&gt;blendermcp.org&lt;/a&gt;). And three hours of work on a house model with interior layout ended with &lt;strong&gt;wardrobes turning into windows&lt;/strong&gt; and a manual correction (&lt;a href=&quot;https://www.lennysnewsletter.com/p/gpt-6-astra-is-a-banger-heres-everything&quot;&gt;Lenny’s Newsletter&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;what-is-not-quite-there-yet&quot;&gt;What is not quite there yet&lt;/h3&gt;
&lt;p&gt;As I mentioned earlier, the “understanding” of CAD is largely based on reasoning over existing CAD tools’ APIs and utilising MCP servers and plugins, whenever they exist. For Revit, Autodesk has officially stated that the Revit 2027 MCP server is to be integrated with Autodesk Assistant and supports an arbitrary MCP-compatible LLM.&lt;/p&gt;
&lt;p&gt;Until then there is the community layer: RevitCortex (&lt;a href=&quot;https://github.com/LuDattilo/RevitCortex&quot;&gt;github.com/LuDattilo/RevitCortex&lt;/a&gt;) with 173 tools, Revit 2023–2027, supporting Claude/Codex/Gemini and any MCP client; revit-mcp-server from the same author, with 80+ tools; and revit_mcp (PiggyAndrew) plus RevitMCP (oakplank, pyRevit).&lt;/p&gt;
&lt;p&gt;Although none of these projects explicitly mentions GPT-6 Astra, they act via the MCP standard, so there is no reason to assume that Astra would, for some reason, be excluded. This means more powerful assistance, fewer mistakes, an accelerated workflow, but not necessarily less time spent.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;First of all, BenchCAD tests the code. It does not, however, deal with regulatory issues, quality control, clash detection or code-checking. To realise a complete BIM project, dozens of steps beside drawing exist, executed by entire teams and departments. Given just a few days, it is natural that no complete and fully Astra-based project has been executed and documented. Despite a more powerful model, these steps are not eliminated, and any mistake that can inevitably happen has to be found and corrected. &lt;a href=&quot;https://parametric-architecture.com/gpt-6-astra-ai-architecture-workflows/&quot;&gt;Parametric-architecture&lt;/a&gt; describes an “architect’s workflow with Astra”, but it is a speculative scenario (“at 9&lt;/p&gt;&lt;div&gt;&lt;/div&gt; the designer opens…”), so it is safer to treat that kind of AI-based work as marketing content rather than engineering truth.&lt;p&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-existed-before-astra-and-continues-to-exist&quot;&gt;What existed before Astra and continues to exist&lt;/h3&gt;
&lt;p&gt;Just for the reference, let me present a few tools that have already been developed and offer commercial help in the CAD process for architecture. These dedicated tools are more mature and BIM-native.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autodesk Forma&lt;/strong&gt; covers the early phase: massing options, wind/sun/noise analysis, embodied carbon (&lt;a href=&quot;https://blogs.autodesk.com/forma/2025/04/24/how-to-use-generative-design-ai-and-3d-modeling-for-improved-site-planning/&quot;&gt;Autodesk&lt;/a&gt;). &lt;strong&gt;Finch3D&lt;/strong&gt; generates floor plans from massing and integrates natively with Rhino/Grasshopper/Revit at €49–1000/month, without structural or MEP coordination and without construction documentation (&lt;a href=&quot;https://illustrarch.com/articles/75056-finch3d-review.html&quot;&gt;illustrarch&lt;/a&gt;). &lt;strong&gt;WiseBIM&lt;/strong&gt; turns PDF/CAD/image input into a native Revit model for $29/month (&lt;a href=&quot;https://www.myarchitectai.com/blog/ai-tools-for-architects-and-interior-designers&quot;&gt;myarchitectai&lt;/a&gt;). &lt;strong&gt;Glyph&lt;/strong&gt; is a Revit plugin driving sheets, tagging and dimensioning with natural-language commands, at $600/year.&lt;/p&gt;
&lt;p&gt;Clash detection has mature non-AI solutions: &lt;a href=&quot;https://github.com/louistrue/ifcclash&quot;&gt;ifcclash&lt;/a&gt; (IfcOpenShell, AGPL-3.0) and &lt;a href=&quot;https://github.com/Kennystruct/Clash-Detection-Matrix-Automation&quot;&gt;Clash-Detection-Matrix-Automation&lt;/a&gt;. &lt;strong&gt;ArchiCAD 29 beta ships a built-in AI Assistant&lt;/strong&gt;, but it cannot do numerical analysis (average heights, counting); it only filters and describes elements, with MCP announced for after release (&lt;a href=&quot;https://architosh.com/2026/02/product-review-archicad-29-with-ai-assistant-beta/&quot;&gt;Architosh&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The manual baseline is worth keeping in view: LOD 200 (plans, roof, walls, windows) takes 5–10 working days, LOD 300 two to three weeks, LOD 350 with structure and MEP three to five weeks (&lt;a href=&quot;https://www.cadcrowd.com/blog/what-is-the-typical-timeline-for-completing-freelance-cad-or-rendering-projects/&quot;&gt;CAD Crowd&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;entry-level-shifting&quot;&gt;Entry level shifting&lt;/h3&gt;
&lt;p&gt;Again, so little time has passed since the release of the model that it is hard to find professional documented cases that would tell the real price of tokens consumed. For reference, a rough calculation: at 10 million input tokens per day with a 70% cache hit rate, the bill lands around $4110/month (Sol: $1644) (&lt;a href=&quot;https://www.yottalabs.ai/post/gpt-6-astra-pricing-api-cost-2026&quot;&gt;Yotta Labs&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Three integration paths, ordered from the easiest:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Python + &lt;code&gt;bpy&lt;/code&gt; / IfcOpenShell.&lt;/strong&gt; The fastest one: the model writes the script, you run it. It requires nothing beyond an API key. &lt;strong&gt;My read: this is the realistic entry threshold today.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responses API + MCP.&lt;/strong&gt; For Rhino/Grasshopper a proof of concept exists (&lt;a href=&quot;https://lobehub.com/mcp/xunliudesign-rhino-gh-mcp&quot;&gt;Rhino/GH MCP v0.1.6&lt;/a&gt;); &lt;strong&gt;for Revit it does not&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Computer use (driving the Revit GUI).&lt;/strong&gt; Works without an API, but slow and brittle.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is also a regulatory blocker that is easy to miss: Astra has no compliance certification (HIPAA, SOC 2), no built-in audit logging, no legal hold and no data retention controls. For a design office working on client documentation, that is a problem in itself (&lt;a href=&quot;https://layer3labs.io/guides/gpt-6-astra-review&quot;&gt;layer3labs&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&quot;product-design-and-mechanical-cad&quot;&gt;Product Design and Mechanical CAD&lt;/h2&gt;
&lt;h3 id=&quot;capabilities-demonstrated-so-far-1&quot;&gt;Capabilities demonstrated so far&lt;/h3&gt;
&lt;p&gt;The AI gateway to CAD is the code. So far this is &lt;code&gt;CadQuery&lt;/code&gt;, &lt;code&gt;build123d&lt;/code&gt;, &lt;code&gt;OpenSCAD&lt;/code&gt;, &lt;code&gt;KCL&lt;/code&gt;: the model writes Python, the CAD kernel executes. This is where the whole BenchCAD result lies. The key difference is the feedback loop that lets the model verify its own results. &lt;code&gt;build123d-mcp&lt;/code&gt; raises the CADGenBench score from 0.360 to 0.457, and the share of correct models from 88% to &lt;strong&gt;100%&lt;/strong&gt;, purely because the model sees a render of what it built and corrects it (&lt;a href=&quot;https://github.com/pzfreo/build123d-mcp&quot;&gt;build123d-mcp&lt;/a&gt;).&lt;/p&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;My take on this&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This is the single most important technical observation in the whole research.&lt;/strong&gt; The value does not sit in the model itself as much as it is related to the model - kernel - render loop.&lt;/p&gt;&lt;/aside&gt;
&lt;p&gt;A few things stand around it. &lt;strong&gt;OpenSCAD comes out better than build123d for LLMs&lt;/strong&gt; at plain generation: about 3 errors versus 40 (33 with help), so 3–4× fewer repair loops, because the syntax is simpler (&lt;a href=&quot;https://grandpacad.com/en/blog/openscad-vs-cadquery-vs-build123d&quot;&gt;grandpacad&lt;/a&gt;). &lt;strong&gt;Onshape has an official MCP server&lt;/strong&gt; for FeatureScript since 2026-08-13, with Claude/ChatGPT/Gemini generating FeatureScript code (&lt;a href=&quot;https://www.ptc.com/en/news/2026/onshape-launches-featurescript-mcp-server&quot;&gt;PTC&lt;/a&gt;). &lt;strong&gt;FreeCAD MCP&lt;/strong&gt; exists in several independent open source implementations, free of charge; it handles primitives, booleans and patterns, and does &lt;strong&gt;noticeably worse with constrained sketches and fillet chains&lt;/strong&gt; (&lt;a href=&quot;https://github.com/sandraschi/freecad-mcp&quot;&gt;freecad-mcp&lt;/a&gt;, &lt;a href=&quot;https://mcp.directory/blog/freecad-mcp-complete-guide-2026&quot;&gt;mcp.directory&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;what-is-not-quite-there-yet-1&quot;&gt;What is not quite there yet&lt;/h3&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/gpt-6-astra-impact-on-cad/assemcad.png&quot; alt=&quot;Simple parts succeed, constrained assemblies fail: missing mounting holes, misaligned hinge leaves, missing pin, interference&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;3&lt;/span&gt; — &lt;p&gt;Every closed-source model handles the single block. None handles the hinge assembly: missing mounting holes, misaligned leaves, a missing pin, parts that interfere or come apart. Figure from &lt;a href=&quot;https://arxiv.org/abs/2607.05123&quot;&gt;ASSEMCAD&lt;/a&gt;, CC BY 4.0 — the lower band is the authors’ own method, so read the upper band for the evidence.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This is the heart of the question “does it understand design”. The answer is: not in the places where it hurts. The evidence, all peer-reviewed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Assembly constraints.&lt;/strong&gt; The LLM generates code bolting screws into gear meshes and creates “phantom features” in places where an operation failed. When satisfying constraints it hallucinates edges that do not exist, which cascades into logical errors, even with a complete set of input data. The authors state it outright: this is a &lt;strong&gt;limitation of the transformer architecture&lt;/strong&gt;, not a gap in knowledge (&lt;a href=&quot;https://arxiv.org/html/2607.05123&quot;&gt;ASSEMCAD, arXiv 2607.05123&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coordinate systems and face selection.&lt;/strong&gt; A milled feature in the wrong reference frame, a stale local face selection, holes shifted, components piled up at the origin: &lt;strong&gt;invisible at the level of the code, fatal in the CAD kernel&lt;/strong&gt; (&lt;a href=&quot;https://arxiv.org/pdf/2508.00843&quot;&gt;arXiv 2508.00843&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tolerances and GD&amp;amp;T.&lt;/strong&gt; The model can &lt;em&gt;read&lt;/em&gt; a standard, but not infer its consequences. A full GD&amp;amp;T evaluation for LLMs &lt;strong&gt;does not exist as a public benchmark&lt;/strong&gt;, which makes it a gap, not a result.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design intent.&lt;/strong&gt; The 96.1% IoU case with the closed opening, quoted above, is exactly this class of error.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DFM/DFA.&lt;/strong&gt; Draft angles, wall thicknesses, pocket depths, undercuts, assembly order: parts look good and cannot be made.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To give you more context: a benchmark from April 2026 recorded &lt;strong&gt;10 professional design engineers (8–13 years of experience)&lt;/strong&gt; at work and captured their natural change requests, giving 192 requests, 384 edits and 28.4 hours of work (&lt;a href=&quot;https://arxiv.org/abs/2604.16170&quot;&gt;arXiv 2604.16170&lt;/a&gt;). &lt;strong&gt;The best model (GPT-5.2) landed 53 percentage points below the experts&lt;/strong&gt; in a human acceptance test (verified). One caution against over-reading it: &lt;strong&gt;the paper is from April, Astra is not in it and cannot be.&lt;/strong&gt; Verified directly. It shows how deep the gap was just before Astra, not how deep it is now — and the version of this figure that circulates with Astra’s name attached to it is one of the claims I throw out further down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My read: the absence of an Astra result on neuralCAD-Edit is itself information.&lt;/strong&gt; OpenAI shows BenchCAD, which is generation from scratch out of views. Editing an existing model according to an engineer’s intent, it does not show. And the second one is closer to a design engineer’s real work.&lt;/p&gt;
&lt;h3 id=&quot;what-existed-before-astra-and-continues-to-exist-1&quot;&gt;What existed before Astra and continues to exist&lt;/h3&gt;
&lt;p&gt;Again, a few reference examples that show the capability level prior to Astra.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;cadrille&lt;/strong&gt; (ICLR 2026): DeepCAD IoU 92.2, Fusion360 84.6, share of invalid outputs below 0.2%, from a 2B-parameter model on Qwen2-VL (&lt;a href=&quot;https://arxiv.org/html/2505.22914&quot;&gt;arXiv 2505.22914&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CAD-Recode&lt;/strong&gt;: a fine-tune of Qwen2-1.5B on 1 million scripts, 10× better than its predecessors (&lt;a href=&quot;https://arxiv.org/pdf/2412.14042&quot;&gt;arXiv 2412.14042&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backflip AI&lt;/strong&gt; (August 2026): scan/mesh to editable CAD with a feature tree. &lt;strong&gt;Digitizing a part drops from about $1500 to about $10, and the time to 1–5 minutes&lt;/strong&gt;, as an add-in for Fusion 360, with automotive deployments. It is optimized for turned and 3-axis milled parts, not universal (&lt;a href=&quot;https://3dprintingindustry.com/news/backflip-ai-cuts-part-digitization-from-1500-to-10-with-new-cad-foundation-model-253596/&quot;&gt;3D Printing Industry&lt;/a&gt;, &lt;a href=&quot;https://www.businesswire.com/news/home/20260803007022/en/Backflip-AI-Launches-CAD-Copilot-That-Transforms-3D-Scans-Into-Engineer-Quality-Editable-CAD-Models&quot;&gt;BusinessWire&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SolidWorks 2026&lt;/strong&gt;: BREP to parametric conversion (beta), PDF drawing to 3D part (beta), 255+ commands in natural language (&lt;a href=&quot;https://www.solidworks.com/solution/how-ai-is-augmenting-cad-tools-better-product-design&quot;&gt;SolidWorks&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The research direction that works&lt;/strong&gt; is grounding in a solver: Embodied CAD (&lt;a href=&quot;https://arxiv.org/abs/2606.31252&quot;&gt;arXiv 2606.31252&lt;/a&gt;), AIDL (&lt;a href=&quot;https://arxiv.org/pdf/2502.09819&quot;&gt;arXiv 2502.09819&lt;/a&gt;), ASSEMCAD. All of them say the same thing: an LLM plus a verifying solver, not an LLM alone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The manual baseline:&lt;/strong&gt; a simple part takes 3–5 working days; a sand casting study (part, pattern, cavity, simulation) 20–40 hours. Freelance rates in the US run $75–130/h (&lt;a href=&quot;https://www.cadcrowd.com/blog/how-much-does-it-cost-to-hire-a-freelance-cad-designer-or-3d-modeler-for-business-in-2026/&quot;&gt;CAD Crowd&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;hardware-and-pcb-design&quot;&gt;Hardware and PCB Design&lt;/h2&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/gpt-6-astra-impact-on-cad/pcb-light.png&quot; alt=&quot;PCB layout: 428 hours down to 38.5, but 168 design-rule violations against zero&quot; data-theme-img=&quot;light&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;4&lt;/span&gt; — &lt;p&gt;One PCB project. The drafting time collapses; the verification burden does not. Data: &lt;a href=&quot;https://app.stationx.net/articles/ai-pcb-design&quot;&gt;Station X&lt;/a&gt;. Chart: author’s own.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;This area has by far the best documented criticism from all three areas. To discuss it, let’s discriminate three levels, as they differ rather significantly.&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Level&lt;/th&gt;&lt;th&gt;State&lt;/th&gt;&lt;th&gt;Evidence&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Schematic + component selection&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Works best&lt;/td&gt;&lt;td&gt;prompt → editable schematic with real parts in minutes, &lt;a href=&quot;https://www.protoflow.ai/blog/ai-pcb-design-2026-guide&quot;&gt;protoflow&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Placement + routing&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Weak, geometry hurts&lt;/td&gt;&lt;td&gt;see below&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DRC / manufacturing / Gerber&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Stays with deterministic tools&lt;/td&gt;&lt;td&gt;”deterministic rule checkers must make the final call”, &lt;a href=&quot;https://www.protoflow.ai/blog/ai-pcb-design-2026-guide&quot;&gt;protoflow&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;lets-start-with-a-few-failures&quot;&gt;Let’s start with a few failures&lt;/h3&gt;
&lt;p&gt;All four come from one project, documented by Nathan House in &lt;a href=&quot;https://app.stationx.net/articles/ai-pcb-design&quot;&gt;&lt;em&gt;AI PCB Design: My AI Tried to Make Itself Physical&lt;/em&gt;&lt;/a&gt;. His numbers, his words in quotation marks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The AI placed a via 0.0285 mm from an LED solder pad&lt;/strong&gt; — “a copper via I had placed 0.0285 millimetres from an LED pad”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The AI board: 168 design rule violations. The human board: 0.&lt;/strong&gt; “The AI’s had 168 design-rule violations. The human’s board had zero”.&lt;/li&gt;
&lt;li&gt;Courtyard zone collisions: two components placed “a comfortable-looking distance apart” that violated their keep-out boundaries twice.&lt;/li&gt;
&lt;li&gt;The same project: &lt;strong&gt;a 428-hour layout came down to about 38.5 hours of human input&lt;/strong&gt;, roughly 11× less human time — but with those 168 violations left to fix.&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;Observation&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This is the honest picture.&lt;/strong&gt; A dramatic speed-up of the first approximation, plus a shift of the work onto verification. Not “AI designed the board”.&lt;/p&gt;&lt;/aside&gt;
&lt;h3 id=&quot;what-has-been-proven&quot;&gt;What has been proven&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI claims that Astra carries out placement and routing in KiCad, from schematic to a finished board (&lt;a href=&quot;https://openai.com/index/gpt-6-astra/&quot;&gt;OpenAI&lt;/a&gt;), with a thread about it on the &lt;a href=&quot;https://forum.kicad.info/t/open-ai-claims-gpt-6-astra-can-make-pcb-boards/71487&quot;&gt;KiCad forum&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Astra has NO EEBench result.&lt;/strong&gt; The circulating figure of 69.3% is false. The EEBench blog says plainly &lt;em&gt;“We do not have a GPT-6 Astra result yet”&lt;/em&gt;. The leader is &lt;strong&gt;Claude Opus 5 at 61.6%&lt;/strong&gt; (as of 2026-09-01) (&lt;a href=&quot;https://eebench.org/blog/can-ai-design-circuit-boards-yet/&quot;&gt;EEBench&lt;/a&gt;, verified).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A conflict of interest around EEBench:&lt;/strong&gt; the benchmark was built by the &lt;strong&gt;atopile&lt;/strong&gt; team, the authors of a language for describing circuits as code. Worth remembering while reading their results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The most interesting real signal is a Hackaday comment (author: Em):&lt;/strong&gt; three PCBs “vibe coded”, &lt;strong&gt;all three worked on the first send to production&lt;/strong&gt;, but &lt;em&gt;“The routing can look a little wonky (which started me down the rabbit hole of making a rust fork of freerouting), but its really wild how well it works.”&lt;/em&gt; (&lt;a href=&quot;https://hackaday.com/2026/09/05/can-ai-now-design-pcbs-that-just-work/&quot;&gt;Hackaday&lt;/a&gt;, verified).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The second real signal:&lt;/strong&gt; the Protoflow case study. The AI made small mistakes (missed through-holes, an undersized central pad), the API cost was &lt;strong&gt;$50, and the boards worked after fabrication&lt;/strong&gt; (&lt;a href=&quot;https://www.protoflow.ai/blog/ai-circuit-board-design&quot;&gt;Protoflow&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;entry-level-shift&quot;&gt;Entry level shift&lt;/h3&gt;
&lt;p&gt;PCB design has the best open source landscape comparing to the other two areas. That’s perhaps why things will be verified much faster. Thanks to the community of all nerds world wide.&lt;/p&gt;
&lt;p&gt;Let’s bring on some summary of currently existing tools.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KiCad + MCP&lt;/strong&gt;: several independent servers built on the official IPC API, &lt;a href=&quot;https://pypi.org/project/kicad-mcp/&quot;&gt;kicad-mcp on PyPI&lt;/a&gt;, &lt;a href=&quot;https://github.com/Seeed-Studio/kicad-mcp-server&quot;&gt;Seeed-Studio&lt;/a&gt;, &lt;a href=&quot;https://github.com/mixelpixx/KiCAD-MCP-Server&quot;&gt;mixelpixx&lt;/a&gt;. Adafruit wrote about it (&lt;a href=&quot;https://blog.adafruit.com/2026/04/22/kicad-mcp-pro-server-connects-kicad-to-your-ai/&quot;&gt;Adafruit blog&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;atopile&lt;/strong&gt; describes a board in declarative &lt;code&gt;.ato&lt;/code&gt; code, with native KiCad integration, open source. For an LLM this is the same advantage CadQuery brings in mechanical work: text instead of clicking (&lt;a href=&quot;https://github.com/atopile/atopile&quot;&gt;atopile&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flux.ai&lt;/strong&gt; is an AI-native EDA in the browser, with a library of 750 000 components carrying datasheets (grounding that limits hallucination) and a public MCP server (&lt;a href=&quot;https://www.flux.ai/p/blog/flux-copilot-under-the-hood&quot;&gt;Flux&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-LLM autorouting is more mature than the LLM kind:&lt;/strong&gt; Quilter (physics, “millions of synthetic boards”) and DeepPCB (reinforcement learning, InstaDeep) (&lt;a href=&quot;https://www.quilter.ai/blog/the-2026-guide-to-autonomous-pcb-design-quilter-vs-deeppcb-vs-flux-ai&quot;&gt;Quilter vs DeepPCB vs Flux&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;For context: &lt;strong&gt;EAGLE ends support on 2026-06-07&lt;/strong&gt;, with migration to Fusion Electronics (&lt;a href=&quot;https://forums.autodesk.com/t5/eagle-forum/eagle-dying-on-june-7-2026/td-p/12017987&quot;&gt;Autodesk forum&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;takeaways&quot;&gt;Takeaways&lt;/h2&gt;
&lt;h3 id=&quot;money-facts&quot;&gt;Money facts&lt;/h3&gt;
&lt;figure class=&quot;mt-6 mb-0&quot; data-zoomable data-astro-cid-n3pv6tca&gt;&lt;div class=&quot;border border-line-soft bg-surface overflow-hidden&quot; data-astro-cid-n3pv6tca&gt;&lt;img class=&quot;block h-auto w-full&quot; src=&quot;https://zerowithdot.com/images/blog/gpt-6-astra-impact-on-cad/neuralcad-edit.png&quot; alt=&quot;Instruction-following rating against cost in USD across models, with real CAD edit requests&quot; data-astro-cid-n3pv6tca&gt;&lt;/div&gt;&lt;figcaption class=&quot;label-technical mt-2 text-[0.625rem] text-ink-muted&quot; data-astro-cid-n3pv6tca&gt;&lt;span class=&quot;text-accent&quot; data-astro-cid-n3pv6tca&gt;Fig.&amp;nbsp;5&lt;/span&gt; — &lt;p&gt;What the edits actually look like — “convert to window frame”, “make the cutout shallower by 10mm but keep the spanner the same” — plotted against what they cost. Note the x-axis tops out around $30 per edit. Figure from &lt;a href=&quot;https://arxiv.org/abs/2604.16170&quot;&gt;neuralCAD-Edit&lt;/a&gt;, CC BY 4.0.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Let’s wrap up the cost. After all, Astra isn’t cheap, but so aren’t engineers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API pricing:&lt;/strong&gt; $10 per million input tokens, $50 per million output, cached input $1 per million, cache writes $12.50 per million. Above 272 000 input tokens: $20/$75 (&lt;a href=&quot;https://www.yottalabs.ai/post/gpt-6-astra-pricing-api-cost-2026&quot;&gt;Yotta Labs&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2.5× more expensive than GPT-5.6 Sol&lt;/strong&gt;, with cost per task about 75% higher (&lt;a href=&quot;https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra&quot;&gt;Artificial Analysis&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A real reference point for agentic work:&lt;/strong&gt; completing the game Portal autonomously took 3336 tool calls and &lt;strong&gt;$571.18&lt;/strong&gt; in API cost (&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/openais-gpt-6-astra-model-autonomously-completes-portal-in-24-hours-feat-cost-just-usd571-in-tokens&quot;&gt;Tom’s Hardware&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work in 3D generates millions of output tokens&lt;/strong&gt; through self-correction loops (&lt;a href=&quot;https://blog.neural4d.com/neural4d/gpt-6-astra-3d-modeling/&quot;&gt;Neural4D&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The reference point for PCB:&lt;/strong&gt; $50 of API for a board that worked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NOT FOUND:&lt;/strong&gt; the token cost for a real architectural project, for a typical mechanical assembly (say a 5-part mechanism), or for complete documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;note&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;The cost pattern is predictable&lt;/p&gt;&lt;p&gt;A single part or board runs to tens of dollars; agentic work with a long self-correction loop runs to hundreds. At a design engineer’s rate of $75–130/h the break-even point is low, but it only counts after subtracting the time spent on verification.&lt;/p&gt;&lt;/aside&gt;
&lt;h3 id=&quot;hype&quot;&gt;Hype…?&lt;/h3&gt;
&lt;p&gt;Checked directly, worth listing separately, because these circulate around the web:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;“Astra scores 69.3% on EEBench (PCB)”&lt;/strong&gt;: &lt;strong&gt;FALSE&lt;/strong&gt;. EEBench states plainly that there is no Astra result. &lt;a href=&quot;https://eebench.org/blog/can-ai-design-circuit-boards-yet/&quot;&gt;EEBench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Astra lands 53 pp below experts on neuralCAD-Edit”&lt;/strong&gt;: &lt;strong&gt;garbled&lt;/strong&gt;. That number refers to &lt;strong&gt;GPT-5.2&lt;/strong&gt;, in an April 2026 paper that does not include Astra. To be clear about what I am rejecting here: the measurement is sound and I lean on it earlier in this article, where it shows how wide the gap was immediately before Astra. What is wrong is the attribution, not the number. &lt;a href=&quot;https://arxiv.org/abs/2604.16170&quot;&gt;arXiv 2604.16170&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“BenchCAD 95.9% is verified”&lt;/strong&gt;: &lt;strong&gt;no&lt;/strong&gt;. Self-reported by OpenAI, not re-graded by the BenchCAD team. &lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;leaderboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Astra models CAD in Blender”&lt;/strong&gt;: &lt;strong&gt;a conflation of terms&lt;/strong&gt;. In Blender, Astra generates &lt;strong&gt;meshes&lt;/strong&gt; through &lt;code&gt;bpy&lt;/code&gt;. BenchCAD is a separate test of generating CadQuery code. Two different things glued into one narrative. &lt;a href=&quot;https://kingy.ai/blog/blender-openai-astra-complete-guide/&quot;&gt;Kingy&lt;/a&gt;, &lt;a href=&quot;https://blog.neural4d.com/neural4d/gpt-6-astra-3d-modeling/&quot;&gt;Neural4D&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“91 projects made with Astra”&lt;/strong&gt;: the catalogue exists, but its entries carry notes like “ongoing; no completed board”, “may not be usable”, “render pending”. &lt;a href=&quot;https://gist.github.com/phuaky/3d0f52d6bb7534d5f60b5ef37871b187&quot;&gt;gist phuaky&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;aside class=&quot;aside&quot; data-aside=&quot;danger&quot;&gt;&lt;p class=&quot;aside__label&quot;&gt;No evidence…&lt;/p&gt;&lt;p&gt;I found no evidence of a step change in the understanding of assembly, fits and tolerances. The change is somewhere else: in the reach of tool control and in the quality of the first approximation.&lt;/p&gt;&lt;/aside&gt;
&lt;h2 id=&quot;the-impact-of-astra-on-cad-work&quot;&gt;The impact of Astra on CAD work&lt;/h2&gt;
&lt;h3 id=&quot;can-a-noob-in-cad-do-the-cad-work&quot;&gt;Can a noob in CAD do the CAD work?&lt;/h3&gt;
&lt;p&gt;Partially. Whenever a task is simple and well defined, models such as Astra significantly lower the entry level of getting (some)thing done. Be it a prototype, a simple part, a PCB with known components or a conceptual visualization, prompting and patience is often more than enough to get to the first sketch. The difficulty, however, is the lack of ability of a freshman to spot errors that simply appear as job well done. This observation isn’t limited to CAD, but it is often more challenging to test.&lt;/p&gt;
&lt;p&gt;With Astra, a layman gets access to the first approximation of the result, but not to the final result. The biggest impact, therefore, appears where mistakes costs are low. That means DIY work, home 3D printing, single proof of concept, etc. As you may notice, not much has actually changed.&lt;/p&gt;
&lt;h3 id=&quot;should-cad-professional-know-ai&quot;&gt;Should CAD professional know AI?&lt;/h3&gt;
&lt;p&gt;Not really. The days of needing to know machine-learning principles and frameworks to get anything started are gone. With API keys and python scripts, MCP servers (e.g. KiCAD, FreeCAD, Onshape, Blender) or plugins, the cost of adding AI to workflows is largely determined by LLM providers and tokens.&lt;/p&gt;
&lt;p&gt;The key skills, however, are not “prompt engineering”, but the ability to build verification and an iterative approach. The evidence: +27% on the score and 88%→100% correctness from adding nothing but a render to the loop (&lt;a href=&quot;https://github.com/pzfreo/build123d-mcp&quot;&gt;build123d-mcp&lt;/a&gt;). The fundamental strength of a CAD professional is the &lt;strong&gt;ability to describe what a correct solution means in a way that is doable by machines.&lt;/strong&gt; For these people, getting access to better models is like giving faster cars to people that already know how to drive.&lt;/p&gt;
&lt;h3 id=&quot;the-effort-now-shifts&quot;&gt;The effort now shifts&lt;/h3&gt;
&lt;p&gt;True CAD professionals are quick to draft first versions and modifying existing drawings. Tools that they use have also been evolving “UX-wise”. Therefore, despite shortening the time to create first versions of drawings and writing scripts, this aren’t the biggest wins. However, finding documentation, converting scan to mesh and mesh to CAD is where significant portion of time gets saved.&lt;/p&gt;
&lt;p&gt;On the flip side, the biggest dangers and hence time thieves are the verification and testing, especially against quiet mistakes. Defining acceptance criteria and responsible design matter much more now, putting more emphasis on deriving a thorough design conceptual plan and review.&lt;/p&gt;
&lt;p&gt;What follows is my personal view rather than anything I can hand you a citation for. These are the conclusions I draw:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The direction is already visible: LLM plus solver, not LLM alone.&lt;/strong&gt; Embodied CAD, AIDL, ASSEMCAD, build123d-mcp: four independent pieces of work say the same thing. The next real jump will come from better coupling with the kernel, not from a bigger model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dedicated models will not disappear.&lt;/strong&gt; cadrille (2B parameters) holds DeepCAD IoU 92.2 at a fraction of Astra’s cost. Narrow tasks will keep escaping to small models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The bottleneck stops being geometry and becomes unstructured data&lt;/strong&gt;: BOMs, DFM rules, standards, the history of design decisions. That is already visible in the Fusion and Onshape tooling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What I would not expect within a year:&lt;/strong&gt; autonomous design of safety-critical parts. The blocker is architectural (ASSEMCAD) and regulatory (no certification, no auditability), not “not enough data”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;















































































































































































































































































































































































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Source&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Credibility&lt;/th&gt;&lt;th&gt;Note&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://developers.openai.com/api/docs/models/gpt-6-astra&quot;&gt;dokumentacja API&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog / doc&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://scalevise.com/resources/openai-gpt-6-astra-rollout-pricing-api-access/&quot;&gt;scalevise&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press / blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/blog/gpt-6-astra-frontier-intelligence-for-work-now-generally-available-in-microsoft-foundry/&quot;&gt;Azure&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://artificialanalysis.ai/models/gpt-6-astra/providers&quot;&gt;Artificial Analysis&lt;/a&gt;&lt;/td&gt;&lt;td&gt;independent measurement&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.androidcentral.com/apps-software/ai/project-astra&quot;&gt;Android Central&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;clarifies this is not Google Project Astra&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/2605.10865&quot;&gt;arXiv 2605.10865&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;authors from UVA, no OpenAI funding trace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/BenchCAD/BenchCAD-main&quot;&gt;BenchCAD GitHub&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/html/2605.10865v1&quot;&gt;arXiv (HTML)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://benchcad.com/leaderboard&quot;&gt;BenchCAD leaderboard&lt;/a&gt;&lt;/td&gt;&lt;td&gt;leaderboard&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;clearly separates self-reported from re-graded results&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://thenewstack.io/openai-gpt6-astra-benchmarks/&quot;&gt;The New Stack&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.vellum.ai/blog/gpt-6-astra-benchmarks-explained&quot;&gt;Vellum&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.ibtimes.co.uk/openai-gpt6-astra-ai-design-tool-1818412&quot;&gt;IBTimes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;news report&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;quotes verified verbatim&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://officechai.com/ai/gpt-6-astra-benchmarks/&quot;&gt;officechai&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://emergent.sh/learn/gpt-6-astra-benchmarks&quot;&gt;emergent.sh&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arcprize.org/blog/astra&quot;&gt;ARC Prize&lt;/a&gt;&lt;/td&gt;&lt;td&gt;benchmark blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;shows harness impact on the score&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://openai.com/index/how-two-settings-tripled-our-arc-agi-3-scores/&quot;&gt;OpenAI (ARC-AGI-3 settings)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://thenewstack.io/astra-arc-agi-benchmark/&quot;&gt;The New Stack (ARC-AGI)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://artificialanalysis.ai/articles/benchmarking-gpt-6-astra&quot;&gt;Artificial Analysis (benchmarking Astra)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;independent measurement&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;only independent price/performance measurement&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://deploymentsafety.openai.com/gpt-6-astra&quot;&gt;System card&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor document&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;no CAD/3D section&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://developers.openai.com/blog/architectural-visualization-with-astra&quot;&gt;OpenAI Developers (architecture demo)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;honestly lists limitations; interested party&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/magiccreator-ai/awesome-gpt-6-astra&quot;&gt;X/tomkrcha, via awesome-gpt-6-astra&lt;/a&gt;&lt;/td&gt;&lt;td&gt;community repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;FORUM&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blendermcp.org/guides/astra-blender&quot;&gt;blendermcp.org&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.lennysnewsletter.com/p/gpt-6-astra-is-a-banger-heres-everything&quot;&gt;Lenny’s Newsletter&lt;/a&gt;&lt;/td&gt;&lt;td&gt;newsletter / anecdote&lt;/td&gt;&lt;td&gt;&lt;code&gt;FORUM&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://parametric-architecture.com/gpt-6-astra-ai-architecture-workflows/&quot;&gt;parametric-architecture&lt;/a&gt;&lt;/td&gt;&lt;td&gt;industry blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;speculative scenario, not a documented pilot&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blogs.autodesk.com/forma/2025/04/24/how-to-use-generative-design-ai-and-3d-modeling-for-improved-site-planning/&quot;&gt;Autodesk (Forma)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://illustrarch.com/articles/75056-finch3d-review.html&quot;&gt;illustrarch (Finch3D)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.myarchitectai.com/blog/ai-tools-for-architects-and-interior-designers&quot;&gt;myarchitectai&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/louistrue/ifcclash&quot;&gt;ifcclash&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/Kennystruct/Clash-Detection-Matrix-Automation&quot;&gt;Clash-Detection-Matrix-Automation&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://architosh.com/2026/02/product-review-archicad-29-with-ai-assistant-beta/&quot;&gt;Architosh&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.cadcrowd.com/blog/what-is-the-typical-timeline-for-completing-freelance-cad-or-rendering-projects/&quot;&gt;CAD Crowd (LOD timelines)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.yottalabs.ai/post/gpt-6-astra-pricing-api-cost-2026&quot;&gt;Yotta Labs&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://lobehub.com/mcp/xunliudesign-rhino-gh-mcp&quot;&gt;Rhino/GH MCP v0.1.6&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo / MCP listing&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;proof-of-concept only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://layer3labs.io/guides/gpt-6-astra-review&quot;&gt;layer3labs&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;notes lack of compliance certification&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/pzfreo/build123d-mcp&quot;&gt;build123d-mcp&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;hard numbers on feedback-loop value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://grandpacad.com/en/blog/openscad-vs-cadquery-vs-build123d&quot;&gt;grandpacad&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.ptc.com/en/news/2026/onshape-launches-featurescript-mcp-server&quot;&gt;PTC (Onshape MCP)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor press&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/sandraschi/freecad-mcp&quot;&gt;freecad-mcp&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://mcp.directory/blog/freecad-mcp-complete-guide-2026&quot;&gt;mcp.directory&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/html/2607.05123&quot;&gt;ASSEMCAD, arXiv 2607.05123&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;strongest evidence of an architectural limitation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/pdf/2508.00843&quot;&gt;arXiv 2508.00843&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/2604.16170&quot;&gt;neuralCAD-Edit, arXiv 2604.16170&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;10 professional engineers, real edit requests; no Astra result&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/html/2505.22914&quot;&gt;cadrille, arXiv 2505.22914&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/pdf/2412.14042&quot;&gt;CAD-Recode, arXiv 2412.14042&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://3dprintingindustry.com/news/backflip-ai-cuts-part-digitization-from-1500-to-10-with-new-cad-foundation-model-253596/&quot;&gt;3D Printing Industry (Backflip AI)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;vendor numbers, independent coverage&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.businesswire.com/news/home/20260803007022/en/Backflip-AI-Launches-CAD-Copilot-That-Transforms-3D-Scans-Into-Engineer-Quality-Editable-CAD-Models&quot;&gt;BusinessWire (Backflip AI)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;press release&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.solidworks.com/solution/how-ai-is-augmenting-cad-tools-better-product-design&quot;&gt;SolidWorks&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor page&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/2606.31252&quot;&gt;Embodied CAD, arXiv 2606.31252&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://arxiv.org/pdf/2502.09819&quot;&gt;AIDL, arXiv 2502.09819&lt;/a&gt;&lt;/td&gt;&lt;td&gt;paper&lt;/td&gt;&lt;td&gt;&lt;code&gt;PAPER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.cadcrowd.com/blog/how-much-does-it-cost-to-hire-a-freelance-cad-designer-or-3d-modeler-for-business-in-2026/&quot;&gt;CAD Crowd (freelance rates)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.protoflow.ai/blog/ai-pcb-design-2026-guide&quot;&gt;protoflow (PCB design guide)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://app.stationx.net/articles/ai-pcb-design&quot;&gt;Nathan House, &lt;em&gt;AI PCB Design: My AI Tried to Make Itself Physical&lt;/em&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;case study&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;168 DRC violations vs 0, concrete numbers; quotes verified against the source&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://openai.com/index/gpt-6-astra/&quot;&gt;OpenAI (Astra launch)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://forum.kicad.info/t/open-ai-claims-gpt-6-astra-can-make-pcb-boards/71487&quot;&gt;forum KiCad&lt;/a&gt;&lt;/td&gt;&lt;td&gt;forum thread&lt;/td&gt;&lt;td&gt;&lt;code&gt;FORUM&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://eebench.org/blog/can-ai-design-circuit-boards-yet/&quot;&gt;EEBench&lt;/a&gt;&lt;/td&gt;&lt;td&gt;benchmark&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;built by atopile team, conflict of interest&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://hackaday.com/2026/09/05/can-ai-now-design-pcbs-that-just-work/&quot;&gt;Hackaday + comments&lt;/a&gt;&lt;/td&gt;&lt;td&gt;outlet + forum&lt;/td&gt;&lt;td&gt;&lt;code&gt;FORUM&lt;/code&gt;&lt;/td&gt;&lt;td&gt;best real-world signal from practice&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.protoflow.ai/blog/ai-circuit-board-design&quot;&gt;Protoflow (case study)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;$50 API cost, boards worked after fab&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://pypi.org/project/kicad-mcp/&quot;&gt;kicad-mcp on PyPI&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/Seeed-Studio/kicad-mcp-server&quot;&gt;Seeed-Studio&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/mixelpixx/KiCAD-MCP-Server&quot;&gt;mixelpixx&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;CODE&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blog.adafruit.com/2026/04/22/kicad-mcp-pro-server-connects-kicad-to-your-ai/&quot;&gt;Adafruit blog&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://github.com/atopile/atopile&quot;&gt;atopile&lt;/a&gt;&lt;/td&gt;&lt;td&gt;repo&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.flux.ai/p/blog/flux-copilot-under-the-hood&quot;&gt;Flux&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.quilter.ai/blog/the-2026-guide-to-autonomous-pcb-design-quilter-vs-deeppcb-vs-flux-ai&quot;&gt;Quilter vs DeepPCB vs Flux&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor comparison&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://forums.autodesk.com/t5/eagle-forum/eagle-dying-on-june-7-2026/td-p/12017987&quot;&gt;Autodesk forum (EAGLE EOL)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;vendor forum&lt;/td&gt;&lt;td&gt;&lt;code&gt;OFFICIAL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.tomshardware.com/tech-industry/artificial-intelligence/openais-gpt-6-astra-model-autonomously-completes-portal-in-24-hours-feat-cost-just-usd571-in-tokens&quot;&gt;Tom’s Hardware (Portal run)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://blog.neural4d.com/neural4d/gpt-6-astra-3d-modeling/&quot;&gt;Neural4D&lt;/a&gt;&lt;/td&gt;&lt;td&gt;industry blog&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;sober mesh/CAD distinction&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://thehackernews.com/2026/09/gpt-6-astra-scores-100-on-exploitbench.html&quot;&gt;The Hacker News (ExploitBench)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;trade press&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;confirms 100% on standard ExploitBench only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://kingy.ai/blog/blender-openai-astra-complete-guide/&quot;&gt;Kingy&lt;/a&gt;&lt;/td&gt;&lt;td&gt;blog test&lt;/td&gt;&lt;td&gt;&lt;code&gt;PRESS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;the only detailed Blender test&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://gist.github.com/phuaky/3d0f52d6bb7534d5f60b5ef37871b187&quot;&gt;gist, 91 projects&lt;/a&gt;&lt;/td&gt;&lt;td&gt;community catalogue&lt;/td&gt;&lt;td&gt;&lt;code&gt;FORUM&lt;/code&gt;&lt;/td&gt;&lt;td&gt;most entries unfinished&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>llm</category><category>gpt-6-astra</category><category>benchmarks</category><category>bim</category><category>architecture</category><category>blender</category><category>cadquery</category><category>pcb</category><category>kicad</category><category>hardware</category><category>AI-for-Design</category><category>AI-for-Architecture</category><category>AI-for-Hardware</category><author>Oleg Żero</author></item></channel></rss>