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
Merge PR #123: Make native library assembly and component tours explicit early steps
3 files changed
+34−9
docs/library-tours.md+6@@ -9,3 +9,9 @@ The additive `tools/library-tour.py` helper builds an interactive Adom 3D viewer `build --manifest library.json --out library-tour`, `serve --out library-tour --port 8878`, `record --out library-tour --port 8878`, then inspect both contact sheets and play the clips. Supply your run and thread to the helper. Hash/GLB validation and successful loading are not enough: reject blank, clipped, wrong-variant or motionless clips. `clips.json` deliberately leaves visual review pending. Register approved clips only after native EDA binding and visible review. Release integration note: the published source snapshot lacks the installed release's compose and tour implementations (issue #16). This helper is independently runnable; wiring its approved overview into released compose must occur in the complete maintained release tree. Do not replace the installed production binary with the incomplete snapshot or claim that integration is already released.++The early plan now exposes `components → libraries → models → library-tour → placement`+as distinct visits. `libraries` covers native symbol/pad/model binding; `models`+checks the board's actual selected models; `library-tour` records their visual review.+An existing schematic's library repair is different from later requirements-driven+part selection. These are AI-owned steps, not new automated qualification gates.
flows/board.json+27−8@@ -1,7 +1,7 @@ { "name": "board", "title": "The board flow: parts placement to a qualified board",- "scope": "Starts at the 3D models and parts placement on a board whose schematic, libraries and part choices already exist. Ends when the board is 100 percent routed, DRC-clean, poured, its copper measured, its current and thermal analyses passed, its nets and its 3D view walked through on camera, and the AI has delivered the video.",+ "scope": "Starts with component identity, reusable CAD review and native library assembly for an existing schematic/board. Reviews the selected model variants on camera before placement, then routes, pours, analyzes and delivers a bounded final video.", "steps": [ { "name": "intake",@@ -32,18 +32,41 @@ "Offer the optional Hydrogen progress widget. If enabled, reuse saved component, marked-model, symbol and later board/analysis thumbnails via widget event; do not generate extra screenshots or call a model solely for the widget. Respect widget disable immediately." ] },+ {+ "name": "libraries",+ "who": "ai",+ "does": "Assemble and validate the reviewed symbols, footprints and selected model variants in the chosen EDA before placement.",+ "workflow": [+ "Use the components register to build a portable project library for the actual EDA (KiCad, Altium or Fusion). Verify symbol pin numbers against footprint pads, package dimensions and pin-1/polarity; resolve model transforms and selected plain or marked STEP paths. Record native tool/version and evidence per part.",+ "Keep board reference mappings and native project transforms in the board project, while reusable source CAD and provenance remain on their existing global component pages. Do not claim native EDA support from a GLB gallery or a file extension alone.",+ "Return to components with --back --why when identity, rights or geometry cannot be resolved; preserve honest unknowns and report the affected references."+ ],+ "record": "Native library review with the selected symbol, footprint and model; saved verification evidence belongs with the library register."+ }, { "name": "models", "who": "ai",- "does": "audit every board component and missing symbol, footprint or 3D asset; resolve exact identities on the wiki first, then adom-parts-search and manufacturer/supplier sites (Pup when browser access is needed); publish missing component pages, repair portable model paths, and verify the native 3D board with kicad_model_check",+ "does": "Check native board model resolution and inspect the selected library variants in the chosen EDA; use the component register for unresolved assets.", "binary": [ "models" ],- "record": "nothing to film: the model check's list and the fixes; the 3D walkthrough later is the proof",+ "record": "Native board 3D inspection and model-check evidence; the separate library-tour step reviews each selected component.", "workflow": [ "Use the components register and its reviewed plain or explicitly selected marked variants; fix portable model paths, run kicad_model_check, then inspect the native board render. Do not substitute a model merely to make the missing-file gate pass." ] },+ {+ "name": "library-tour",+ "who": "ai",+ "does": "Review each selected component model in motion and produce a separate short library overview for the final video.",+ "workflow": [+ "Use tools/library-tour.py with the reviewed library.json, --run and --ai-thread. The manifest must identify the same plain or explicitly chosen marked variants and hashes that the native board uses. A marking choice does not authorize silent plain-model fallback.",+ "Inspect the detailed orbit tour and the moving overview in a rendered browser. Reject blank, clipped, wrong-variant or static clips; retain raw recordings and contact sheets. The detailed tour stays separately linked for component review.",+ "Budget approximately five seconds for the moving overview within the entire final video limit of 120 seconds. Do not insert the whole BOM walkthrough or one wiki-page shot per part into the final video. Optional scrolling wiki-page clips belong in the separate detailed review.",+ "Automatic overview selection in released compose requires the complete maintained release source (issue #16); until integrated, report that limitation explicitly and keep the reviewed clips and selection manifest available for integration."+ ],+ "record": "Two separate raw clips: a detailed component orbit tour and a roughly five-second moving overview. No title pages or baked captions; the final composer supplies its own overlays."+ }, { "name": "placement", "who": "ai",@@ -155,13 +178,9 @@ "returns": "any step may send the AI back to any earlier step: step <name> --back --why \"...\"", "later": [ {- "name": "components",+ "name": "part-selection", "does": "choose the parts from the requirements; SPICE may send the AI back here" },- {- "name": "libraries",- "does": "symbols, footprints, 3D chips for every part"- }, { "name": "schematic", "does": "the schematic, and the spec that falls out of it"
tests/component-workflow.py+1−1@@ -5,7 +5,7 @@ with tempfile.TemporaryDirectory(prefix='aiflow-components-') as d: base=[binary,'--ai-thread','ESC AI Flow Astra','--run',d] subprocess.run(base+['start','--board',board,'--spec',spec,'--engine','component-workflow-test'],check=True,capture_output=True,text=True) text=subprocess.run(base+['plan'],check=True,capture_output=True,text=True).stdout- assert text.index('step components')<text.index('step placement')+ assert text.index('step components') < text.index('step libraries') < text.index('step models') < text.index('step library-tour') < text.index('step placement') assert text.index('Search the wiki FIRST')<text.index('use adom-parts-search next') for phrase in ['ALL ADOM USERS','private reference-only','optional MPN marking','Cache keys','per-file provenance mandatory','datasheet page/figure/table','Unknown provenance stays unknown']: assert phrase in text,phrase