component
FTS-105-01-L-S single-row programming header
Public Made by Adomby adom
Exact single-row header; provisional mechanical and process qualification.
← Commit history
Add five-pin header assets and document manufacturer drill discrepancy
10 files changed
+202−29
page.json+3−29review/generated/FTS-105-01-L-S_Vertical-viewer.html+1review/generated/FTS-105-01-L-S_Vertical.kicad_mod+35review/generated/FTS-105-01-L-S_Vertical.svg+1review/hero-reference.pngreview/lbr-lint.txt+6review/lbr-validate.txt+1review/package-lint.json+41review/publish.json+113review/symbol-native-check.txt+1page.json+3−29@@ -1,6 +1,6 @@ { "slug": "fts-105-01-l-s",- "type": "component",+ "type": "hardware", "kind": "component", "version": "0.1.0", "title": "FTS-105-01-L-S single-row programming header",@@ -74,31 +74,5 @@ "assembly": "Finished-hole and mating/crimp qualification pending" } },- "because": "Exact header selected for electronic-load fan or sensor harness; catalog assets were missing.",- "name": "@adom/fts-105-01-l-s",- "files": [- "README.md",- "LICENSE",- "THIRD_PARTY.md",- "page.json",- "package.json",- "provenance.json",- "footprint-input.json",- "fts-105-01-l-s*",- "symbol.html",- "footprint.html",- "hero.png",- "skills/**",- "build_model.py",- "fts-105-01-l-s-hero.glb",- "fts-105-01-l-s-hero.overlay.json",- "fts-105-01-l-s.glb"- ],- "dependencies": {},- "visibility": "public",- "org": "adom",- "author": {- "name": "John Lauer",- "email": "[email protected]"- }-}+ "because": "Exact header selected for electronic-load fan or sensor harness; catalog assets were missing."+}
review/generated/FTS-105-01-L-S_Vertical-viewer.htmladded+1@@ -0,0 +1 @@+<!doctype html><html><head><meta charset="utf-8"><title>FTS-105-01-L-S_Vertical โ 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">FTS-105-01-L-S_Vertical</div><div class="meta">5 pads</div><div class="desc">Samtec single-row 1.27mm pitch, recommended 0.71mm hole; 1mm pad is Adom process candidate.</div><div class="svgbox"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.450 -2.000 4.900 9.100" preserveAspectRatio="xMidYMid meet"><g class="adom-layer-courtyard"><rect x="-1.450" y="-1.000" width="2.900" height="7.100" fill="none" stroke="#FF26E2" stroke-width="0.05" stroke-dasharray="0.2,0.1"/></g><g class="adom-layer-fab"><rect x="-1.080" y="-0.635" width="2.160" height="6.350" fill="none" stroke="#6e7681" stroke-width="0.1"/></g><g class="adom-layer-copper"><g data-pad="1" data-shape="rect" data-size="1.000x1.000" data-mount="thru_hole"><rect x="-0.500" y="-0.500" width="1.000" height="1.000" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="2" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="1.270" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="3" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="2.540" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="4" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="3.810" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="5" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="5.080" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g></g><g class="adom-layer-heatsink"></g><g class="adom-layer-drill"><circle cx="0.000" cy="0.000" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="1.270" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="2.540" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="3.810" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="5.080" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/></g><g class="adom-layer-silk"><line x1="-1.200" y1="-0.755" x2="1.200" y2="-0.755" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="1.200" y1="-0.755" x2="1.200" y2="5.835" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="1.200" y1="5.835" x2="-1.200" y2="5.835" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-1.200" y1="5.835" x2="-1.200" y2="-0.755" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-1.380" y1="-0.935" x2="-0.780" y2="-0.935" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/></g><g class="adom-layer-padnum"><text x="0.000" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">1</text><text x="0.000" y="1.270" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">2</text><text x="0.000" y="2.540" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">3</text><text x="0.000" y="3.810" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">4</text><text x="0.000" y="5.080" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">5</text></g></svg></div></div></div><footer>rendered locally in Rust โ no KiCad, no service round-trip</footer></body></html>
review/generated/FTS-105-01-L-S_Vertical.kicad_modadded+35@@ -0,0 +1,35 @@+(footprint "FTS-105-01-L-S_Vertical"+ (version 20240108)+ (generator "adom-footprint")+ (layer "F.Cu")+ (descr "Samtec single-row 1.27mm pitch, recommended 0.71mm hole; 1mm pad is Adom process candidate.")+ (attr smd)+ (fp_rect (start -1.45 -1) (end 1.45 6.1)+ (stroke (width 0.05) (type default)) (fill none) (layer "F.CrtYd"))+ (fp_rect (start -1.08 -0.635) (end 1.08 5.715)+ (stroke (width 0.1) (type default)) (fill none) (layer "F.Fab"))+ (fp_line (start -1.2 -0.755) (end 1.2 -0.755)+ (stroke (width 0.12) (type default)) (layer "F.SilkS"))+ (fp_line (start 1.2 -0.755) (end 1.2 5.835)+ (stroke (width 0.12) (type default)) (layer "F.SilkS"))+ (fp_line (start 1.2 5.835) (end -1.2 5.835)+ (stroke (width 0.12) (type default)) (layer "F.SilkS"))+ (fp_line (start -1.2 5.835) (end -1.2 -0.755)+ (stroke (width 0.12) (type default)) (layer "F.SilkS"))+ (fp_line (start -1.38 -0.935) (end -0.78 -0.935)+ (stroke (width 0.12) (type default)) (layer "F.SilkS"))+ (fp_text reference "REF**" (at 0 -2)+ (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))+ (fp_text value "FTS-105-01-L-S_Vertical" (at 0 7.1)+ (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))+ (pad "1" thru_hole rect (at 0 0) (size 1 1) (drill 0.71)+ (layers "*.Cu" "*.Mask"))+ (pad "2" thru_hole circle (at 0 1.27) (size 1 1) (drill 0.71)+ (layers "*.Cu" "*.Mask"))+ (pad "3" thru_hole circle (at 0 2.54) (size 1 1) (drill 0.71)+ (layers "*.Cu" "*.Mask"))+ (pad "4" thru_hole circle (at 0 3.81) (size 1 1) (drill 0.71)+ (layers "*.Cu" "*.Mask"))+ (pad "5" thru_hole circle (at 0 5.08) (size 1 1) (drill 0.71)+ (layers "*.Cu" "*.Mask"))+)
review/generated/FTS-105-01-L-S_Vertical.svgadded+1@@ -0,0 +1 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.450 -2.000 4.900 9.100" preserveAspectRatio="xMidYMid meet"><g class="adom-layer-courtyard"><rect x="-1.450" y="-1.000" width="2.900" height="7.100" fill="none" stroke="#FF26E2" stroke-width="0.05" stroke-dasharray="0.2,0.1"/></g><g class="adom-layer-fab"><rect x="-1.080" y="-0.635" width="2.160" height="6.350" fill="none" stroke="#6e7681" stroke-width="0.1"/></g><g class="adom-layer-copper"><g data-pad="1" data-shape="rect" data-size="1.000x1.000" data-mount="thru_hole"><rect x="-0.500" y="-0.500" width="1.000" height="1.000" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="2" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="1.270" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="3" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="2.540" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="4" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="3.810" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g><g data-pad="5" data-shape="circle" data-size="1.000x1.000" data-mount="thru_hole"><circle cx="0.000" cy="5.080" r="0.500" fill="#C83434" stroke="#ef5350" stroke-width="0.04"/></g></g><g class="adom-layer-heatsink"></g><g class="adom-layer-drill"><circle cx="0.000" cy="0.000" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="1.270" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="2.540" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="3.810" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/><circle cx="0.000" cy="5.080" r="0.355" fill="#0d1117" stroke="#666" stroke-width="0.05"/></g><g class="adom-layer-silk"><line x1="-1.200" y1="-0.755" x2="1.200" y2="-0.755" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="1.200" y1="-0.755" x2="1.200" y2="5.835" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="1.200" y1="5.835" x2="-1.200" y2="5.835" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-1.200" y1="5.835" x2="-1.200" y2="-0.755" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/><line x1="-1.380" y1="-0.935" x2="-0.780" y2="-0.935" stroke="#00cccc" stroke-width="0.12" stroke-linecap="round"/></g><g class="adom-layer-padnum"><text x="0.000" y="0.000" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">1</text><text x="0.000" y="1.270" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">2</text><text x="0.000" y="2.540" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">3</text><text x="0.000" y="3.810" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">4</text><text x="0.000" y="5.080" text-anchor="middle" dominant-baseline="central" font-size="0.420" fill="#fff" font-family="sans-serif" style="pointer-events:none">5</text></g></svg>
review/hero-reference.pngadded⋯ 1 unchanged line ⋯
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: fts-105-01-l-s.lbr is a valid EAGLE .lbr with complete deviceset
review/package-lint.jsonadded+41@@ -0,0 +1,41 @@+{+ "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)",+ "DEPS_UNDECLARED: 1 imported module(s) are not declared in dependencies: OCP. Declare each as an owner-qualified dependency (<owner>/<slug>) or remove the import. (Relative paths and built-ins are ignored; globally-provided modules may be false positives.)"+ ],+ "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)"+ },+ {+ "level": "warn",+ "code": "LINT",+ "message": "DEPS_UNDECLARED: 1 imported module(s) are not declared in dependencies: OCP. Declare each as an owner-qualified dependency (<owner>/<slug>) or remove the import. (Relative paths and built-ins are ignored; globally-provided modules may be false positives.)"+ }+ ]+}
review/publish.jsonadded+113@@ -0,0 +1,113 @@+{+ "status": "ok",+ "data": {+ "published": "adom/fts-105-01-l-s",+ "version": "0.1.0",+ "sha256": "sha256-282de2808d6f43b3ccc2fb4c0fcc4cf8d84f873705651887139d074ed004f91f",+ "visibility": "public",+ "url": "/adom/fts-105-01-l-s",+ "install": "adom-wiki pkg install adom/fts-105-01-l-s"+ },+ "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 (18 KB): page asset(s), not install payload -- 10% 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": 18003+ }+ ],+ "media_bytes": 18003,+ "tarball_bytes": 171940+ }+ },+ {+ "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/fts-105-01-l-s -m \"bench\" --files hydrogen/workspace.json. Readers: adom-cli hydrogen workspace apply adom/fts-105-01-l-s. Details: the wiki-workspaces skill.",+ "data": {+ "path": "hydrogen/workspace.json",+ "apply": "adom-cli hydrogen workspace apply adom/fts-105-01-l-s"+ }+ },+ {+ "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": "warn",+ "code": "LINT",+ "message": "DEPS_UNDECLARED: 1 imported module(s) are not declared in dependencies: OCP. Declare each as an owner-qualified dependency (<owner>/<slug>) or remove the import. (Relative paths and built-ins are ignored; globally-provided modules may be false positives.)"+ },+ {+ "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-native-check.txtadded+1@@ -0,0 +1 @@+OK: fts-105-01-l-s.kicad_sym validated โ 5 pins, 0 unique pin names