molecule
Steven's Nameplate: three revisions
Public Made by Adomby adom
A USB-C desk nameplate for Steven Moss (Astera Institute), built three ways and published as open experiments: a 3x5 LED board, a 5x7 LED board, and a laser-ablated silkscreen plate. Source, fab files, negative results, reproduce steps.
← Commit history
Thumbnail index on the summary; full write-ups as rendered pages with the live 3D viewer inline
4 files changed
+844−8
README.html+10−7@@ -61,8 +61,11 @@ .muted { color:var(--muted); } .revs { display:grid; grid-template-columns:1fr; gap:18px; margin:0 0 20px; }- .rev { background:var(--surface); border:1px solid var(--border); border-radius:12px; overflow:hidden; }- .rev img { display:block; width:100%; height:auto; border-bottom:1px solid var(--border); }+ .rev { background:var(--surface); border:1px solid var(--border); border-radius:12px; overflow:hidden;+ display:grid; grid-template-columns:260px 1fr; align-items:stretch; }+ .rev > a.thumb { display:block; background:#000; }+ .rev > a.thumb img { display:block; width:100%; height:100%; object-fit:cover; min-height:150px; }+ @media (max-width:640px) { .rev { grid-template-columns:1fr; } .rev > a.thumb img { height:auto; } } .rev .body { padding:14px 18px 16px; } .rev h3 { margin:0 0 4px; font-size:18px; } .rev .tag { display:inline-block; font-size:11.5px; font-weight:700; letter-spacing:.04em;@@ -87,16 +90,16 @@ <div class="call"><b>Why three revisions.</b> Rev 1 worked electrically but its N read as an H. Rev 2 fixed the font and moved to real, stocked part numbers. Rev 3 asked a different question: skip the per-person circuit entirely, and laser the name into one standard LED-lit board. That is the plate Steven will hold at the NSF PCLNet Summit in DC.</div> <h2>The three revisions</h2> <div class="revs">-<div class="rev"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v1-hero.jpg" alt="Rev 1: 3 x 5 LED dot matrix">-<div class="body"><h3>Rev 1: 3 x 5 LED dot matrix<span class="tag">superseded</span></h3><p>58 white LEDs spell STEVEN, powered from an iPhone charger. 0 DRC errors and every net connected after a layout sweep that is documented in full, including the router's silent opens. <b>Failed as typography:</b> three columns cannot draw an N.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev1/README.md" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/viewer/index.html" target="_blank">Live 3D</a></div></div></div><div class="rev"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v2-hero.jpg" alt="Rev 2: 5 x 7 LED dot matrix">-<div class="body"><h3>Rev 2: 5 x 7 LED dot matrix<span class="tag live">designed</span></h3><p>94 white LEDs in a 5 x 7 font, so the N has a real diagonal. Every part is a stocked Adom Basic Part with an MPN, the draw is about 400 mA, and the board resizes itself from one line of text. 0 DRC errors, 98 of 98 nets connected.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev2/README.md" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/viewer/index.html" target="_blank">Live 3D</a></div></div></div><div class="rev"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev3/photos/blank-board-render-iso.png" alt="Rev 3: name laser-ablated into the silkscreen">-<div class="body"><h3>Rev 3: name laser-ablated into the silkscreen<span class="tag">in production</span></h3><p>One standard blank board (Adonis Lysandrou, Fusion 360) with six side-firing LEDs. The name, "Steven Moss" over the Astera logo, is etched by the workcell's UV laser from a job the Nameplate Generator builds. Per-person work drops from a new PCB to a laser job.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev3/README.md" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adonis/nametag-blank-large-led" target="_blank">Board designer's page</a><a href="https://wiki.adom.inc/viewer/3d/adonis/component/nametag-blank-large-led" target="_blank">Live 3D of the blank</a></div></div></div>+<div class="rev"><a class="thumb" href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/README.html" target="_blank"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v1-hero.jpg" alt="Rev 1: 3 x 5 LED dot matrix"></a>+<div class="body"><h3>Rev 1: 3 x 5 LED dot matrix<span class="tag">superseded</span></h3><p>58 white LEDs spell STEVEN, powered from an iPhone charger. 0 DRC errors and every net connected after a layout sweep that is documented in full, including the router's silent opens. <b>Failed as typography:</b> three columns cannot draw an N.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/README.html" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev1/README.md" target="_blank">Plain text</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/viewer/index.html" target="_blank">Live 3D</a></div></div></div><div class="rev"><a class="thumb" href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/README.html" target="_blank"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v2-hero.jpg" alt="Rev 2: 5 x 7 LED dot matrix"></a>+<div class="body"><h3>Rev 2: 5 x 7 LED dot matrix<span class="tag live">designed</span></h3><p>94 white LEDs in a 5 x 7 font, so the N has a real diagonal. Every part is a stocked Adom Basic Part with an MPN, the draw is about 400 mA, and the board resizes itself from one line of text. 0 DRC errors, 98 of 98 nets connected.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/README.html" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev2/README.md" target="_blank">Plain text</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/viewer/index.html" target="_blank">Live 3D</a></div></div></div><div class="rev"><a class="thumb" href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev3/README.html" target="_blank"><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev3/photos/blank-board-render-iso.png" alt="Rev 3: name laser-ablated into the silkscreen"></a>+<div class="body"><h3>Rev 3: name laser-ablated into the silkscreen<span class="tag">in production</span></h3><p>One standard blank board (Adonis Lysandrou, Fusion 360) with six side-firing LEDs. The name, "Steven Moss" over the Astera logo, is etched by the workcell's UV laser from a job the Nameplate Generator builds. Per-person work drops from a new PCB to a laser job.</p><div class="links"><a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev3/README.html" target="_blank">Full write-up</a><a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/rev3/README.md" target="_blank">Plain text</a><a href="https://wiki.adom.inc/adonis/nametag-blank-large-led" target="_blank">Board designer's page</a><a href="https://wiki.adom.inc/viewer/3d/adonis/component/nametag-blank-large-led" target="_blank">Live 3D of the blank</a></div></div></div> </div> <h2>What changed, and why</h2> <table><tr><th></th><th>Rev 1</th><th>Rev 2</th><th>Rev 3</th></tr><tr><td>How the name is made</td><td>58 LEDs, 3 x 5 font</td><td>94 LEDs, 5 x 7 font</td><td>Laser-ablated silkscreen, lit by 6 edge LEDs</td></tr><tr><td>Board</td><td>98.4 x 26.4 mm</td><td>136.4 x 44.4 mm</td><td>160 x 48 mm</td></tr><tr><td>Designed with</td><td>tscircuit 0.0.1753, AI</td><td>tscircuit 0.0.2375, AI</td><td>Fusion 360 Electronics, human</td></tr><tr><td>Parts</td><td>generic, no MPNs</td><td>all stocked, with MPNs</td><td>OSRAM, GCT, Royalohm, with MPNs</td></tr><tr><td>Draw at 5 V</td><td>about 520 mA</td><td>about 400 mA</td><td>6 LEDs at 100 ohm</td></tr><tr><td>New work per name</td><td>a new PCB</td><td>a new PCB (one line of code)</td><td>a new laser job</td></tr><tr><td>Status</td><td>superseded</td><td>verified, not fabricated</td><td>blank built, plates in production</td></tr><tr><td>Lesson</td><td>DRC passes a board with dead nets; the N needs 5 columns</td><td>a newer router, plus a geometric connectivity check, is what got a clean board</td><td>one board for everyone; the per-person work is a laser job</td></tr></table> <h2>Open science</h2> <p>This page is a worked example, for the Astera Institute, of how Adom's AI publishes an experiment as soon as it exists. <a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/docs/open-science.md" target="_blank">The full scorecard</a> lists every rule and where this page meets it, meets it partly, or does not yet.</p>-<table class="score"><tr><th>Astera asks for</th><th>Here</th></tr><tr><td>Publish when ready for reuse, not when a paper is written</td><td>each revision published the day it was made</td></tr><tr><td>Code MIT or more open</td><td>yes, MIT</td></tr><tr><td>Data CC0</td><td>yes</td></tr><tr><td>Protocols and text CC BY</td><td>yes, CC BY 4.0; each revision has a reproduce section</td></tr><tr><td>Funder with ROR ID</td><td>U.S. NSF, ROR 021nxhr62</td></tr><tr><td>Negative results</td><td>every failed router layout</td></tr><tr><td>Register of outputs</td><td>outputs.csv with SHA-256 per file</td></tr><tr><td>DOI and Zenodo deposit</td><td><b>not yet</b>, a deposition pipeline is the next step</td></tr><tr><td>Code on GitHub</td><td><b>partial</b>, git on the wiki, no GitHub mirror</td></tr></table>+<table class="score"><tr><th>Astera asks for</th><th>Here</th></tr><tr><td>Publish when ready for reuse, not when a paper is written</td><td>each revision published the day it was made</td></tr><tr><td>Code MIT or more open</td><td>yes, MIT</td></tr><tr><td>Data CC0</td><td>yes</td></tr><tr><td>Protocols and text CC BY</td><td>yes, CC BY 4.0; each revision has a reproduce section</td></tr><tr><td>Funder with ROR ID</td><td>U.S. NSF, ROR 021nxhr62</td></tr><tr><td>Negative results</td><td>every failed router layout</td></tr><tr><td>Register of outputs</td><td>outputs.csv with SHA-256 per file</td></tr><tr><td>DOI and Zenodo deposit</td><td><b>not yet</b>, the gap our proposed pipeline closes</td></tr><tr><td>Code on GitHub</td><td><b>partial</b>, git on the wiki, no GitHub mirror</td></tr></table> <h2>Files and licenses</h2> <ul> <li>Board source and scripts (<code>rev*/source/</code>): <a href="https://wiki.adom.inc/adom/steven-led-nameplate/files/LICENSE" target="_blank">MIT</a></li>
outputs.csv+4−1@@ -3,7 +3,7 @@ CITATION.cff,page,1270,metadata,a98faf3e2a579ca9cd3ff3e0140df150f9dadd211b868c26 LICENSE,page,1523,metadata,73b7269dbee98b7a12ec28108e80f53bb144b9b1d4753272cdb1fa555024c1b6 LICENSE-DATA,page,7048,metadata,a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 LICENSE-DOCS,page,18657,metadata,9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411 -README.html,page,15381,CC BY 4.0,70e1f5bd28df83292faa6e5e00d29d676d9d677c80b4dd31249bbf0e53b2653c +README.html,page,16303,CC BY 4.0,61b3c0ce7efef08fad5a58ac517e85a9bc80653f8dd4c8e288686eea31e3cfb8 README.md,page,2056,CC BY 4.0,f47a7f81a30d57bf054ed8527eb3655dcf5fe9904ce4325c912aa77b1227f23c board.glb,page,2204088,CC0,6871a6a5bd47fee0332201d089496389c1d62d1e8931b95c1ece831ce225d81e docs/hero.png,page,612771,CC BY 4.0,4032a5ba952b6bd6510e29ed909cf084d7193c9f56120046421ea0abea528cca @@ -15,6 +15,7 @@ docs/img/steven-v2-top.jpg,page,58310,CC BY 4.0,c68970e8ab8be2d7c79776b51a23689e docs/open-science.md,page,4089,CC BY 4.0,40b325f8c36e35bb8886cd2d79fb80d137184b8993f65cfd609860ce2047cb1f pcb.svg,page,774281,CC0,f107cc5183356a07c073ff9664b1627f09717276f3406c88bf5887a9f6b2ba1b plan.md,page,2077,CC BY 4.0,df60c5272b0f822e8ef87947f3cb55f0b26c71dc5dee0b8b2ba75c383813379a +rev1/README.html,rev1,20090,CC BY 4.0,c8cdf85df422e20109daaf72566ef945a677a99ca257f4af6d096fde78d6b5d8 rev1/README.md,rev1,11620,CC BY 4.0,d41b27a25336cf4c38e5b0d383f92225819ab7dee66504d1f09b97bc5261881e rev1/fab/bom.csv,rev1,902,CC0,3df4cb6047b97cfc3ee32c83faf5aa78ee96fbd5d3e892cc36c2a39590de99b5 rev1/fab/gerbers.zip,rev1,71956,CC0,1570dbd78fef89c1e541b61948a250508ede4d2b31d7edc0d6f735316fa5aebb @@ -39,6 +40,7 @@ rev1/viewer/index.html,rev1,447917,viewer (not relicensed),9493d3cdfc18de0345156 rev1/viewer/pcb.svg,rev1,526699,CC0,6f15e3422a38570588f98b5157bd5dab534c0c0de57a57227b689094e7cc24db rev1/viewer/schematic.svg,rev1,598557,CC0,49b41d8189b8602da3489b5028d86ad554096cca8a163a2f03e2340ec85580ad rev1/viewer/walkthrough.json,rev1,5540,CC0,afbbd2a24ba09222b3641e4bfbfe2e1346868cc5aff7c5bdf68af783749a0b0e +rev2/README.html,rev2,21169,CC BY 4.0,25802ce20d4c434f5f7c517992d281be05ffc757a40436da3a8c51689dd1942b rev2/README.md,rev2,12421,CC BY 4.0,ee24e0ea9e3968f07d9567ba8c8f6fd5d18a5f0c709ddf06f2062083a411d1d7 rev2/fab/bom.csv,rev2,1013,CC0,e6a1321ccc4c5bd4b999d3e0988741ee68278b093a7679675971d179ff5116a8 rev2/fab/gerbers.zip,rev2,127181,CC0,9bf22902a8e1c5cd2ee44ad6deb00fdd7908c93745f3f8ae1dcea35e6ed4dbad @@ -63,6 +65,7 @@ rev2/viewer/index.html,rev2,447917,viewer (not relicensed),9493d3cdfc18de0345156 rev2/viewer/pcb.svg,rev2,774281,CC0,f107cc5183356a07c073ff9664b1627f09717276f3406c88bf5887a9f6b2ba1b rev2/viewer/schematic.svg,rev2,1046101,CC0,5b2c004bb66805010aca1d7b0a8df91bcd700177779c22fc07ac32c5178c7915 rev2/viewer/walkthrough.json,rev2,6345,CC0,baa47302d37c5db0a3b3ef8f5bc43b4653dd60dad10e041d8545e8cd3b3ef08b +rev3/README.html,rev3,16019,CC BY 4.0,000b258dafc19338f878fa2babcb85bc2ec39881718b68d6a6b56a71e14c96dc rev3/README.md,rev3,8906,CC BY 4.0,bf687f3b6e6b7903c63f1eb2669a9e3bd48c5b75fe8daf7aa0aad8579b661ac1 rev3/fusion/nametag-blank-large-led-bom.csv,rev3,320,see ablation write-up,102befed4aa617d3632b1d09e7c7410f308aa3f621c12ff15c9f061c6d916878 rev3/fusion/nametag-blank-large-led-cpl.csv,rev3,433,see ablation write-up,e5cd285683875c4a06b115d3d88aefb75b701773b2992e60dd17439973bb3bd7
rev1/README.htmladded+477@@ -0,0 +1,477 @@+<!doctype html><html><head><meta charset="utf-8"><meta name="readme-max-height" content="60000"><meta name="viewport" content="width=device-width, initial-scale=1"><style>+ /* No @font-face here: the wiki renders README.html in a null-origin iframe,+ so adom.inc's font files fail CORS on every load and only add console+ noise. Fall back to the system stack, which the wiki chrome matches. */+ :root { --bg:#0d1117; --surface:#161b22; --elev:#1c2128; --border:#30363d;+ --text:#e6edf3; --body:#c9d1d9; --muted:#8b949e; --accent:#00b8b1; --purple:#8C6BF7; }+ * { box-sizing:border-box; margin:0; padding:0; }+ html,body { background:var(--bg); color:var(--body);+ font:15px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;+ scrollbar-width:none; }+ html::-webkit-scrollbar, body::-webkit-scrollbar { width:0; height:0; display:none; }+ #wrap { max-width:900px; margin:0 auto; padding:34px 22px 60px; }+ h1 { color:var(--text); font-size:40px; line-height:1.1; letter-spacing:-.02em; margin:0 0 10px; }+ h2 { color:var(--text); font-size:21px; letter-spacing:-.01em;+ margin:38px 0 12px; padding-bottom:7px; border-bottom:1px solid var(--border); }+ h3 { color:var(--text); font-size:16px; margin:22px 0 8px; }+ p { margin:0 0 13px; }+ .lede { font-size:17.5px; color:var(--text); margin-bottom:20px; }+ a { color:var(--accent); }+ code { font:13px/1.5 ui-monospace,"SF Mono",Menlo,Consolas,monospace;+ background:var(--elev); border:1px solid var(--border);+ border-radius:5px; padding:1px 5px; color:var(--text); }+ pre { background:var(--elev); border:1px solid var(--border); border-radius:10px;+ padding:14px 16px; overflow-x:auto; margin:0 0 16px; }+ pre code { background:none; border:0; padding:0; font-size:12.5px; line-height:1.6; }+ ul,ol { margin:0 0 14px; padding-left:22px; }+ li { margin:0 0 6px; }+ table { width:100%; border-collapse:collapse; margin:0 0 18px; font-size:13.5px; }+ th,td { text-align:left; padding:8px 11px; border-bottom:1px solid var(--border); vertical-align:top; }+ th { color:var(--muted); font-weight:600; white-space:nowrap; }+ td:first-child { color:var(--text); white-space:nowrap; }+ .viewer { border:1px solid var(--border); border-radius:12px; overflow:hidden;+ background:var(--surface); margin:22px 0 8px;+ box-shadow:0 12px 40px rgba(0,0,0,.45); }+ .viewer iframe { display:block; width:100%; height:620px; border:0; }+ .poster { display:block; width:100%; padding:0; border:0; background:none;+ cursor:pointer; position:relative; font:inherit; color:inherit; }+ .poster img { display:block; width:100%; height:auto; opacity:.55; transition:opacity .18s; }+ .poster:hover img { opacity:.75; }+ .play { position:absolute; inset:0; display:flex; flex-direction:column;+ align-items:center; justify-content:center; gap:6px; text-align:center; }+ .play b { background:var(--accent); color:#04120f; padding:10px 20px;+ border-radius:999px; font-size:15px; font-weight:700; }+ .play i { color:var(--text); font-style:normal; font-size:12.5px; opacity:.85; }+ .cap { color:var(--muted); font-size:13px; margin:0 0 26px; }+ .cap a { color:var(--accent); text-decoration:none; }+ .call { background:var(--surface); border:1px solid var(--border);+ border-left:3px solid var(--accent); border-radius:0 10px 10px 0;+ padding:14px 18px; margin:0 0 22px; color:var(--body); }+ .call b { color:var(--text); }+ .warn { border-left-color:var(--purple); }+ figure { margin:0 0 20px; }+ figure img { display:block; width:100%; height:auto; border-radius:10px;+ border:1px solid var(--border); background:#000; }+ figcaption { color:var(--muted); font-size:12.5px; margin-top:7px; }+ .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }+ @media (max-width:680px) { .grid2 { grid-template-columns:1fr; } }+ .muted { color:var(--muted); }++ iframe.live { display:block; width:100%; height:600px; border:1px solid var(--border); border-radius:12px;+ background:var(--surface); margin:8px 0 10px; box-shadow:0 12px 40px rgba(0,0,0,.45); }+ img { max-width:100%; height:auto; border-radius:10px; border:1px solid var(--border); margin:6px 0 14px; }+ table { display:block; overflow-x:auto; }+ blockquote { border-left:3px solid var(--accent); padding:4px 14px; margin:0 0 14px; color:var(--muted); }+</style></head>+</head><body><div id="wrap"><h1>Rev 1: 3 x 5 LED dot matrix</h1>+<p>The first attempt. An AI designed a desk nameplate that spells STEVEN in 58 white LEDs, powered+from an iPhone charger through a USB-C port on the right edge. It works electrically. It fails+as typography: the N reads as an H. That failure is the reason Rev 2 exists.</p>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v1-hero.jpg" alt="Rev 1, 3D render of the assembled board" /></p>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Status</td>+<td>Designed and verified in software. <strong>Not fabricated.</strong></td>+</tr>+<tr>+<td>Date</td>+<td>2026-09-11</td>+</tr>+<tr>+<td>Board</td>+<td>98.4 x 26.4 mm, 2 layer FR4, Adom molecule <code>96x24</code> nominal, medium machine pins</td>+</tr>+<tr>+<td>Letters</td>+<td>58 LEDs, 3 x 5 pixel font, 3.5 mm pixel pitch, 4 mm letter gap, 62 mm of text</td>+</tr>+<tr>+<td>Power</td>+<td>USB-C on the east edge, 5 V, about 520 mA with every LED lit</td>+</tr>+<tr>+<td>Result</td>+<td>0 DRC errors, 62 of 62 nets connected, USB-C geometry inside the guide's reference window</td>+</tr>+<tr>+<td>Outcome</td>+<td>Superseded by <a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/README.html" target="_blank">Rev 2</a>. Kept as the record of what was tried first.</td>+</tr>+</tbody>+</table>+<h2>The board, live</h2>+<iframe class="live" loading="lazy" allow="fullscreen" src="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/viewer/index.html" width="100%" height="560" title="Steven nameplate Rev 1, interactive 3D"></iframe>+<p>Orbit, zoom, hover any part for its refdes and net, x-ray the copper with the Nets panel, or run+the guided walkthrough. The PCB, Schematic and Parts tabs across the top are live too.+<a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/viewer/index.html" target="_blank">Open full screen</a>.</p>+<h2>The question this revision asked</h2>+<p>Can an AI, given one sentence, produce a manufacturable board that puts a person's name in lights+and runs off a phone charger, using the same pipeline (tscircuit, the Adom molecule library, the+adom-tsci viewer) that produced earlier Adom nameplates?</p>+<p>The prompt, verbatim, as typed by John Lauer on 2026-09-11:</p>+<blockquote>+<p>hey, we want to put Steven's name in lights on a pcb nameplate. put a usbc connector on the+right side of the board so he can plug it into his iphone. use adom-tsci and open it in the+webview when done.</p>+</blockquote>+<h2>Method</h2>+<ol>+<li><strong>Template.</strong> The AI started from <code>vijay-nameplate</code>, an earlier 3 x 5 LED nameplate on the+same stack, and changed the word, the board size and the connector position. The 3 x 5 font+came with it unexamined. That inherited assumption is the defect this revision records.</li>+<li><strong>Board size.</strong> Six letters at 3 mm pitch need 56 mm of text plus about 13 mm reserved for the+USB-C receptacle and its support parts, which does not fit the <code>80x24</code> molecule Vijay used.+It moved up to <code>96x24</code> (98.4 x 26.4 mm real outline).</li>+<li><strong>USB-C.</strong> The <code>UsbCReceptacle</code> wrapper was copied byte-for-byte from the adom-usbc guide and+placed with <code>mount="east"</code> at <code>pcbX = W/2 - 4 = 44</code>. Two 4.7 kohm CC pulldowns (Rd) make a+USB-C charger turn VBUS on. A 100 nF capacitor bypasses VBUS.</li>+<li><strong>Build, then verify geometry, not just DRC.</strong> Every build ran <code>tsci build</code>, <code>adom-tsci lint</code>,+and a new union-find connectivity check (<code>source/scripts/check-connectivity.py</code>) that follows+copper pad to trace to via to pad, layer by layer.</li>+<li><strong>Iterate on layout until the router produced a fully connected board.</strong> See Results.</li>+</ol>+<h2>Results</h2>+<h3>Negative results: the router's silent opens</h3>+<p>The first build passed tscircuit's own checks for most nets, yet the board did not work. The+autorouter (tscircuit 0.0.1753) sometimes ends a bottom-layer trace directly under a top-layer+pad with no via. The trace carries an <code>end_pcb_port_id</code>, so both tscircuit and <code>adom-tsci lint</code>+count it as routed. Only the geometric check sees that nothing connects.</p>+<p>Every layout tried, in order:</p>+<table>+<thead>+<tr>+<th>Layout</th>+<th>DRC errors</th>+<th>Nets split into islands</th>+</tr>+</thead>+<tbody>+<tr>+<td>3 mm pitch, resistor 1.5 mm below LED (the Vijay layout)</td>+<td>6</td>+<td>3</td>+</tr>+<tr>+<td>same, resistors rotated 180 degrees</td>+<td>2</td>+<td>2</td>+</tr>+<tr>+<td>3.5 mm pitch, resistor 1.5 mm below</td>+<td>0</td>+<td>1</td>+</tr>+<tr>+<td>3.5 mm pitch, resistor 1.75 mm below</td>+<td>0</td>+<td>1</td>+</tr>+<tr>+<td>3.5 mm pitch, 1.9 mm / 4.5 mm letter gap / y offset 6.5 (three variants)</td>+<td>0 to 342</td>+<td>1 to 2</td>+</tr>+<tr>+<td>router preset <code>auto_cloud</code></td>+<td>n/a</td>+<td>59</td>+</tr>+<tr>+<td>router preset <code>sequential_trace</code></td>+<td>build fails on the molecule</td>+<td>n/a</td>+</tr>+<tr>+<td><strong>3.5 mm pitch, resistor 1.6 mm below, rotated 180 degrees</strong></td>+<td><strong>0</strong></td>+<td><strong>0</strong> (shipped)</td>+</tr>+</tbody>+</table>+<p>The same checker, run against the shipped <code>vijay-nameplate</code> this was copied from, found one real+open there too (R24 and R26 isolated from VBUS). That finding was reported, not fixed, since it+is a different board.</p>+<h3>Final numbers</h3>+<table>+<thead>+<tr>+<th>Check</th>+<th>Value</th>+</tr>+</thead>+<tbody>+<tr>+<td>Components</td>+<td>128: 58 LEDs, 60 resistors, 1 capacitor, 1 USB-C, 4 test contacts, 4 machine pins</td>+</tr>+<tr>+<td>Routing</td>+<td>186 routed traces for 188 declared (the 2 are the merged same-net USB-C tabs), 78 vias</td>+</tr>+<tr>+<td>DRC errors in <code>circuit.json</code></td>+<td>0</td>+</tr>+<tr>+<td>Connectivity</td>+<td>62 of 62 nets, each one island</td>+</tr>+<tr>+<td>USB-C pad gap to edge</td>+<td>7.00 mm (guide window 5 to 8)</td>+</tr>+<tr>+<td>USB-C anchor hole gap to edge</td>+<td>1.83 mm (guide: more than 0.8)</td>+</tr>+<tr>+<td>USB-C mouth overhang</td>+<td>2.31 mm (guide window 2 to 3)</td>+</tr>+<tr>+<td>USB-C pads / holes</td>+<td>12 / 6</td>+</tr>+</tbody>+</table>+<h3>What went wrong: the N</h3>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/n-glyph-rev1-vs-rev2.png" alt="The N in the 3 x 5 font next to the H from the same font" /></p>+<p>Three columns give an N nowhere to put its diagonal. The glyph becomes two verticals and a+bar near the top, which reads as an H. Seen in the top view, STEVEN reads closer to STEVEH.</p>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v1-top.jpg" alt="Rev 1 top view" /></p>+<p>Other known gaps, all fixed in Rev 2:</p>+<ul>+<li>LEDs and resistors are generic (<code>color="white"</code>, <code>220 ohm</code>) with no manufacturer part numbers.+The BOM in <code>rev1/fab/bom.csv</code> says so. A fab house could not assemble it without substitution.</li>+<li>520 mA exceeds the 500 mA a USB-C source guarantees without negotiation. Most phone chargers+advertise 1.5 A or 3 A through CC, so it would likely light, but it is out of spec.</li>+<li>The texture renderer shows the board at 2048 px, and the served GLB had to be checked for a+known cache bug (a 0-vertex USB-C body). It was clean: 46,644 vertices.</li>+</ul>+<h2>Reproduce this experiment</h2>+<h3>Tools used</h3>+<table>+<thead>+<tr>+<th>Tool</th>+<th>Version</th>+<th>What it did here</th>+<th>Get it</th>+</tr>+</thead>+<tbody>+<tr>+<td>Claude Code, in Adom's Hydrogen desktop</td>+<td>Claude Opus 5</td>+<td>The AI that wrote the board, ran every build and check, and wrote this page</td>+<td>Adom Hydrogen</td>+</tr>+<tr>+<td>bun</td>+<td>1.4.0</td>+<td>JavaScript runtime that runs tscircuit</td>+<td><code>curl -fsSL https://bun.sh/install | bash</code></td>+</tr>+<tr>+<td>tscircuit, @tscircuit/cli</td>+<td>0.0.1753 / 0.1.1382</td>+<td>Board description in TSX, autorouter, DRC, gerber and GLB export</td>+<td><code>bun install --frozen-lockfile</code> (pinned in <code>bun.lock</code>)</td>+</tr>+<tr>+<td>@tsci/adom-inc.molecule, @tsci/adom-inc.library</td>+<td>1.1.15 / 1.1.14</td>+<td>Adom molecule outline and corner machine pins</td>+<td>same, through the <code>.npmrc</code> registry <code>npm.tscircuit.com</code></td>+</tr>+<tr>+<td>adom-tsci</td>+<td>1.4.24</td>+<td>Live 3D / PCB / schematic preview, <code>lint</code>, gerber export, walkthrough, the viewer embedded on this page</td>+<td><code>adom-wiki pkg install adom/adom-tsci</code></td>+</tr>+<tr>+<td>adom-usbc guide</td>+<td>ships with adom-tsci</td>+<td>The USB-C wrapper (copied verbatim) and the edge checks</td>+<td><code>~/.claude/skills/adom-tsci/guides/adom-usbc.md</code></td>+</tr>+<tr>+<td><code>scripts/check-connectivity.py</code></td>+<td>this page</td>+<td>Geometric pad-trace-via connectivity per net; catches opens DRC misses</td>+<td>Python 3 standard library</td>+</tr>+<tr>+<td><code>scripts/sweep.sh</code></td>+<td>this page</td>+<td>Parallel layout sweep, reports DRC errors and split nets per variant</td>+<td>bash + bun</td>+</tr>+<tr>+<td><code>scripts/make-bom.py</code></td>+<td>this page</td>+<td>Real BOM and pick-and-place spliced into the gerber zip</td>+<td>Python 3 standard library</td>+</tr>+<tr>+<td>glb-datauri-textures.mjs, glb-make-zup.mjs</td>+<td>adom-tsci page</td>+<td>Makes the 3D models load in the wiki's sandbox and lie flat</td>+<td><code>https://wiki.adom.inc/adom/adom-tsci/render/scripts/</code></td>+</tr>+<tr>+<td>pup (Adom Bridge)</td>+<td></td>+<td>The renders on this page, shot in a background browser</td>+<td><code>adom-bridge pup_open_window</code></td>+</tr>+<tr>+<td>adom-wiki</td>+<td></td>+<td>Publishing this page</td>+<td>preinstalled on Adom containers</td>+</tr>+</tbody>+</table>+<h3>What actually ran, in order</h3>+<ol>+<li>Read the adom-tsci and adom-usbc guides, then copied <code>vijay-nameplate</code> (lib, lockfile,+node_modules) to a new project and changed the word, board size and connector position.</li>+<li><code>bunx tsci build lib/index.tsx --glbs --svgs</code>, then read every <code>*_error</code> in <code>circuit.json</code>+and ran <code>adom-tsci lint</code>.</li>+<li>Wrote <code>scripts/check-connectivity.py</code> after seeing traces reported as routed that connected+nothing, and checked it against a known-good board (<code>bill-nameplate</code>: 0 split).</li>+<li>Swept layouts (the table above) by editing <code>GRID</code>, <code>LETTER_GAP</code>, <code>yOff</code> and the resistor+offset, rebuilding each in a scratch copy, until one came back 0 errors and 0 split.</li>+<li>Ran the adom-usbc edge check (pad gap, hole gap, overhang, pad and hole counts).</li>+<li><code>adom-tsci start . --texture-resolution 2048</code>, checked the console for a USB-C placeholder,+compared the served GLB's J1 vertex count with the tscircuit-built one, then took the+body-on and body-off USB-C screenshots and read them.</li>+<li><code>adom-tsci export --format gerbers</code>, then <code>scripts/make-bom.py</code> to replace the empty BOM.</li>+</ol>+<h3>Rebuild it yourself</h3>+<p>Everything needed is in <code>rev1/source/</code>. From a Linux or macOS shell with+<a href="https://bun.sh" target="_blank">bun</a> installed:</p>+<pre><code class="language-bash">adom-wiki repo download adom/steven-led-nameplate --extract ./steven+cd steven/rev1/source+bun install --frozen-lockfile # pins tscircuit 0.0.1753, @tscircuit/cli 0.1.1382+bunx tsci build lib/index.tsx --glbs --svgs+python3 scripts/check-connectivity.py # expect: 62 nets checked, 0 split+</code></pre>+<p>Expected: 0 entries whose <code>type</code> ends in <code>_error</code> in <code>dist/lib/index/circuit.json</code>, 186 routed+traces. The autorouter is deterministic for a fixed input and fixed package versions; a different+tscircuit version routes differently (Rev 2 shows how much).</p>+<p>To preview interactively: <code>adom-tsci start .</code> (Adom's viewer), or open+<a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev1/viewer/index.html" target="_blank">the Rev 1 live viewer</a> on this page.</p>+<p>To fabricate: <code>rev1/fab/gerbers.zip</code> holds copper, mask, silkscreen, paste, outline and drill+files plus <code>bom.csv</code> and <code>pick_and_place.csv</code>. Do not fabricate Rev 1; build Rev 2.</p>+<h2>Outputs</h2>+<table>+<thead>+<tr>+<th>File</th>+<th>What it is</th>+<th>License</th>+</tr>+</thead>+<tbody>+<tr>+<td><code>rev1/source/lib/index.tsx</code></td>+<td>The board, as tscircuit TSX</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev1/source/lib/UsbCReceptacle.tsx</code></td>+<td>USB-C wrapper, verbatim from the adom-usbc guide</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev1/source/scripts/check-connectivity.py</code></td>+<td>Geometric net connectivity check</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev1/source/package.json</code>, <code>bun.lock</code></td>+<td>Exact dependency pins</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev1/viewer/circuit.json</code></td>+<td>Complete circuit description (netlist, placement, routing)</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev1/viewer/3d.glb</code></td>+<td>3D model, 2048 px board texture</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev1/fab/gerbers.zip</code></td>+<td>Fabrication files</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev1/fab/bom.csv</code>, <code>pick_and_place.csv</code></td>+<td>Assembly data</td>+<td>CC0</td>+</tr>+<tr>+<td>this document</td>+<td>Method, results, negative results</td>+<td>CC BY 4.0</td>+</tr>+</tbody>+</table>+<h2>Provenance</h2>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Requested by</td>+<td>John Lauer, Adom Industries (PI, NSF PCL Test Bed node, Fort Worth)</td>+</tr>+<tr>+<td>Designed by</td>+<td>Claude Opus 5 (Anthropic), running in Claude Code inside Adom's Hydrogen desktop</td>+</tr>+<tr>+<td>Toolchain</td>+<td>tscircuit 0.0.1753, @tscircuit/cli 0.1.1382, @tsci/adom-inc.molecule 1.1.15, @tsci/adom-inc.library 1.1.14, adom-tsci 1.4.24, bun 1.4.0</td>+</tr>+<tr>+<td>Template</td>+<td><code>vijay-nameplate</code> (Adom, 2026-09-11)</td>+</tr>+<tr>+<td>Human review</td>+<td>John Lauer viewed the live 3D preview and asked for the font change that became Rev 2</td>+</tr>+</tbody>+</table>+<p>Contributor roles (<a href="https://credit.niso.org/" target="_blank">CRediT</a>): John Lauer, conceptualization and+supervision. Claude (AI), design, software, validation, writing.</p>+<h2>Funding</h2>+<p>Adom Industries' electronics prototyping node is funded by the U.S. National Science Foundation+Programmable Cloud Laboratories (PCL) Test Bed program+(<a href="https://ror.org/021nxhr62" target="_blank">ROR 021nxhr62</a>). This nameplate was made as a worked example of+open publishing for the Astera Institute (<a href="https://ror.org/00ydx1s47" target="_blank">ROR 00ydx1s47</a>); Astera+did not fund it.</p>+</div><script>+(function(){var w=document.getElementById('wrap'),last=0;function post(){var h=w.offsetHeight+24;if(h!==last){last=h;parent.postMessage({type:'readme-height',height:h},'*');}}+post();addEventListener('load',post);addEventListener('resize',post);+document.querySelectorAll('img,iframe').forEach(function(e){e.addEventListener('load',post)});+if(window.ResizeObserver)new ResizeObserver(post).observe(w);[100,400,1200,3000].forEach(function(t){setTimeout(post,t)});})();+</script></body></html>
rev3/README.htmladded+353@@ -0,0 +1,353 @@+<!doctype html><html><head><meta charset="utf-8"><meta name="readme-max-height" content="60000"><meta name="viewport" content="width=device-width, initial-scale=1"><style>+ /* No @font-face here: the wiki renders README.html in a null-origin iframe,+ so adom.inc's font files fail CORS on every load and only add console+ noise. Fall back to the system stack, which the wiki chrome matches. */+ :root { --bg:#0d1117; --surface:#161b22; --elev:#1c2128; --border:#30363d;+ --text:#e6edf3; --body:#c9d1d9; --muted:#8b949e; --accent:#00b8b1; --purple:#8C6BF7; }+ * { box-sizing:border-box; margin:0; padding:0; }+ html,body { background:var(--bg); color:var(--body);+ font:15px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;+ scrollbar-width:none; }+ html::-webkit-scrollbar, body::-webkit-scrollbar { width:0; height:0; display:none; }+ #wrap { max-width:900px; margin:0 auto; padding:34px 22px 60px; }+ h1 { color:var(--text); font-size:40px; line-height:1.1; letter-spacing:-.02em; margin:0 0 10px; }+ h2 { color:var(--text); font-size:21px; letter-spacing:-.01em;+ margin:38px 0 12px; padding-bottom:7px; border-bottom:1px solid var(--border); }+ h3 { color:var(--text); font-size:16px; margin:22px 0 8px; }+ p { margin:0 0 13px; }+ .lede { font-size:17.5px; color:var(--text); margin-bottom:20px; }+ a { color:var(--accent); }+ code { font:13px/1.5 ui-monospace,"SF Mono",Menlo,Consolas,monospace;+ background:var(--elev); border:1px solid var(--border);+ border-radius:5px; padding:1px 5px; color:var(--text); }+ pre { background:var(--elev); border:1px solid var(--border); border-radius:10px;+ padding:14px 16px; overflow-x:auto; margin:0 0 16px; }+ pre code { background:none; border:0; padding:0; font-size:12.5px; line-height:1.6; }+ ul,ol { margin:0 0 14px; padding-left:22px; }+ li { margin:0 0 6px; }+ table { width:100%; border-collapse:collapse; margin:0 0 18px; font-size:13.5px; }+ th,td { text-align:left; padding:8px 11px; border-bottom:1px solid var(--border); vertical-align:top; }+ th { color:var(--muted); font-weight:600; white-space:nowrap; }+ td:first-child { color:var(--text); white-space:nowrap; }+ .viewer { border:1px solid var(--border); border-radius:12px; overflow:hidden;+ background:var(--surface); margin:22px 0 8px;+ box-shadow:0 12px 40px rgba(0,0,0,.45); }+ .viewer iframe { display:block; width:100%; height:620px; border:0; }+ .poster { display:block; width:100%; padding:0; border:0; background:none;+ cursor:pointer; position:relative; font:inherit; color:inherit; }+ .poster img { display:block; width:100%; height:auto; opacity:.55; transition:opacity .18s; }+ .poster:hover img { opacity:.75; }+ .play { position:absolute; inset:0; display:flex; flex-direction:column;+ align-items:center; justify-content:center; gap:6px; text-align:center; }+ .play b { background:var(--accent); color:#04120f; padding:10px 20px;+ border-radius:999px; font-size:15px; font-weight:700; }+ .play i { color:var(--text); font-style:normal; font-size:12.5px; opacity:.85; }+ .cap { color:var(--muted); font-size:13px; margin:0 0 26px; }+ .cap a { color:var(--accent); text-decoration:none; }+ .call { background:var(--surface); border:1px solid var(--border);+ border-left:3px solid var(--accent); border-radius:0 10px 10px 0;+ padding:14px 18px; margin:0 0 22px; color:var(--body); }+ .call b { color:var(--text); }+ .warn { border-left-color:var(--purple); }+ figure { margin:0 0 20px; }+ figure img { display:block; width:100%; height:auto; border-radius:10px;+ border:1px solid var(--border); background:#000; }+ figcaption { color:var(--muted); font-size:12.5px; margin-top:7px; }+ .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }+ @media (max-width:680px) { .grid2 { grid-template-columns:1fr; } }+ .muted { color:var(--muted); }++ iframe.live { display:block; width:100%; height:600px; border:1px solid var(--border); border-radius:12px;+ background:var(--surface); margin:8px 0 10px; box-shadow:0 12px 40px rgba(0,0,0,.45); }+ img { max-width:100%; height:auto; border-radius:10px; border:1px solid var(--border); margin:6px 0 14px; }+ table { display:block; overflow-x:auto; }+ blockquote { border-left:3px solid var(--accent); padding:4px 14px; margin:0 0 14px; color:var(--muted); }+</style></head>+</head><body><div id="wrap"><h1>Rev 3: the name laser-ablated into the silkscreen</h1>+<p>A different experiment, not a refinement. Revs 1 and 2 build the letters out of LEDs, so every+name is a new circuit that has to be designed, routed and verified. Rev 3 keeps one circuit for+everyone: a standard blank board with six side-firing LEDs that light the whole face, and the+name is etched into it afterwards by the laser in Adom's workcell. The per-person work drops from+a new PCB to a new laser job.</p>+<p>This is the plate Steven receives, shown at the NSF PCLNet Summit in Washington, DC.</p>+<h2>The board, live</h2>+<iframe class="live" loading="lazy" allow="fullscreen" src="https://wiki.adom.inc/viewer/3d/adonis/component/nametag-blank-large-led" width="100%" height="520" title="Nametag Blank Large LED, interactive 3D"></iframe>+<p>Orbit it, zoom in on the six LEDs along the top edge and the USB-C at the left. This is the blank+before a name is etched. <a href="https://wiki.adom.inc/viewer/3d/adonis/component/nametag-blank-large-led" target="_blank">Open full screen</a>.</p>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Status</td>+<td>Blank board fabricated and assembled. Steven's plate is being made for the DC summit; a photo of the finished plate will be added here.</td>+</tr>+<tr>+<td>Board designer</td>+<td>Adonis Lysandrou, Adom Industries</td>+</tr>+<tr>+<td>Board</td>+<td>Nametag Blank Large LED, 160 x 48 mm, 2 layer, 1.6 mm FR4, 35 um copper</td>+</tr>+<tr>+<td>Source</td>+<td>Fusion 360 Electronics, revision of 21 Sep 2026 (Fusion v40), published as <a href="https://wiki.adom.inc/adonis/nametag-blank-large-led" target="_blank">adonis/nametag-blank-large-led</a> v1.2.0</td>+</tr>+<tr>+<td>Light</td>+<td>6 x ams OSRAM LW A6SG-V2BA-FK0PN0 white side-firing LEDs, 100 ohm series each</td>+</tr>+<tr>+<td>Power</td>+<td>GCT USB4135-GF-A power-only USB-C, 5.1 kohm CC pulldowns</td>+</tr>+<tr>+<td>Name</td>+<td>"Steven Moss" over the Astera logo, ablated through the top silkscreen and soldermask</td>+</tr>+<tr>+<td>Laser job</td>+<td>ComMarker Studio <code>.orzr</code>, built by <a href="https://wiki.adom.inc/adom/nameplate-generator" target="_blank">Nameplate Generator</a></td>+</tr>+</tbody>+</table>+<h2>The question this revision asked</h2>+<p>Can a nameplate be made per person without designing a new PCB each time? The workcell already+has a laser that removes silkscreen and soldermask at fine resolution. If one blank can be built+in volume, each name becomes a laser job measured in minutes, and the AI's job shrinks from+"design and verify a circuit" to "lay out a name and check it fits".</p>+<h2>Method</h2>+<h3>1. The blank board</h3>+<p>Adonis designed the Nametag Blank Large LED in Fusion 360 Electronics:</p>+<ul>+<li>160 x 48 mm outline, 2 layer, 1.6 mm FR4.</li>+<li>Six side-firing white LEDs on a 25.6 mm pitch along the top edge, at x = 16, 41.6, 67.2, 92.8,+118.4 and 144 mm, each through its own 100 ohm resistor. Side-firing parts throw light across+the board face rather than up out of it.</li>+<li>A power-only USB-C receptacle with the two 5.1 kohm Rd pulldowns a USB-C source needs before+it turns VBUS on.</li>+<li>Four large machine pins at the corners (MP1 to MP4) that fixture the board into the workcell.+MP1 is the origin the 3D model is keyed to.</li>+</ul>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev3/photos/blank-board-render-iso.png" alt="Blank board, isometric render" /></p>+<p>Bill of materials (from <code>rev3/fusion/nametag-blank-large-led-bom.csv</code> and Adonis's page):</p>+<table>+<thead>+<tr>+<th>Ref</th>+<th>Qty</th>+<th>Part</th>+<th>Notes</th>+</tr>+</thead>+<tbody>+<tr>+<td>LED1 to LED6</td>+<td>6</td>+<td>ams OSRAM LW A6SG-V2BA-FK0PN0, white SIDELED</td>+<td><a href="https://wiki.adom.inc/adonis/lw-a6sg-v2ba-fk0pn0" target="_blank">part page</a></td>+</tr>+<tr>+<td>R3 to R7, R9</td>+<td>6</td>+<td>100 ohm 0603, Royalohm CQ03WAF1000T5E</td>+<td>Adom Basic Part</td>+</tr>+<tr>+<td>R1, R2</td>+<td>2</td>+<td>5.1 kohm 0603, Royalohm 0603WAF5101T5E</td>+<td>USB-C CC pulldowns</td>+</tr>+<tr>+<td>J2</td>+<td>1</td>+<td>GCT USB4135-GF-A, power-only USB-C</td>+<td><a href="https://wiki.adom.inc/adom/usb4135-gf-a" target="_blank">part page</a></td>+</tr>+<tr>+<td>MP1 to MP4</td>+<td>4</td>+<td>Adom machine pin, Large Standard</td>+<td>workcell fixturing</td>+</tr>+</tbody>+</table>+<h3>2. Finding where the name can go</h3>+<p>Nameplate Generator reads the board's EAGLE source (<code>rev3/fusion/nametag-blank-large-led.brd</code>),+rasterises every top-side feature (copper, pads, silkscreen, part outlines, the machine-pin+heads), grows each by a 1.2 mm clearance, and finds the largest clear rectangle. On this+revision that is 120 x 32 mm at the board centre. Side-firing LED bodies reach 4.3 mm below their+pads, further than their footprint outline says, so the generator carries those bodies as extra+keep-outs read off the 3D model.</p>+<h3>3. Laying out the name</h3>+<p>The generator sets the name as one native text object in a production-tested ComMarker Studio+<code>.orzr</code> template. Only the text, font, size and letter width change. Pen, power, speed,+frequency, fill and the document's pen table are copied byte for byte from the template, so a+laser setting is never invented per job. A new design starts as large as the name area allows:+the letter width is solved between 50 and 200 percent so the name fills the area both ways.</p>+<h3>4. Ablating it</h3>+<p>The job runs on the UV fiber laser in Adom's workcell, which removes silkscreen and soldermask in+the shape of the letters. The blank is located by its four machine pins, so every plate lands in+the same place. The generator can queue the job straight to the laser (<code>nameplate queue</code>) with its+metadata: name, font, size, pen, board, template and file hashes, and who asked.</p>+<h2>Results</h2>+<ul>+<li>The blank boards are fabricated and assembled.</li>+<li>Steven's plate is being made for the DC summit. A photo of the finished plate, and a close-up+of the etched letters, will be added here. Until then this revision's result is the built blank+and the method, not a finished plate.</li>+</ul>+<h3>Known limits</h3>+<ul>+<li><strong>Machine pin fit.</strong> The blank drills 3.6 mm for the large machine pin, a line-to-line fit+rather than the documented 0.15 mm press fit, so the pins are soldered, not pressed. (Recorded on+Adonis's page.)</li>+<li><strong>One layout per name, checked by a person.</strong> The generator guarantees the name fits; it cannot+know a name is spelled right. Check it against a primary source, such as the person's own email+signature, before the job runs.</li>+</ul>+<h2>Reproduce this experiment</h2>+<h3>Tools</h3>+<table>+<thead>+<tr>+<th>Tool</th>+<th>Version</th>+<th>What it did</th>+<th>Get it</th>+</tr>+</thead>+<tbody>+<tr>+<td>Fusion 360 Electronics</td>+<td>Fusion v40</td>+<td>Board and schematic design</td>+<td>autodesk.com</td>+</tr>+<tr>+<td>Nameplate Generator</td>+<td>0.1.19</td>+<td>Name area, layout, <code>.orzr</code> export, laser queue</td>+<td><code>adom-wiki pkg install adom/nameplate-generator</code></td>+</tr>+<tr>+<td>ComMarker Studio</td>+<td>laser PC</td>+<td>Runs the <code>.orzr</code> job</td>+<td>ships with the ComMarker laser</td>+</tr>+<tr>+<td>Adom workcell, UV fiber laser</td>+<td></td>+<td>Ablation</td>+<td>Adom Industries, Fort Worth</td>+</tr>+</tbody>+</table>+<h3>Steps</h3>+<p><strong>The blank board.</strong> Open <code>rev3/fusion/nametag-blank-large-led.fbrd</code> and <code>.fsch</code> in Fusion 360+Electronics, or the EAGLE <code>.brd</code> and <code>.sch</code> in EAGLE or KiCad (KiCad imports EAGLE). Send the+board to fabrication with <code>nametag-blank-large-led-bom.csv</code> and <code>-cpl.csv</code> for assembly. The full+Fusion archive (<code>.f3d</code>, 39 MB), the STEP and a USDZ are on+<a href="https://wiki.adom.inc/adonis/nametag-blank-large-led" target="_blank">Adonis's page</a>.</p>+<p><strong>The name.</strong></p>+<pre><code class="language-bash">adom-wiki pkg install adom/nameplate-generator+nameplate start # serves the dashboard on port 8960+nameplate open # shows it in a Hydrogen webview+nameplate name "Steven Moss"+nameplate maximize # as large as the name area allows+nameplate shot # screenshot, to check it before exporting+nameplate export --out ./jobs # writes nameplate-steven-moss.orzr+nameplate queue # or send it straight to the workcell's laser queue+</code></pre>+<p>Fixture the blank on the workcell by its four machine pins and run the job.</p>+<h2>Outputs</h2>+<table>+<thead>+<tr>+<th>File</th>+<th>What it is</th>+<th>License</th>+</tr>+</thead>+<tbody>+<tr>+<td><code>rev3/fusion/nametag-blank-large-led.fbrd</code>, <code>.fsch</code></td>+<td>Fusion native board and schematic</td>+<td>see note</td>+</tr>+<tr>+<td><code>rev3/fusion/nametag-blank-large-led.brd</code>, <code>.sch</code></td>+<td>EAGLE board and schematic</td>+<td>see note</td>+</tr>+<tr>+<td><code>rev3/fusion/nametag-blank-large-led-bom.csv</code>, <code>-cpl.csv</code></td>+<td>BOM and pick-and-place</td>+<td>see note</td>+</tr>+<tr>+<td><code>rev3/fusion/nametag-blank-large-led.glb</code></td>+<td>3D model, Z-up, anchored at MP1</td>+<td>see note</td>+</tr>+<tr>+<td><code>rev3/photos/*</code></td>+<td>Renders of the blank, from Adonis's page</td>+<td>see note</td>+</tr>+<tr>+<td>this document</td>+<td>Method and results</td>+<td>CC BY 4.0</td>+</tr>+</tbody>+</table>+<p><strong>License note.</strong> The board files and renders are Adonis Lysandrou's, copied unmodified from his+page, which does not declare a license yet. Until it does they are shared for reference under+Adom Industries' copyright. Declaring one (MIT, matching Revs 1 and 2) is an open item.</p>+<h2>Provenance</h2>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Board design</td>+<td>Adonis Lysandrou (Fusion 360 Electronics, rev 21 Sep 2026, Fusion v40)</td>+</tr>+<tr>+<td>Name layout and ablation</td>+<td>Adonis Lysandrou</td>+</tr>+<tr>+<td>Laser job generator</td>+<td>Nameplate Generator 0.1.19, Aditya Angajala</td>+</tr>+<tr>+<td>Write-up</td>+<td>Claude Opus 5.5 (Anthropic), from the board's published files and the generator's documentation</td>+</tr>+</tbody>+</table>+<p>Contributor roles (<a href="https://credit.niso.org/" target="_blank">CRediT</a>): Adonis Lysandrou, investigation,+resources, methodology. Aditya Angajala, software. John Lauer, supervision. Claude (AI), writing.</p>+<h2>Funding</h2>+<p>The node is funded by the U.S. National Science Foundation PCL Test Bed program+(<a href="https://ror.org/021nxhr62" target="_blank">ROR 021nxhr62</a>). Made for the Astera Institute+(<a href="https://ror.org/00ydx1s47" target="_blank">ROR 00ydx1s47</a>); Astera did not fund it.</p>+</div><script>+(function(){var w=document.getElementById('wrap'),last=0;function post(){var h=w.offsetHeight+24;if(h!==last){last=h;parent.postMessage({type:'readme-height',height:h},'*');}}+post();addEventListener('load',post);addEventListener('resize',post);+document.querySelectorAll('img,iframe').forEach(function(e){e.addEventListener('load',post)});+if(window.ResizeObserver)new ResizeObserver(post).observe(w);[100,400,1200,3000].forEach(function(t){setTimeout(post,t)});})();+</script></body></html>