app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
← Commit history
Lead with Fusion Astra and add reproducible dashboard onboarding with prompt proxy fixes
7 files changed
+83−34
adom_codex.py+20−4@@ -1,5 +1,5 @@ #!/usr/bin/env python3-import argparse,json,os,platform,shutil,subprocess,sys,time,urllib.request,urllib.error,urllib.parse+import argparse,json,os,platform,shutil,socket,subprocess,sys,time,urllib.request,urllib.error,urllib.parse from pathlib import Path from http.server import SimpleHTTPRequestHandler,ThreadingHTTPServer ROOT=Path(__file__).resolve().parent@@ -14,12 +14,13 @@ class Handler(SimpleHTTPRequestHandler): b=json.dumps(obj).encode();self.send_response(status);self.send_header('Content-Type','application/json');self.send_header('Content-Length',str(len(b)));self.end_headers();self.wfile.write(b) def proxy(self): path=Path.home()/'.adom/hydrogen-control-url'- base=path.read_text().strip() if path.exists() else 'http://127.0.0.1:47084'+ if not path.exists():return self.json({'ok':False,'error':'Hydrogen control API unavailable','hint':'Open Adom Hydrogen in this workspace; its dynamic control URL is missing.'},503)+ base=path.read_text().strip() data=self.rfile.read(int(self.headers.get('Content-Length','0'))) if self.command=='POST' else None req=urllib.request.Request(base.rstrip('/')+self.path,data=data,method=self.command,headers={'Content-Type':'application/json'}) try:r=urllib.request.urlopen(req,timeout=120) except urllib.error.HTTPError as e:r=e- except Exception as e:return self.json({'ok':False,'error':'Hydrogen control API unavailable','detail':str(e)},502)+ except Exception as e:return self.json({'ok':False,'error':'Hydrogen control API unavailable','detail':str(e)},503) b=r.read();self.send_response(r.status);self.send_header('Content-Type',r.headers.get('Content-Type','application/json'));self.send_header('Content-Length',str(len(b)));self.end_headers();self.wfile.write(b) def do_GET(self): if self.path in ['/api/status','/state']:return self.json(context())@@ -30,6 +31,9 @@ class Handler(SimpleHTTPRequestHandler): # Serve only package-owned public assets, never arbitrary host files. if not self.path.startswith(('/dashboard/','/videos/','/docs/')):return self.send_error(404) return super().do_GET()+ def do_OPTIONS(self):+ if self.path!='/ai-threads/run-prompt':return self.send_error(404)+ self.send_response(204);self.send_header('Allow','POST, OPTIONS');self.send_header('Content-Length','0');self.end_headers() def do_POST(self): origin=self.headers.get('Origin') if origin and urllib.parse.urlsplit(origin).netloc!=self.headers.get('Host'):return self.json({'error':'Origin refused'},403)@@ -40,6 +44,18 @@ def main(): p=argparse.ArgumentParser();p.add_argument('command',choices=['context','serve','_serve']);p.add_argument('--print-url',action='store_true');p.add_argument('--port',type=int,default=47863);a=p.parse_args() if a.command=='context':print(json.dumps(context(),indent=2));return if a.command=='_serve':ThreadingHTTPServer(('127.0.0.1',a.port),Handler).serve_forever();return+ state=Path.home()/'.local/state/adom/codex';state.mkdir(parents=True,exist_ok=True)+ urlfile=state/'dashboard-url'+ urls=([urlfile.read_text().strip()] if urlfile.exists() else [])+[f'http://127.0.0.1:{a.port}/']+ for candidate in urls:+ try:+ r=json.load(urllib.request.urlopen(candidate+'api/status',timeout=1))+ if r.get('app')=='adom/codex' and r.get('version')==VERSION:print(candidate,flush=True);return+ except Exception:pass+ with socket.socket() as sock:+ try:sock.bind(('127.0.0.1',a.port))+ except OSError:sock.bind(('127.0.0.1',0))+ a.port=sock.getsockname()[1] url=f'http://127.0.0.1:{a.port}/' try: r=json.load(urllib.request.urlopen(url+'api/status',timeout=1));assert r.get('app')=='adom/codex' and r['version']==VERSION@@ -53,5 +69,5 @@ def main(): break except Exception:time.sleep(.1) else:raise RuntimeError('Dashboard failed to start; inspect '+str(log/'dashboard.log'))- print(url,flush=True)+ urlfile.write_text(url);print(url,flush=True) if __name__=='__main__':main()
dashboard/index.html+4−4@@ -1,11 +1,11 @@ <!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Codex in Hydrogen</title><link rel="icon" href="/dashboard/icon.svg"><style> :root{color-scheme:dark;--bg:#0d1117;--card:#161b22;--text:#e6edf3;--muted:#8b949e;--line:#30363d;--teal:#00b8b1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px 'Familjen Grotesk',system-ui,sans-serif}header{height:44px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 16px}header img{width:18px;height:18px}header strong{font-size:15px}header span{color:var(--muted);font-size:13px}.spacer{flex:1}button,a{touch-action:manipulation}button{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 12px;cursor:pointer}button:hover,button:focus-visible{border-color:var(--teal)}main{margin:auto;padding:16px}h1{font-size:30px;margin:0 0 8px}h2{font-size:19px}p{line-height:1.6;color:var(--muted)}a{color:var(--teal)}.pills{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.pill{border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:12px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.card{padding:22px;background:var(--card);border:1px solid var(--line);border-radius:12px}.card button{margin-right:8px}video{width:100%;max-height:70vh;background:#000}dialog{width:min(1100px,95vw);background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px}dialog::backdrop{background:#0008}pre{white-space:pre-wrap;word-break:break-word}.close{float:right}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--card);padding:12px;border:1px solid var(--teal);border-radius:8px;display:none}@media(max-width:720px){.grid{grid-template-columns:1fr}header span{display:none}main{padding:16px}}-</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration 0.1.3">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex/render/docs/BOOTSTRAP.md" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Watch a public Adom board go from the human reference to zero traces and independently calculated routing, with narrated explanations and measured KiCad results.</p><button data-demo="04-public-adom-solenoid-full-routing-narrated.mp4">Public board · narrated · 82 sec</button><a href="https://wiki.adom.inc/adom/codex/render/docs/ASTRA-KICAD.md" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/DESKTOP-BRIDGE.md" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Live KiCad routing</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script>+</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Astra routes and checks a real Fusion board</h2><p>Watch Astra-calculated 45-degree routes, native vias and connected thermal pours appear in Fusion. Then reproduce the workflow on your desktop with the packaged skills.</p><button data-demo="https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4">Watch the latest video · 3:43</button><a href="https://wiki.adom.inc/adom/codex/files/docs/REPRODUCE-FUSION.md" target="_blank">Reproduce this with Astra</a><p>Use Codex with Astra in your AI picker. Send to AI opens your configured AI; prompt wording alone does not select a model.</p></section><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex/files/docs/BOOTSTRAP.md" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Watch a public Adom board go from the human reference to zero traces and independently calculated routing, with narrated explanations and measured KiCad results.</p><button data-demo="04-public-adom-solenoid-full-routing-narrated.mp4">Public board · narrated · 82 sec</button><a href="https://wiki.adom.inc/adom/codex/files/docs/ASTRA-KICAD.md" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex/files/docs/DESKTOP-BRIDGE.md" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Astra engineering demonstrations</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script> const $=s=>document.querySelector(s);function toast(s){$('#toast').textContent=s;$('#toast').style.display='block';setTimeout(()=>$('#toast').style.display='none',4000)}-function play(file){$('#video').src='/videos/'+file;$('#player').showModal();$('#video').play().catch(()=>toast('Press Play to start the video.'))}-const panel=AdomNewbiePanel.mount({mount:'#newbie',app:'codex',appName:'Codex',slug:'codex',toggleButton:'#help',demo:{label:'Watch the routing demo',meta:'24 nets, 31 seconds',onPlay:()=>play('02-astra-crossbar-24-3x.mp4')},phrases:['Codex, inspect this workspace','Codex, inspect my KiCad board','Codex, show the routing demo']});+function play(file){$('#video').src=file.startsWith('https://')?file:'/videos/'+file;$('#player').showModal();$('#video').play().catch(()=>toast('Press Play to start the video.'))}+const panel=AdomNewbiePanel.mount({mount:'#newbie',app:'codex',appName:'Codex',slug:'codex',toggleButton:'#help',demo:{label:'Watch the routing demo',meta:'Fusion thermal routing, 3 min 43 sec',onPlay:()=>play('https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4')},phrases:["Codex Astra, reproduce the Fusion thermal-routing demo",'Codex, inspect this workspace','Codex, review my PCB thermal paths']}); async function inspect(){try{const r=await fetch('/api/status');if(!r.ok)throw Error('Context unavailable');const s=await r.json();$('#context').textContent=JSON.stringify(s,null,2);$('#details').showModal()}catch(e){toast(e.message)}} $('#inspect').onclick=inspect;$('#settings').onclick=inspect;$('#close-details').onclick=()=>$('#details').close();$('#close-video').onclick=()=>$('#player').close();$('#player').addEventListener('close',()=>$('#video').pause());document.querySelectorAll('[data-demo]').forEach(b=>b.onclick=()=>play(b.dataset.demo)); function status(s){$('#machine').textContent=s.container.hostname;$('#status').replaceChildren(...['Entry point: '+(s.instructionsInstalled?'installed':'not installed'),'Bridge CLI: '+(s.tools['adom-bridge']?'available':'missing'),'Host target: select in Bridge'].map(t=>{let e=document.createElement('span');e.className='pill';e.textContent=t;return e}))}-fetch('/api/status').then(r=>r.json()).then(status).catch(e=>toast('Workspace status unavailable'));window.adomCodex={state:()=>fetch('/state').then(r=>r.json()),play,inspect,selfCheck:()=>AdomNewbiePanel.selfCheck()};const events=new EventSource('/events');events.onmessage=e=>status(JSON.parse(e.data));+fetch('/api/status').then(r=>r.json()).then(status).catch(e=>toast('Workspace status unavailable'));window.adomCodex={state:()=>fetch('/state').then(r=>r.json()),play,inspect,selfCheck:()=>AdomNewbiePanel.selfCheck()};window.__codexBootComplete=true;const events=new EventSource('/events');events.onmessage=e=>status(JSON.parse(e.data)); </script></html>
docs/ASTRA-FUSION.md+26−23@@ -6,6 +6,32 @@ These videos document the progression of Codex Astra driving Autodesk Fusion thr The BQ25792 comparison disables one inherited all-object same-net spacing rule on diagnostic copies because it conflicts with intended same-net connections. Other clearance rules remain enabled and the source is preserved. Native DRC verifies the encoded rules; it does not certify power, thermal, signal-integrity or insulation safety. +## 10. Cleaner routes and connected thermal copper — Fusion on CRR++The next experiment applies horizontal/vertical runs with 45-degree transitions and reserves useful heat-spreading copper before ordinary routing. Astra inspects the five MOSFET footprints and their 35 thermal holes, assigns the bottom regions to their actual VAC1, VBUS, VAC2 and VBAT nets, and adds ground-via paths for the charger and linear regulator. The existing four-layer stackup and original component placement are preserved.++The new take runs on ConfRoomROG (CRR), preserving its pinned Fusion bridge. Astra precomputes and checks the route plan, then Adom Bridge draws each accepted native line and via, verifies copper after each batch, fills four priority thermal regions and four PGND pours, and checks the actual replay. The existing Adom activity palette shows public progress summaries, composited beside the canvas from its own native window recording. The edited video uses 3x action, removed waits, inspection holds and Andrew Neural narration through Adom TTS.++The saved live replay contains **576 trace segments, 89 vias and eight pours**. The exported segment-angle audit finds **zero exceptions** to horizontal/vertical/45-degree directions (0.02° tolerance). Autodesk reports **zero airwires, zero warnings and zero new errors**; the same inherited clearance error remains. Estimated total retained copper is **82.2%** across four layers.++| Device / thermal net | Previous connected bottom copper | New connected bottom copper |+| --- | ---: | ---: |+| Q1 / VAC1 | 11.3 mm² | 29.5 mm² |+| Q2 and Q4 / shared VBUS region | 5.3 mm² at each device | 45.0 mm² shared |+| Q3 / VAC2 | 5.3 mm² | 30.3 mm² |+| Q5 / VBAT | 13.0 mm² | 25.8 mm² |++The comparison retains the same diagnostic rule profile described above: only the inherited all-object same-net track-spacing rule is disabled on disposable copies. Different-net clearance rules remain active. Connected projected copper area is an estimate, not a measured temperature improvement; Q2 and Q4 share one VBUS region and must not be double-counted. Actual load currents, power-path bottlenecks, switching layout, sensitive signals and thermal performance still need qualification. Floating retained copper does not count as connected heatsinking.++<video width="100%" controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4"></video>++[Reproduce this with Astra: setup, starter prompt and validation](https://wiki.adom.inc/adom/codex/files/docs/REPRODUCE-FUSION.md)++[Download the thermal-routing video](https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4)++The package skills now explain how to constrain both planning and cleanup to the chosen bend directions, inventory thermal pads and vias, reserve copper on the correct nets, and check connected area after native refill. See the bundled `codex-adom-electrical-routing` and `codex-adom-routing-video` skills. Manufacturer guidance remains board-specific: [BQ25792 layout](https://www.ti.com/lit/gpn/BQ25792), [CSD17581Q3A MOSFET](https://www.ti.com/lit/ds/symlink/csd17581q3a.pdf), and [TLV760 regulator](https://www.ti.com/lit/gpn/tlv760).++ ## 1. First native traces The first experiment establishes direct trace-by-trace control in Fusion. Six nets and thirteen pads are connected with twenty-one stored segments and two vias; native Autodesk checks report zero errors, warnings and airwires. This version preserves the original recording timing.@@ -82,29 +108,6 @@ The 0.1 mm channel width is the user's manufacturing capability, not an electric [Download the copper-retention video](https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/09-bq25792-copper-retention-narrated.mp4) -## 10. Cleaner routes and connected thermal copper — Fusion on CRR--The next experiment applies horizontal/vertical runs with 45-degree transitions and reserves useful heat-spreading copper before ordinary routing. Astra inspects the five MOSFET footprints and their 35 thermal holes, assigns the bottom regions to their actual VAC1, VBUS, VAC2 and VBAT nets, and adds ground-via paths for the charger and linear regulator. The existing four-layer stackup and original component placement are preserved.--The new take runs on ConfRoomROG (CRR), preserving its pinned Fusion bridge. Astra precomputes and checks the route plan, then Adom Bridge draws each accepted native line and via, verifies copper after each batch, fills four priority thermal regions and four PGND pours, and checks the actual replay. The existing Adom activity palette shows public progress summaries, composited beside the canvas from its own native window recording. The edited video uses 3x action, removed waits, inspection holds and Andrew Neural narration through Adom TTS.--The saved live replay contains **576 trace segments, 89 vias and eight pours**. The exported segment-angle audit finds **zero exceptions** to horizontal/vertical/45-degree directions (0.02° tolerance). Autodesk reports **zero airwires, zero warnings and zero new errors**; the same inherited clearance error remains. Estimated total retained copper is **82.2%** across four layers.--| Device / thermal net | Previous connected bottom copper | New connected bottom copper |-| --- | ---: | ---: |-| Q1 / VAC1 | 11.3 mm² | 29.5 mm² |-| Q2 and Q4 / shared VBUS region | 5.3 mm² at each device | 45.0 mm² shared |-| Q3 / VAC2 | 5.3 mm² | 30.3 mm² |-| Q5 / VBAT | 13.0 mm² | 25.8 mm² |--The comparison retains the same diagnostic rule profile described above: only the inherited all-object same-net track-spacing rule is disabled on disposable copies. Different-net clearance rules remain active. Connected projected copper area is an estimate, not a measured temperature improvement; Q2 and Q4 share one VBUS region and must not be double-counted. Actual load currents, power-path bottlenecks, switching layout, sensitive signals and thermal performance still need qualification. Floating retained copper does not count as connected heatsinking.--<video width="100%" controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4"></video>--[Download the thermal-routing video](https://wiki.adom.inc/api/pages/adom/codex/files/videos/fusion/10-bq25792-thermal-45-narrated.mp4)--The package skills now explain how to constrain both planning and cleanup to the chosen bend directions, inventory thermal pads and vias, reserve copper on the correct nets, and check connected area after native refill. See the bundled `codex-adom-electrical-routing` and `codex-adom-routing-video` skills. Manufacturer guidance remains board-specific: [BQ25792 layout](https://www.ti.com/lit/gpn/BQ25792), [CSD17581Q3A MOSFET](https://www.ti.com/lit/ds/symlink/csd17581q3a.pdf), and [TLV760 regulator](https://www.ti.com/lit/gpn/tlv760).- ## The Adom Bridge calls behind the videos Astra calculates geometry; Adom Bridge makes it happen in the native editor and returns evidence of what Fusion actually created. That combination is what makes the progression possible: the same automation connection can inspect a board, place copper, run Autodesk checks, record the application and deliver the finished video. These are real CAD objects and native window captures.
docs/REPRODUCE-FUSION.mdadded+20@@ -0,0 +1,20 @@+# Reproduce the Fusion + Astra demonstration++Start with the latest Adom Hydrogen build for your release channel. Check Settings → updates and compare the running and latest versions; apply an available update before testing prompt delivery. Install or update `adom/codex` (`adom-wiki pkg install adom/codex`) and open **Codex** from the dock. The first starter prompt is **Codex Astra, reproduce the Fusion thermal-routing demo**. Use **Send to AI** to open a new conversation, then confirm the conversation is using Codex with Astra. A model subscription/login, Fusion installation and a connected Adom Bridge are required; the package does not supply those accounts.++The assistant should read this guide and the installed electrical-routing, ablation-routing and routing-video skills. Discover your desktop and bridge capabilities; never reuse CRR, another user's relay, HWND or document IDs. Preserve any pinned development bridge. Find the public `adom/bq25792-charger` reference and work on a new copy. The source/replay evidence lives on `adom/fusion-bridge`, branch `feature/per-net-trace-routing`, under `demo/routing/bq25792/thermal/`.++Choose one of two explicit outcomes:++1. **Replay the demonstrated result:** use the accepted `thermal-final/candidate-plan.json`, with the original footprint geometry and matching comparison rules. Replaying saved coordinates is not a new routing calculation. Verify the empty copy, draw native copper trace by trace through the discovered Fusion bridge, refill, run native DRC and audit the saved result.+2. **Calculate a fresh result with Astra:** inspect schematic/net membership, operating voltages and currents, stackup, thermal pad nets and existing vias first. Ask for missing manufacturing/load constraints while reviewing the board. Recalculate obstacle-aware horizontal/vertical/45-degree paths; reserve useful connected copper before ordinary routing; refine and recheck the plan. Do not substitute a replay for this request or invoke an external autorouter. Results may differ and must pass their own checks.++For the BQ example, keep the existing four layers and 35 MOSFET footprint thermal holes. The bottom thermal nets are VAC1 for Q1, VBUS for Q2/Q4, VAC2 for Q3 and VBAT for Q5. Ground fills the remaining permissible space. The demonstrated 0.1 mm isolation is this user's process floor, not a universal manufacturing or voltage rule. Retained floating islands require explicit permission and do not count as connected heatsinking. Switching nodes and sensitive signals need their own constraints.++Record the real Fusion canvas and existing Adom activity palette with native Bridge recording. Show an untouched reference and a stripped copy when demonstrating independent routing. Validate actual exported geometry, not only command acceptance. Preserve raw footage and failed candidates. Narrate with Adom TTS, clearly label precomputed planning/replay, 3x action and inspection holds, and deliver the MP4 to the selected desktop. Report inherited errors, rule-profile changes and unresolved electrical/thermal qualification.++Expected historical result for comparison: 576 segments, 89 vias, eight pours, no off-angle segments, zero airwires, zero warnings and one inherited clearance error. About 82.2% projected copper retention. These numbers are evidence for this board and rule profile, not a pass condition to force by suppressing rules.++## Prompt delivery checks++The dashboard vendors the shared Adom newbie panel. Its version check and asynchronous send/status calls pass through the dashboard to the current host control API. A queued job is not delivery: wait for the reported delivery state and verify the prompt in the new thread. If a call times out, inspect the thread/job before retrying. Never overwrite another draft. Choose Astra in the AI picker if your default provider/model is different; changing a prompt's wording cannot change the underlying model.
package.json+5−1@@ -4,7 +4,7 @@ "type": "app", "title": "Codex", "brief": "Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.",- "version": "0.1.9",+ "version": "0.1.10", "description": "Codex in Adom Hydrogen with reusable CAD routing, electrical review, copper-ablation and narrated video skills, plus verified KiCad and Fusion demo progressions.", "org": "adom", "needs_sudo": false,@@ -59,6 +59,10 @@ }, "discovery_pitch": "Use Codex in Adom Hydrogen with ecosystem instructions, a dock dashboard and live CAD demonstrations.", "sample_prompts": [+ {+ "label": "Reproduce Fusion with Astra",+ "prompt": "Codex Astra, reproduce the Fusion thermal-routing demo"+ }, { "label": "Set up Codex", "prompt": "Set up Codex to work in my Adom Hydrogen workspace."
page.json+6−2@@ -4,7 +4,7 @@ "type": "app", "title": "Codex", "brief": "Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.",- "version": "0.1.9",+ "version": "0.1.10", "hero": { "type": "image", "path": "screenshots/hero.png"@@ -27,6 +27,10 @@ "public": true }, "sample_prompts": [+ {+ "label": "Reproduce Fusion with Astra",+ "prompt": "Codex Astra, reproduce the Fusion thermal-routing demo"+ }, { "label": "Set up Codex", "prompt": "Set up Codex to work in my Adom Hydrogen workspace."@@ -91,4 +95,4 @@ "videos/04-public-adom-solenoid-full-routing-narrated.mp4", "videos/04-public-adom-solenoid-full-routing.mp4" ]-}+}
skills/codex-adom/SKILL.md+2@@ -36,3 +36,5 @@ For package updates or another thread missing a skill, read `../codex-adom-skill For PCB electrical review, power pours, cleaner routing or copper-retention/ablation constraints, read `../codex-adom-electrical-routing/SKILL.md` before planning routes. For explicitly requested floating-copper retention and a Fusion ablation demonstration, also read `../codex-adom-ablation-routing/SKILL.md`.++For “Codex Astra, reproduce the Fusion thermal-routing demo”, read the package `docs/REPRODUCE-FUSION.md` (also on the adom/codex wiki). Confirm the active provider/model; discover the user’s desktop; distinguish a saved-plan replay from fresh Astra calculation. Do not assume prompt wording selects Astra.