app
AI Flow
Public Made by Adomby adom
Adom's AI Flow: a tool to help the AI follow all of the steps it takes to build a board.
← Commit history
0.1.69: silkscreen and test-pad rules from the Fusion buck review
5 files changed
+19−13
docs/release-0.1.69.md+5−8@@ -1,10 +1,7 @@-# 0.1.69 — sourcing recovery and routing fidelity+# AI Flow 0.1.69 -This release combines the current 0.1.68 source, including the concurrent Fusion work, with the electronic-load build's changes. It is a direct update requested by John.+Skill text only: the silkscreen and test-pad lessons from the TPS54202 buck in Fusion (2026-10-08), so every Adom user's AI gets them. -- `browser-check` classifies observed vendor pages and recommends the appropriate next browser lane. A Pup access-denied page can recommend an owned native-browser session. Missing pages, rate limits and human challenges receive different guidance; the command never navigates or bypasses a challenge itself.-- Component coverage explicitly includes reusable off-board fans, heatsinks and sensors. Their wiki pages need traceable electrical, mechanical and digital assets. Fan-state guidance identifies named GLB rotor nodes, revolution clips, RPM scaling and unknown/stale telemetry. Simulator integration remains a separate consumer task.-- Unnumbered copper-layer mounting holes remain physical routing obstacles, without becoming electrical net terminals.-- Routes joining existing copper retain their starting layer when exported, preventing bottom-layer paths from being silently placed on the top layer.--The electronic-load native gate demonstrated why planner closure is not acceptance. After the router corrections, a remaining duplicate via needed a reviewed plan correction; the complete candidate then had zero new DRC findings but eleven open ground connections. This release does not declare that board finished, thermally qualified or fabrication-ready. Native gates remain mandatory.+- aiflow-silkscreen, "What good silkscreen looks like": contact frames as large as the space allows; every part's value small beside its reference as one unit; test pads at least 1.5 mm apart, out of the contact columns, and dropped when the net is already probeable on a contact or corner pin.+- aiflow-silkscreen, "Fusion lane: traps": a name deleted where it stands can take the part (move it off the board first); RIPUP takes a whole trace run; `fusion_close_document` saves before closing even with `save:false` (close, then promote, then reopen).+- aiflow-test-plan: where test pads go (spacing, out of contact columns, skip nets already probeable).
package.json+1−1@@ -86,4 +86,4 @@ "aiflow-simulate", "aiflow-test-plan" ]-}+}
page.json+1−1@@ -83,7 +83,7 @@ } ], "org": "adom",- "tag": "latest",+ "tag": "insiders", "author": { "name": "John Lauer", "email": "[email protected]"
skills/aiflow-silkscreen/SKILL.md+6−3@@ -102,19 +102,22 @@ For a short silkscreen population video, prefer a fixed full-board camera with F Silkscreen is the first thing a person reads on a board, and it carries Adom's name. Hold every board to these: -- **Every edge contact is a framed tag.** A rectangle round the contact holding its reference over its net (J1 over VIN). The net comes from the board's own connections, never from a value field.+- **Every edge contact is a framed tag.** A rectangle round the contact holding its reference over its net (J1 over VIN), as large as the space allows so the label sits comfortably inside it. The net comes from the board's own connections, never from a value field. - **Tags in a set are the same size.** Every edge contact's frame is the same width, and a column of contacts shares its rails and row height, so the eye scans the row as one set. A frame that would be wider than the others gets smaller text (0.8, then 0.6, then 0.5 mm) rather than a wider box. - **Corner machine pins are framed too, all four the same shape**, mirrored into each corner, labelled with their net (GND) when wired and their reference when mechanical only. Choose the corner shape together with the contact columns: a corner frame that crowds the columns makes them uneven. - **A frame may break, never enclose.** It may have a short gap where it would cross a small pad or a via (at least 70% of it drawn); it never shuts another part's pad inside it. When a test pad sits in a contact's column, move the test pad, not the contact. - **A label belongs next to its part.** A contact's net more than about 1 mm from its pad reads as a neighbour's. When there is no room beside a part, put the label where there is room and draw a thin leader line to the part. A contact's net outranks a test pad's or a small part's name.+- **Every part's value, small, right next to its reference.** The reference is the larger text (0.8 mm), the value the smallest the fab allows, placed as one unit with its reference (after it or under it), printed the way boards print it: 10u, 100n, 15u, 5k6. ICs and LEDs need none.+- **Test pads stay out of the way and apart.** Keep the contacts where the molecule grid puts them and move test pads instead: out of the contact columns, at least 1.5 mm centre to centre from each other so a probe lands on one only. A test pad whose net can already be probed on a contact or a corner pin (GND on J2, J5, MP1 to MP4) is redundant: drop it rather than crowd the board. - **Text as small as the fab allows, no smaller.** Use the fab profile's minimum text height (3rdPartyFab: 0.5 mm; JLCPCB: 0.8 mm, tested by Adom), 0.15 mm stroke. - **The bottom carries the identity**: the board's title, the date, the owner's logo (encourage the user to add theirs: it is good practice), and the URL of the board's wiki page so anyone holding the board can find its files. - **On video, draw it one item at a time**: each frame, then its name and net, then the rest, with a short pause each (`fusion silkscreen --pause-ms 700`), on a view with only tPlace, tNames, pads, vias, cream and the outline showing (`--display "17 18 20 21 25 31"`). ## Fusion lane: traps that cost a board (2026-10-08) -- **DELETE by point can delete a whole part.** In the board editor a point on a part's own tPlace artwork picks the part, and DELETE removes it with its connections (J4 and MP4 went this way). Delete only at a plain text's or smashed name's exact origin, never on a line, and check the part count after. `fusion silkscreen` refuses to clear an earlier pass's lines for this reason.+- **DELETE by point can delete a whole part.** In the board editor a point on a part's own tPlace artwork, or close to its pads, picks the part, and DELETE removes it with its connections (J4 and MP4 went this way, and J4 again when its name was deleted where it stood). Remove a smashed name by moving it by name to an empty spot off the board and deleting it there; delete a plain text at its exact origin only where no part's outline or pad is within 0.3 mm; never DELETE on a line; check the part count after. `fusion silkscreen` does all of this and refuses to clear an earlier pass's lines.+- **RIPUP takes the whole run.** RIPUP at a point turns the entire wire chain between two pads into an airwire, not just the segment you pointed at. To remove one segment, DELETE at a point on that segment away from every other wire and pad, then re-run DRC and compare the copper with the version before. - **CHANGE by point does not land** (CHANGE LAYER, CHANGE SIZE at a point, or by 'R1>NAME'): use DELETE at the origin, or MOVE/ROTATE by name. - **`fusion_board_source` saves a new cloud version** each time it reads the board. An edit is never "unsaved": to undo a pass, promote the earlier version (`fusion_aps_versions {query}`, then Fusion API `DataFile.versions[n].promote()`), close the open copy with `{name, save:false}`, and reopen. - **Never close the bridge's "ADOM" panel window with a window-close call**: it closes Fusion. Click its own Close button.-- **`fusion_close_document` with no name closes the active document.** Always pass `{name, save:false}`.+- **`fusion_close_document` with no name closes the active document.** Always pass `{name, save:false}`. Even with `save:false` the bridge saves a version before closing ("saved before close to avoid Fusion's prompt"): close first, then promote the clean version, then reopen; promoting first lets the close save the bad board on top.
skills/aiflow-test-plan/SKILL.md+6@@ -56,3 +56,9 @@ moving a part, adding a test point (back to the schematic), or widening copper. - Parts directly under a probed point under 18 mm tall; within 50 mm of it, under 40 mm. - adom-aiflow-probing's planner still assumes a 0.3 mm tip and 0.15 mm XY error (unconfirmed); with those, a 0.5 mm pad shows negative landing margin there until the tip and error are measured.++## Where test pads go on the board++- At least 1.5 mm centre to centre from every other test pad, so a probe lands on one pad only; DRC passing is not enough (two pads 0.86 mm apart pass DRC and still share a probe).+- Out of the machine-contact columns and corner-pin zones: the contacts keep their grid positions and their silkscreen tags; the test pads move.+- A net that can already be probed on a contact or a corner pin needs no test pad (GND on the contacts and corner pins): leave it out rather than crowd the board.