← Commit history
page.json+3−30
@@ -1,6 +1,6 @@ {   "slug": "tnpw04021k00beed",-  "type": "component",+  "type": "hardware",   "kind": "component",   "version": "0.1.0",   "title": "TNPW04021K00BEED precision resistor",@@ -60,32 +60,5 @@       "assembly": "Native variant and process review pending"     }   },-  "because": "Exact part used on the custom electronic load; original catalog record was missing.",-  "name": "@adom/tnpw04021k00beed",-  "files": [-    "README.md",-    "LICENSE",-    "LICENSE-KICAD.md",-    "THIRD_PARTY.md",-    "page.json",-    "package.json",-    "provenance.json",-    "footprint-input.json",-    "tnpw04021k00beed*",-    "symbol.html",-    "footprint.html",-    "hero.png",-    "datasheet.pdf",-    "skills/**",-    "tnpw04021k00beed-hero.glb",-    "tnpw04021k00beed-hero.overlay.json",-    "tnpw04021k00beed.glb"-  ],-  "dependencies": {},-  "visibility": "public",-  "org": "adom",-  "author": {-    "name": "John Lauer",-    "email": "[email protected]"-  }-}\ No newline at end of file+  "because": "Exact part used on the custom electronic load; original catalog record was missing."+}
review/footprint-embed.txtadded+1
@@ -0,0 +1 @@+OK: interactive embed (2 pads) → footprint.html
review/generated/TNPW04021K00BEED_Manufacturer_Example-viewer.htmladded+1
@@ -0,0 +1 @@+<!doctype html><html><head><meta charset="utf-8"><title>TNPW04021K00BEED_Manufacturer_Example — adom-footprint</title><style>body{margin:0;background:#0d1117;color:#e6edf3;font-family:-apple-system,sans-serif;min-height:100vh;display:flex;flex-direction:column}header{display:flex;align-items:center;gap:10px;padding:14px 22px;border-bottom:1px solid #222b38}.dot{width:10px;height:10px;border-radius:50%;background:#00e6dc;box-shadow:0 0 12px #00e6dc}.brand{font-weight:700}.brand span{color:#8b949e;font-weight:400}.wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:32px}.card{background:#11161f;border:1px solid #222b38;border-radius:14px;padding:22px 26px;max-width:min(92vw,720px)}.name{font-size:22px;font-weight:700}.meta{color:#8b949e;font-size:13px;margin-top:2px}.desc{color:#aeb6c2;font-size:13px;margin-top:6px}.svgbox{margin-top:16px;border:1px solid #222b38;border-radius:10px;background:#0d1117;overflow:hidden}.svgbox svg{display:block;width:100%;height:auto;max-height:64vh}footer{text-align:center;color:#5b6675;font-size:11px;padding:10px}</style></head><body><header><span class="dot"></span><span class="brand">adom-footprint <span>· PCB footprint viewer</span></span></header><div class="wrap"><div class="card"><div class="name">TNPW04021K00BEED_Manufacturer_Example</div><div class="meta">2 pads</div><div class="desc">Manufacturer reflow example; process qualification pending</div><div class="svgbox"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.050 -1.550 4.100 3.100" preserveAspectRatio="xMidYMid meet"><g class="adom-layer-courtyard"><rect x="-1.050" y="-0.550" width="2.100" height="1.100" fill="none" stroke="#FF26E2" stroke-width="0.05" stroke-dasharray="0.2,0.1"/></g><g class="adom-layer-fab"><rect x="-0.500" y="-0.250" width="1.000" height="0.500" fill="none" stroke="#6e7681" stroke-width="0.1"/></g><g class="adom-layer-copper"><g data-pad="1" data-shape="rect" data-size="0.550x0.600" data-mount="smd"><rect x="-0.750" y="-0.300" width="0.550" height="0.600" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="2" data-shape="rect" data-size="0.550x0.600" data-mount="smd"><rect x="0.200" y="-0.300" width="0.550" height="0.600" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g></g><g class="adom-layer-heatsink"></g><g class="adom-layer-drill"></g><g class="adom-layer-silk"><line x1="-0.500" y1="-0.510" x2="0.500" y2="-0.510" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-0.500" y1="0.510" x2="0.500" y2="0.510" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/></g><g class="adom-layer-padnum"><text x="-0.475" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.231" fill="#fff" font-family="sans-serif" style="pointer-events:none">1</text><text x="0.475" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.231" fill="#fff" font-family="sans-serif" style="pointer-events:none">2</text></g></svg></div></div></div><footer>rendered locally in Rust — no KiCad, no service round-trip</footer></body></html>\ No newline at end of file
review/generated/TNPW04021K00BEED_Manufacturer_Example.kicad_modadded+23
@@ -0,0 +1,23 @@+(footprint "TNPW04021K00BEED_Manufacturer_Example"+  (version 20240108)+  (generator "adom-footprint")+  (layer "F.Cu")+  (descr "Manufacturer reflow example; process qualification pending")+  (attr smd)+  (fp_rect (start -1.05 -0.55) (end 1.05 0.55)+    (stroke (width 0.05) (type default)) (fill none) (layer "F.CrtYd"))+  (fp_rect (start -0.5 -0.25) (end 0.5 0.25)+    (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab"))+  (fp_line (start -0.5 -0.51) (end 0.5 -0.51)+    (stroke (width 0.12) (type default)) (layer "F.SilkS"))+  (fp_line (start -0.5 0.51) (end 0.5 0.51)+    (stroke (width 0.12) (type default)) (layer "F.SilkS"))+  (fp_text reference "REF**" (at 0 -1.55)+    (layer "F.SilkS") (effects (font (size 0.8 0.8) (thickness 0.12))))+  (fp_text value "TNPW04021K00BEED_Manufacturer_Example" (at 0 1.55)+    (layer "F.Fab") (effects (font (size 0.8 0.8) (thickness 0.12))))+  (pad "1" smd rect (at -0.475 0) (size 0.55 0.6)+    (layers "F.Cu" "F.Paste" "F.Mask"))+  (pad "2" smd rect (at 0.475 0) (size 0.55 0.6)+    (layers "F.Cu" "F.Paste" "F.Mask"))+)
review/generated/TNPW04021K00BEED_Manufacturer_Example.svgadded+1
@@ -0,0 +1 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.050 -1.550 4.100 3.100" preserveAspectRatio="xMidYMid meet"><g class="adom-layer-courtyard"><rect x="-1.050" y="-0.550" width="2.100" height="1.100" fill="none" stroke="#FF26E2" stroke-width="0.05" stroke-dasharray="0.2,0.1"/></g><g class="adom-layer-fab"><rect x="-0.500" y="-0.250" width="1.000" height="0.500" fill="none" stroke="#6e7681" stroke-width="0.1"/></g><g class="adom-layer-copper"><g data-pad="1" data-shape="rect" data-size="0.550x0.600" data-mount="smd"><rect x="-0.750" y="-0.300" width="0.550" height="0.600" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="2" data-shape="rect" data-size="0.550x0.600" data-mount="smd"><rect x="0.200" y="-0.300" width="0.550" height="0.600" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g></g><g class="adom-layer-heatsink"></g><g class="adom-layer-drill"></g><g class="adom-layer-silk"><line x1="-0.500" y1="-0.510" x2="0.500" y2="-0.510" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-0.500" y1="0.510" x2="0.500" y2="0.510" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/></g><g class="adom-layer-padnum"><text x="-0.475" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.231" fill="#fff" font-family="sans-serif" style="pointer-events:none">1</text><text x="0.475" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.231" fill="#fff" font-family="sans-serif" style="pointer-events:none">2</text></g></svg>\ No newline at end of file
review/hero-reference.pngadded
⋯ 1 unchanged line ⋯
review/hub-import.txtadded+4
@@ -0,0 +1,4 @@+HINT: TNPW04021K00BEED symbol has no Mouser / LCSC property. A part without its MPN and Mouser/DigiKey/LCSC numbers cannot be ordered from the BOM/CPL the fab gets with the gerbers. Look them up with `adom-parts-search search TNPW04021K00BEED` and put them in the symbol (adom-symbol create: `mpn` + `distributors` in the create JSON) or the wiki page.json (component.distributor_links) before converting; LCSC may honestly be absent (say so on the page). The Adom Wiki property is the link to the part's component page (https://wiki.adom.inc/<owner>/<slug>), the one place an EE goes for the reviewed symbol, footprint, 3D, datasheet and provenance.+OK: wrote tnpw04021k00beed.adom-lbr.json (adom-lbr JSON — the canonical hub)+Hint: verified tnpw04021k00beed.adom-lbr.json (3965 bytes, sha256 5baf82cf0834b9a5434d767ebd6fcbcf9bd0555ea767c4a07c0211bc47aa63ad, read back identical)+Hint: convert it with `adom-lbr export-altium tnpw04021k00beed.adom-lbr.json` or `export-intlib`.
review/lbr-generate.txtadded+7
@@ -0,0 +1,7 @@+HINT: package named "TNPW04021K00BEED_Manufacturer_Example" (from the footprint); the symbol and deviceset are "TNPW04021K00BEED". --package-name overrides.+HINT: the source Description is a class word ("Resistor"); using the page brief instead, which names the actual part.+HINT: part attributes: MPN, MANUFACTURER, DATASHEET, ADOM_WIKI, DIGIKEY_PN+HINT: symbol re-laid into two columns (source mirrored the package: pins on top/bottom). --symbol-layout keep preserves the original.+HINT: >NAME/>VALUE placed from the source .kicad_sym's own Reference/Value positions, so this symbol matches its chip-outline twin.+OK: Generated tnpw04021k00beed.lbr (2 pins, 6785 bytes)+HINT: Lint PASSED with 0 error(s), 0 warning(s)
review/lbr-lint.txtadded+6
@@ -0,0 +1,6 @@+OK: Lint passed with 0 error(s), 0 warning(s)+{+  "passed": true,+  "errors": [],+  "warnings": []+}
review/lbr-validate.txtadded+1
@@ -0,0 +1 @@+OK: tnpw04021k00beed.lbr is a valid EAGLE .lbr with complete deviceset
review/package-lint.jsonadded+35
@@ -0,0 +1,35 @@+{+  "status": "ok",+  "data": {+    "errors": [],+    "warnings": [+      "component has no board/layout (.kicad_pcb or .brd): nobody can reproduce or re-fab the design from this page.",+      "component has no schematic (.kicad_sch or .sch): the design can't be reviewed or reused, only the symbol/footprint can.",+      "component has no footprint/symbol metadata (<name>_footprint.json / <name>_symbol.json): per-pad wire-attach data rides this, so importers can't place it programmatically.",+      "component is missing distributor number(s): mouser, lcsc (component.distributor_links). Sourcing tools (BOM panels, kicad-library-manager, parts search) key on these; add each real distributor part number, or set a distributor to false ONLY when the part is genuinely not carried there (e.g. \"mouser\": false)"+    ],+    "fixed": []+  },+  "hints": [+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no board/layout (.kicad_pcb or .brd): nobody can reproduce or re-fab the design from this page."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no schematic (.kicad_sch or .sch): the design can't be reviewed or reused, only the symbol/footprint can."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no footprint/symbol metadata (<name>_footprint.json / <name>_symbol.json): per-pad wire-attach data rides this, so importers can't place it programmatically."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component is missing distributor number(s): mouser, lcsc (component.distributor_links). Sourcing tools (BOM panels, kicad-library-manager, parts search) key on these; add each real distributor part number, or set a distributor to false ONLY when the part is genuinely not carried there (e.g. \"mouser\": false)"+    }+  ]+}
review/publish.jsonadded+108
@@ -0,0 +1,108 @@+{+  "status": "ok",+  "data": {+    "published": "adom/tnpw04021k00beed",+    "version": "0.1.0",+    "sha256": "sha256-765472785175556fc79bf47c1b0d5531655d9ac7f8c3e6190e6d3764a0c205b6",+    "visibility": "public",+    "url": "/adom/tnpw04021k00beed",+    "install": "adom-wiki pkg install adom/tnpw04021k00beed"+  },+  "hints": [+    {+      "level": "warn",+      "code": "PAGE_JSON_IGNORED",+      "message": "The tarball ships page.json carrying hero, but pkg publish does not read page.json: those fields did nothing here. Only the package.json manifest counts.",+      "action": "Move the fields into package.json (page.json is only read on page-repo pushes).",+      "data": {+        "path": "page.json",+        "tarball_version": "0.1.0",+        "publish_version": "0.1.0",+        "fields": [+          "hero"+        ]+      }+    },+    {+      "level": "warn",+      "code": "MEDIA_IN_TARBALL",+      "message": "hero.png (42 KB): page asset(s), not install payload -- 9% of this tarball is media every installer downloads on every update. Heroes and screenshots are served from the page repo (page.json), not the install tarball.",+      "action": "Remove them from the packed file set and republish. They stay on the page: the page repo keeps its existing copy when a new tarball stops shipping it. Only a brand-new page's FIRST publish needs the hero in the tarball (it materializes into the page repo once).",+      "data": {+        "files": [+          {+            "path": "hero.png",+            "bytes": 43476+          }+        ],+        "media_bytes": 43476,+        "tarball_bytes": 474187+      }+    },+    {+      "level": "info",+      "code": "NO_DISCOVERY_TRIGGERS",+      "message": "No discovery triggers are set, so AI agents are less likely to surface this component.",+      "action": "Add 'discovery_triggers' (phrases that should surface this package) to the manifest."+    },+    {+      "level": "info",+      "code": "WORKSPACE_FEATURE",+      "message": "This page can ship its author's Hydrogen bench: commit hydrogen/workspace.json (the pane layout with apps referenced by wiki page) and readers of a clone or fork open the same layout, apps installed and serving, with one command. Hydrogen Cloud lists it under Project workspaces with an Apply button.",+      "action": "From the container where the bench is open: adom-cli hydrogen workspace export --out hydrogen/workspace.json, then adom-wiki repo push adom/tnpw04021k00beed -m \"bench\" --files hydrogen/workspace.json. Readers: adom-cli hydrogen workspace apply adom/tnpw04021k00beed. Details: the wiki-workspaces skill.",+      "data": {+        "path": "hydrogen/workspace.json",+        "apply": "adom-cli hydrogen workspace apply adom/tnpw04021k00beed"+      }+    },+    {+      "level": "warn",+      "code": "DISTRIBUTOR_NUMBERS",+      "message": "No mouser, lcsc part numbers on this component. Buyers and the parts widgets read component.distributor_links; a part with no numbers cannot be ordered from the page.",+      "action": "Add to package.json: \"component\": { \"distributor_links\": { \"mouser\": \"<Mouser part #>\", \"digikey\": \"<DigiKey part #>\", \"lcsc\": \"<LCSC C-number>\" } }. Use false for a distributor that genuinely does not carry the part (e.g. \"lcsc\": false) so the warning stops.",+      "data": {+        "missing": [+          "mouser",+          "lcsc"+        ]+      }+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no board/layout (.kicad_pcb or .brd): nobody can reproduce or re-fab the design from this page."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no schematic (.kicad_sch or .sch): the design can't be reviewed or reused, only the symbol/footprint can."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component has no footprint/symbol metadata (<name>_footprint.json / <name>_symbol.json): per-pad wire-attach data rides this, so importers can't place it programmatically."+    },+    {+      "level": "warn",+      "code": "LINT",+      "message": "component is missing distributor number(s): mouser, lcsc (component.distributor_links). Sourcing tools (BOM panels, kicad-library-manager, parts search) key on these; add each real distributor part number, or set a distributor to false ONLY when the part is genuinely not carried there (e.g. \"mouser\": false)"+    },+    {+      "level": "info",+      "code": "PUBLISH_LAYERS",+      "message": "published the package layer (the install payload: manifest + scripts + bundled skills). The page git repo (Files tab) is a SEPARATE layer and is not synced by publish.",+      "action": "host source by pushing files into the page repo (never a source tarball); ship downloadable per-platform binaries with `adom-wiki release upload <ref> <ver> <file> --platform <os>`"+    },+    {+      "level": "info",+      "code": "SKILL_LAYOUT",+      "message": "shipped 1 user skill(s) in the install tarball",+      "action": "build/debug/test skills go in dev-skills/, app->wiki publish skills in publish-skills/ -- both are auto-excluded from the tarball and belong in the source repo (repo push), so you don't ship them to every install",+      "data": {+        "user": 1,+        "dev": 0,+        "publish": 0+      }+    }+  ]+}
review/symbol-embed.txtadded+1
@@ -0,0 +1 @@+OK: interactive embed (2 pins) → symbol.html
review/symbol-native-check.txtadded+1
@@ -0,0 +1 @@+OK: tnpw04021k00beed.kicad_sym validated — 2 pins, 0 unique pin names