master
John Lauer Datasheet-true STEP height (0.55 mm), side MPN mark re-applied; GLBs, hero rebuilt without Z stretch cc7d342 21d ago
{
 "schema": "adom/led-colour-pass@1",
 "mpn": "IN-S63BTR",
 "date": "2026-09-30",
 "purpose": "Coloured-lens STEP as the default model the AI retrieves; the originally shipped STEP kept as the optional -uncoloured file; page GLBs and hero rebuilt from the coloured STEP.",
 "colour": {
  "slug": "in-s63btr",
  "mpn": "IN-S63BTR",
  "family": "kicad-chip",
  "dominant_wavelength_nm": 622,
  "cie_xy": null,
  "datasheet": "IN-S63BT series p.3, lambda_D typ",
  "spectral_oklab_hue_deg": 22.3,
  "oklch": [
   0.6,
   0.1674,
   29.2
  ],
  "srgb": [
   0.8206,
   0.3102,
   0.254
  ],
  "hex": "#D14F41",
  "note": "red: lambda_d 622 nm is beyond the sRGB red primary; hue = red primary 29.2 deg (lambda_d-exact edge colour would be 22.3 deg, rose)"
 },
 "colour_method_doc": "tools/led_colour.py docstring (OKLCh, 65 % of gamut-cusp chroma, datasheet typical lambda_d)",
 "step": {
  "coloured": {
   "file": "IN-S63BTR.step",
   "sha256": "fd48f70a529f6511dd96a51d39829de26dc3561b428bccdc8d0d1263ff9e293a",
   "bytes": 414496,
   "content": "coloured library model (unchanged geometry) + one laser_etch part: a flat virtual MPN mark on the -Y side face"
  },
  "uncoloured": {
   "file": "IN-S63BTR-uncoloured.step",
   "sha256": "832dae523889e706b75be708d4a113006a5afc5e09999a19356da6b8bc055ff1",
   "bytes": 233679,
   "note": "plain model (library colours, no mark), height-corrected to 0.55 mm; no longer byte-identical to the originally shipped file, which is kept as provenance/IN-S63BTR-kicad-original.step",
   "matches_published_original": false
  },
  "colouring": {
   "src": "IN-S63BTR-uncoloured.step",
   "out": "IN-S63BTR.coloured.step",
   "family": "kicad-chip",
   "faces": 50,
   "faces_by_class": {
    "lens": 5,
    "substrate": 7,
    "terminal": 34,
    "cathode_mark": 4
   },
   "faces_recoloured": 5,
   "colours_srgb": {
    "lens": [
     0.8206,
     0.3102,
     0.254
    ],
    "substrate": [
     0.895,
     0.891,
     0.813
    ],
    "terminal": [
     0.859,
     0.738,
     0.496
    ],
    "cathode_mark": [
     0.34,
     0.68,
     0.445
    ]
   },
   "classification": {
    "z_top_mm": 0.55,
    "z_substrate_top_mm": 0.235
   },
   "kept_comment_block": true
  },
  "geometry_check": "verify_geom.py: same product name, face count, volume and centroid in both files; only XCAF face colours differ (ColorSurf + ColorGen set on every recoloured face)"
 },
 "page_glbs": {
  "meaning": "<MPN>.glb and <MPN>.insertion.glb are the page's composite LED scenes (FR4 board, pads, silk, solder fillets, the LED, an emissive LED_lit skin, FOV cone and a point light). The README's inline viewer (Colby's viewer + Static / Pick&Place additions) loads <MPN>.insertion.glb and animates the LED being inserted (placed) into its footprint; <MPN>.glb is the older static composite with the earlier silkscreen. Only the LED geometry/colours were replaced; every other node is copied unchanged.",
  "files": {
   "IN-S63BTR.glb": {
    "sha256": "4b9ac5ee851e5515ab0208dafd03d06d882a66a45a59615acb9dd4dd8385c5f9",
    "bytes": 90360,
    "bytes_before": 356920,
    "tris_before": 4126,
    "tris_after": 1247,
    "build": {
     "out": "IN-S63BTR.glb",
     "bytes": 90360,
     "sha256": "4b9ac5ee851e5515ab0208dafd03d06d882a66a45a59615acb9dd4dd8385c5f9",
     "led_node": "IN-S63BTR",
     "old_led_tris": 3308,
     "new_led_tris": 429,
     "old_mesh_top_m": 0.0010999999940395355,
     "new_mesh_top_m": 0.0005500327989596573,
     "old_node_scale_z": 0.545,
     "new_node_scale_z": 1.0,
     "rendered_height_mm": 0.55,
     "laser_etch": {
      "tris": 181,
      "z_mm": [
       0.3362,
       0.4488
      ]
     },
     "lens_material": {
      "name": "lens_red",
      "baseColor_linear": [
       0.6393,
       0.0784,
       0.0525,
       1
      ],
      "replaced": "lens_red",
      "old_baseColor": [
       0.4,
       0.02,
       0.02,
       1
      ]
     }
    }
   },
   "IN-S63BTR.insertion.glb": {
    "sha256": "0d423450f3cd9224e0437efc4ce15465bada7de5a762569c7fe652c7594ff736",
    "bytes": 56516,
    "bytes_before": 380612,
    "tris_before": 4406,
    "tris_after": 1527,
    "build": {
     "out": "IN-S63BTR.insertion.glb",
     "bytes": 56516,
     "sha256": "0d423450f3cd9224e0437efc4ce15465bada7de5a762569c7fe652c7594ff736",
     "led_node": "IN-S63BTR",
     "old_led_tris": 3308,
     "new_led_tris": 429,
     "old_mesh_top_m": 0.0010999999940395355,
     "new_mesh_top_m": 0.0005500327989596573,
     "old_node_scale_z": 0.545,
     "new_node_scale_z": 1.0,
     "rendered_height_mm": 0.55,
     "laser_etch": {
      "tris": 181,
      "z_mm": [
       0.3362,
       0.4488
      ]
     },
     "lens_material": {
      "name": "lens_red",
      "baseColor_linear": [
       0.6393,
       0.0784,
       0.0525,
       1
      ],
      "replaced": "lens_red",
      "old_baseColor": [
       0.4,
       0.02,
       0.02,
       1
      ]
     }
    }
   }
  },
  "animation_fix": "2026-09-30: the pick-and-place insertion animation (sampler keyframe accessors) is carried over unchanged; the earlier rebuilds of this pass had dropped those accessors, leaving the animation pointing at geometry data",
  "z_stretch": "none any more: the STEP is datasheet-true, the LED node Z scale is 1; the LED_lit glow skin sits 2 um above the lens top"
 },
 "hero_glb": {
  "file": "in-s63btr-hero.glb",
  "sha256": "4d126db318acbf77806ea5ccb86fbeb73cbf08e20b0674c4921b62affab0a4a9",
  "bytes": 34768,
  "built_like": "john/eee-fk1v470p hero (component-reference-overlay.py + finalize.py); the side MPN mark is the Adom.LaserEtch.MPN node (finalize.py etch_rgb match)",
  "base": "step2glb convert of IN-S63BTR.step, no Z scale (the STEP is datasheet-true, 0.55 mm)",
  "footprint": {
   "file": "IN-S63BTR.kicad_mod",
   "sha256": "548127840b3cddbe2357449394401ecd41cda0fbad5d89ac7a7764a3929c85b9",
   "note": "the page's current footprint, with the cathode silkscreen bracket on pad 1 (K)"
  },
  "overlay_report": {
   "font_file": "JetBrainsMono-Regular.ttf",
   "font_sha256": "c1bfaf2ccf7c56dc25af0cc595c4c6a064a8ebf88930d4543805a9d90692e581",
   "generator_sha256": "aad792e4550350dc175c098711cc77e6574a2b1191191bcf57865fa882580e18",
   "source_glb_sha256": "b8baa2e10b5d19560945aadfec788ab232a9acd62a438827162ae76ca3ba07be",
   "footprint_sha256": "548127840b3cddbe2357449394401ecd41cda0fbad5d89ac7a7764a3929c85b9",
   "derivative_sha256": "839462aa3a505cb8ca99467f32293ba3ddc9494f74f7fa01355de4d568886204",
   "manufacturer_geometry_buffer_prefix_unchanged": true,
   "units": "metre",
   "upAxis": "Z",
   "plane_z_mm": -0.02,
   "pad_outline": "copper perimeter, not solder mask or paste",
   "dash_mm": 0.07,
   "gap_mm": 0.045,
   "silkscreen_path_count": 3,
   "silkscreen_opacity": 0.3,
   "pad_outline_opacity": 0.5,
   "pad_outline_color": "teal #00E6DC",
   "uninstantiated_reference_placeholder": "omitted from component display",
   "pad_name_opacity": 0.5,
   "pad_label_height_mm": 0.25,
   "pad_names": "signal names resolved through canonical pin-to-pad mapping; active-low overbars preserved",
   "library_sha256": "e96622f32beb22df14250d7437e93ba9a7ea5437c48604b1529669683f28ca6f",
   "pads": [
    {
     "number": "1",
     "drill_boundary_drawn": false,
     "signal_name": "K",
     "display_name": "K",
     "pad_number_fallback": false,
     "active_low_overbar": false,
     "center_mm": [
      -0.8,
      -0.0
     ],
     "copper_size_mm": [
      0.9,
      1.0
     ],
     "copper_outline_bounds_mm": [
      [
       -1.25,
       -0.5
      ],
      [
       -0.35000000000000003,
       0.5
      ]
     ],
     "label_position_mm": [
      -1.6566666666666667,
      -0.0
     ]
    },
    {
     "number": "2",
     "drill_boundary_drawn": false,
     "signal_name": "A",
     "display_name": "A",
     "pad_number_fallback": false,
     "active_low_overbar": false,
     "center_mm": [
      0.8,
      -0.0
     ],
     "copper_size_mm": [
      0.9,
      1.0
     ],
     "copper_outline_bounds_mm": [
      [
       0.35000000000000003,
       -0.5
      ],
      [
       1.25,
       0.5
      ]
     ],
     "label_position_mm": [
      1.6533333333333333,
      -0.0
     ]
    }
   ],
   "overlay_nodes": 3,
   "limitations": [
    "Nonphysical reference lines, not a manufacturing layer or manufacturer STEP geometry.",
    "Silkscreen text follows source text/placement but uses the supplied display font.",
    "Physical body can occlude artwork on the seating plane; inspect underside or hide the body."
   ]
  },
  "finalize_spec": {
   "component_label": "IN-S63BTR (coloured model)",
   "component_tooltip": "IN-S63BTR\nRed lens colour (dominant wavelength 622 nm); the real lens is clear",
   "label_tooltip": "Pad labels (signal names)\nreference art, not part of the component",
   "tooltips": {
    "IN-S63BTR (STEP body)": "IN-S63BTR\nRed lens colour (dominant wavelength 622 nm); the real lens is clear"
   },
   "asset_extras": {
    "adomHero": {
     "mpn": "IN-S63BTR",
     "kind": "component + footprint reference art",
     "board_use": false
    }
   }
  }
 },
 "hero_png": {
  "file": "screenshots/hero.png",
  "sha256": "6197b970c315c87a6a7294dd001c1fce891f279c308c9e22ef2b3521cb20bd94",
  "template": "hero-proposals/_tools/hero_template.html (Ray layout, shared with the other basic-part heroes), LED copy tools/hero_template_led.html (optional lens-reflection control only)",
  "render": {
   "glb": "/work/IN-S63BTR.hero-base.glb",
   "dir": [
    -0.9,
    -1.3,
    1.1
   ],
   "dist": 7.6,
   "title": "Red SMD LED 0603",
   "mpn": "IN-S63BTR",
   "cat": "0603 SMD Red LED · 2.2 V drop · 25 mA max",
   "mfr": "Inolux Corporation  •  0603",
   "pill": "ADOM BASIC PART",
   "foot": "Manufacturer datasheet   ·   KiCad library CAD, coloured lens   ·   virtual MPN mark on the side   ·   Adom Wiki",
   "lens": "#D14F41",
   "emis": 0.0,
   "lensEnv": 0.25,
   "noToneMap": false,
   "exposure": 0.62
  },
  "before": "../before/in-s63btr/before-hero.png (outside the page copy)"
 },
 "laser_etch": {
  "date": "2026-09-30",
  "request": "John: MPN laser etch on every component page; on LEDs on the side so it does not ruin the LED window",
  "tool": "adom-aiflow etch_part.py --face side (tools/ in this folder), adom-chip-laser service POST /etch (0.1.0)",
  "text": "IN-S63BTR",
  "face": "side -Y (seating frame), the lens/body band above the PCB substrate; the top window is clear",
  "side_face_region_mm_in_turned_frame": [
   -0.5000001,
   -0.040000100000000094,
   0.5000001,
   0.2750001
  ],
  "frac": 0.8038,
  "font_mm": 0.149,
  "mark_rgb_linear": [
   0.012,
   0.012,
   0.012
  ],
  "mark_colour_reason": "auto: dark on the lens colour by contrast ratio",
  "fits": [
   {
    "frac": 0.55,
    "fontMm": 0.102,
    "mark_mm": [
     0.5419,
     0.077
    ],
    "region_mm": [
     1.0,
     0.315
    ],
    "scale_to_fill": 1.4763,
    "moved_mm": [
     -0.005,
     0.1157
    ],
    "mark_region": [
     -0.2709,
     0.079,
     0.2709,
     0.156
    ]
   },
   {
    "frac": 0.8038,
    "fontMm": 0.149,
    "mark_mm": [
     0.7919,
     0.1126
    ],
    "region_mm": [
     1.0,
     0.315
    ],
    "scale_to_fill": 1.0102,
    "moved_mm": [
     -0.0073,
     0.1148
    ],
    "mark_region": [
     -0.396,
     0.0612,
     0.396,
     0.1738
    ]
   }
  ],
  "checks": [
   "mark bbox inside the side face band (asserted by etch_part.py)",
   "seated on the real surface under the text (seat_mark.py, 5 um lift)",
   "original model frame kept (bbox unchanged); the uncoloured STEP untouched"
  ],
  "in_glbs": "separate node Adom.LaserEtch.MPN, child of the LED node with the inverse Z scale, so glyph height is true while the body is scaled to the datasheet height",
  "limitations": [
   "virtual identification mark; the real part is unmarked"
  ]
 },
 "height": {
  "date": "2026-09-30",
  "datasheet": "IN-S63BT series (2022-03-10) p.1, Figure 2 package dimensions: 0.55 mm overall height (0.19 mm PCB base); the features list rounds it to \"0603 0.6mm\"",
  "step_height_before_mm": 1.1,
  "step_height_after_mm": 0.55,
  "z_scale": 0.5,
  "method": "xcaf_scale_axis.py: the originally shipped KiCad model scaled in Z only about the seating plane (BRepBuilderAPI_GTransform per shape through XCAF; names, part and face colours kept), then coloured and side-etched again so the glyphs are not stretched",
  "kicad_original": {
   "file": "provenance/IN-S63BTR-kicad-original.step",
   "sha256": "98343205ec260ec165026ba2d44329a23096779ac36c553ea84aa7b370242e6d",
   "note": "the file this page shipped before the colour pass, byte for byte"
  }
 }
}