← Commit history
design/browser-evidence/stock-sink-nb-visual-check.jsonadded+9
@@ -0,0 +1,9 @@+{+  "automaticNavigation": false,+  "hint": "A human verification challenge is visible. If this page is required, preserve the owned window and request human assistance; never solve or bypass it automatically. Otherwise continue through the official vendor API/BOM tool or manufacturer source. Underlying DOM product text is not proof that the visible challenge cleared.",+  "lane": "nb",+  "next": "human_assistance",+  "productVerified": false,+  "schema": "adom/browser-access@1",+  "state": "human_verification"+}
design/browser-evidence/stock-sink-nb-visual.jsonadded+6
@@ -0,0 +1,6 @@+{+  "url": "https://www.mouser.com/en/ProductDetail/Wakefield-Thermal/680-125220",+  "title": "680-125220 Wakefield Thermal | Mouser",+  "text": "680-125220 product specifications; in stock 114. Underlying DOM observation.",+  "visualText": "Mouser Verification Required. Slide right to secure your access. Access denied because we believe you are using automation tools to browse the website."+}
docs/completion-plan.md+5−1
@@ -25,4 +25,8 @@ Sunon MF40200V1-1000U-G99 version 0.2.3 is published in source and registry: fac  ## Firmware continuation -Fresh latch acknowledgement, instrument readback/fault injection, and null-sensor diagnostic host connections are implemented and host-tested (25 Python tests plus C suites). MCU output stays locked; no flash occurred. Continue with bounded I2C/ADC adaptation and hardware-independent integration tests. Do not mistake these checks for physical qualification or use them to close thermal/finish gates. The reviewed fan-stall replay brings the raw inventory to 59.+Fresh latch acknowledgement, instrument readback/fault injection, and null-sensor diagnostic host connections are implemented and host-tested (25 Python tests plus C suites). MCU output stays locked; no flash occurred. Continue with bounded I2C/ADC adaptation and hardware-independent integration tests. Do not mistake these checks for physical qualification or use them to close thermal/finish gates. The reviewed fan-stall replay brings the raw inventory to 62.++## Browser recovery and fastener review++AIFlow 0.1.77 source commit `8ee8f9a3558e1d49a5faa2787f9fe326dc9cfcab` is directly published, registry-published and locally installed. Its visible-challenge regression passes against the recorded Native Browser evidence. Colby's installed version is not verified. See cooling-fastener-review.md: no examined PPS washer establishes our conservative full-depth insulation geometry. This is an unresolved mechanical gate, not authorization to drill or waive it.
docs/cooling-fastener-review.mdadded+21
@@ -0,0 +1,21 @@+# Cooling fastener review++The outer heatsink envelope clears board 18, but the proposed insulating washer does not yet establish a buildable mounting stack. The board remains unchanged and unreleased.++The IXTP15N50L2 drawing gives tab thickness F = 1.14–1.40 mm and mounting-hole diameter P = 3.53–4.08 mm. Boyd 7721-7PPSG has a nominal 0.81 mm shoulder, leaving 0.33–0.59 mm of tab depth unsleeved. Its 3.43 mm shoulder fits the minimum tab hole nominally, but this alone does not establish electrical isolation of the screw. Sources: [Littelfuse, page 2](https://www.littelfuse.com/assetdocs/Littelfuse-Discrete-MOSFETs-N-Channel-Linear-IXT-15N50-Datasheet.PDF?assetguid=E0766732-683F-41FB-B1D7-3CF72C201DE1), [Boyd, printed page 96](https://info.boydcorp.com/hubfs/Thermal/Air-Cooling/Boyd-Board-Level-Heatsinks-Catalog.pdf).++| PPS washer | Shoulder length | Shoulder diameter | Conservative screen |+|---|---:|---:|---|+| 7721-7PPSG | 0.81 mm | 3.43 mm | Shorter than the tab |+| 7721-3PPSG | 3.18 mm | 3.56 mm | Exceeds minimum tab hole by 0.03 mm |+| 7721-10PPSG | 2.41 mm | 3.56 mm | Exceeds minimum tab hole by 0.03 mm |++The other four PPS entries also fail either nominal radial fit or full-depth coverage. This is our conservative screening requirement, not a claim that all valid TO-220 mounts require a full sleeve. A shorter sleeve could work with a separately justified centering and insulation stack; none is verified here. Catalog tolerances and the permitted molding gate extension still matter.++The 3.5 mm PCB hole cannot pass a 5.46 mm washer flange or a normal screw head. Assemble the transistor/insulator/sink fastener before soldering the formed transistor leads, or design verified tool access and support; do not assume the PCB hole alone enables service. Avoid clamping through the PCB or loading the soldered transistor leads without a designed spacer/support path. Sink/fan weight needs a separate cradle.++Boyd recommends 0.452 N·m for the -7 washer, below the transistor's 1.13 N·m maximum. Neither figure is an approved torque for this complete assembly: the ceramic interface, screw, sink and clamp-pressure requirements remain unresolved.++Next: choose a toleranced sleeve/fastener or insulated clamp that fits the exact tab, preserve the existing PCB drill, then check the assembled screw/head/nut and tooling volumes in CAD. No washer is added to the released BOM by this screen.++[Reproducible dimensional screen](mechanical/cooling-fastener-screen.json). Run `python3 tools/screen_cooling_fasteners.py`.
docs/stock-cooling-candidate.md+2
@@ -27,3 +27,5 @@ python3 -s tools/plot_stock_cooling.py Adom Parts Search returned Mouser part 567-680-125220 at $17.17 each, 114 in stock and 253 days listed lead time. This is a point-in-time listing, not a purchase quote; shipping and tax are excluded. DigiKey and JLCPCB returned no results. [Saved API result](design/browser-evidence/stock-sink-api.json). No item was ordered.  Pup was denied; Native Browser visibly showed a verification challenge despite product text in DOM evaluation. The official API supplied the sourcing data. Manufacturer CAD has not been obtained. [Recorded browser/API review](docs/build-clips.md).++Follow-up: [fastener review](docs/cooling-fastener-review.md) checks exact tab thickness and the catalog shoulder-washer alternatives. The initial washer is not qualified.
mechanical/cooling-fastener-screen.jsonadded+110
@@ -0,0 +1,110 @@+{+  "status": "no-catalog-PPS-washer-proves-full-sleeve-fit",+  "acceptance": false,+  "tabThicknessMm": [+    1.14,+    1.4+  ],+  "tabHoleMm": [+    3.53,+    4.08+  ],+  "pcbHoleMm": 3.5,+  "requirement": "Conservative full-depth sleeve through the entire conductive tab, positive nominal radial fit at minimum hole. Not a claim that every valid mounting design requires a full sleeve.",+  "rows": [+    {+      "mpn": "7721-1PPSG",+      "flangeODMm": 7.11,+      "stemLengthMm": 3.18,+      "flangeThicknessMm": 1.07,+      "boreMm": 2.84,+      "stemODMm": 3.81,+      "nominalDiametralMarginAtMinHoleMm": -0.28,+      "nominalFullSleeveMarginAtMaxTabMm": 1.78,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-2PPSG",+      "flangeODMm": 7.11,+      "stemLengthMm": 4.7,+      "flangeThicknessMm": 1.07,+      "boreMm": 2.84,+      "stemODMm": 3.81,+      "nominalDiametralMarginAtMinHoleMm": -0.28,+      "nominalFullSleeveMarginAtMaxTabMm": 3.3,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-3PPSG",+      "flangeODMm": 7.11,+      "stemLengthMm": 3.18,+      "flangeThicknessMm": 1.07,+      "boreMm": 2.84,+      "stemODMm": 3.56,+      "nominalDiametralMarginAtMinHoleMm": -0.03,+      "nominalFullSleeveMarginAtMaxTabMm": 1.78,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-5PPSG",+      "flangeODMm": 7.92,+      "stemLengthMm": 0.79,+      "flangeThicknessMm": 1.19,+      "boreMm": 3.66,+      "stemODMm": 4.5,+      "nominalDiametralMarginAtMinHoleMm": -0.97,+      "nominalFullSleeveMarginAtMaxTabMm": -0.61,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-6PPSG",+      "flangeODMm": 7.11,+      "stemLengthMm": 0.79,+      "flangeThicknessMm": 1.19,+      "boreMm": 3.0,+      "stemODMm": 3.68,+      "nominalDiametralMarginAtMinHoleMm": -0.15,+      "nominalFullSleeveMarginAtMaxTabMm": -0.61,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-7PPSG",+      "flangeODMm": 5.46,+      "stemLengthMm": 0.81,+      "flangeThicknessMm": 1.02,+      "boreMm": 2.95,+      "stemODMm": 3.43,+      "nominalDiametralMarginAtMinHoleMm": 0.1,+      "nominalFullSleeveMarginAtMaxTabMm": -0.59,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    },+    {+      "mpn": "7721-10PPSG",+      "flangeODMm": 7.62,+      "stemLengthMm": 2.41,+      "flangeThicknessMm": 1.4,+      "boreMm": 2.97,+      "stemODMm": 3.56,+      "nominalDiametralMarginAtMinHoleMm": -0.03,+      "nominalFullSleeveMarginAtMaxTabMm": 1.01,+      "fullSleeveGeometryCandidate": false,+      "qualified": false+    }+  ],+  "sources": {+    "tab": "https://www.littelfuse.com/assetdocs/Littelfuse-Discrete-MOSFETs-N-Channel-Linear-IXT-15N50-Datasheet.PDF?assetguid=E0766732-683F-41FB-B1D7-3CF72C201DE1",+    "washers": "https://info.boydcorp.com/hubfs/Thermal/Air-Cooling/Boyd-Board-Level-Heatsinks-Catalog.pdf"+  },+  "limitations": [+    "PPS dimensions are nominal; supplier tolerances and allowable molding gate extension unresolved",+    "No screw, nut, pad-hole, tool-access or clamp stress qualification",+    "Short sleeve may be viable with independently verified centering/insulation; not established here",+    "Do not enlarge the existing PCB hole or force an interference-fit washer"+  ]+}
tools/screen_cooling_fasteners.pyadded+28
@@ -0,0 +1,28 @@+"""Dimensional screening only; not an electrical-isolation or clamp qualification."""+import json+from pathlib import Path+P=Path(__file__).resolve().parents[1]+# Littelfuse IXTP15N50L2 TO-220 outline, page 2, F and diameter P.+tab=(1.14,1.40);hole=(3.53,4.08)+# Boyd board-level catalog printed p96: A,B,C,D,E in millimetres.+parts=[('7721-1PPSG',7.11,3.18,1.07,2.84,3.81),+       ('7721-2PPSG',7.11,4.70,1.07,2.84,3.81),+       ('7721-3PPSG',7.11,3.18,1.07,2.84,3.56),+       ('7721-5PPSG',7.92,.79,1.19,3.66,4.50),+       ('7721-6PPSG',7.11,.79,1.19,3.00,3.68),+       ('7721-7PPSG',5.46,.81,1.02,2.95,3.43),+       ('7721-10PPSG',7.62,2.41,1.40,2.97,3.56)]+rows=[]+for mpn,flange,length,thickness,bore,od in parts:+ rows.append(dict(mpn=mpn,flangeODMm=flange,stemLengthMm=length,flangeThicknessMm=thickness,boreMm=bore,stemODMm=od,+  nominalDiametralMarginAtMinHoleMm=round(hole[0]-od,3),+  nominalFullSleeveMarginAtMaxTabMm=round(length-tab[1],3),+  fullSleeveGeometryCandidate=od<hole[0] and length>=tab[1],+  qualified=False))+r=dict(status='no-catalog-PPS-washer-proves-full-sleeve-fit',acceptance=False,+ tabThicknessMm=list(tab),tabHoleMm=list(hole),pcbHoleMm=3.5,+ requirement='Conservative full-depth sleeve through the entire conductive tab, positive nominal radial fit at minimum hole. Not a claim that every valid mounting design requires a full sleeve.',+ rows=rows,sources={'tab':'https://www.littelfuse.com/assetdocs/Littelfuse-Discrete-MOSFETs-N-Channel-Linear-IXT-15N50-Datasheet.PDF?assetguid=E0766732-683F-41FB-B1D7-3CF72C201DE1','washers':'https://info.boydcorp.com/hubfs/Thermal/Air-Cooling/Boyd-Board-Level-Heatsinks-Catalog.pdf'},+ limitations=['PPS dimensions are nominal; supplier tolerances and allowable molding gate extension unresolved','No screw, nut, pad-hole, tool-access or clamp stress qualification','Short sleeve may be viable with independently verified centering/insulation; not established here','Do not enlarge the existing PCB hole or force an interference-fit washer'])+(P/'mechanical/cooling-fastener-screen.json').write_text(json.dumps(r,indent=2)+'\n')+print(r['status'])