abse/smartwatch-flex-top-only
Three-panel flex smartwatch with two parallel R3.9 bends, all components flat-top, low-profile JST connector harnesses, split heartbeat optical windows and screw-retained PCB mounting. Modeled 39 × 50.5 × 14.5mm prototype; 100% routing, zero native DRC and shorts. Hardware qualification pending.
- Version
- 0.2.20
- License
- unset
- Stars
- 0
scripts/run-mechanical-release-audits.py
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor,as_completed
import subprocess
root=Path(__file__).resolve().parent.parent;py='/workspace/.cloud-tools/python/bin/python'
jobs=[['audit-cabled-assembly.py'],['audit-pcb-insertion.py'],['audit-pcb-mounts.py'],['audit-plug-in-harnesses.py','upright-pcb'],['audit-mount-installation.py'],['audit-optical-paths.py'],['audit-button-actuator.py'],['audit-rendered-bends.py'],['audit-folded-panel-clearance.py','dist/index/circuit.json'],['audit-pcb-component-meshes.py','mechanical/upright-pcb.glb']]
def run(j):
p=subprocess.run([py,'scripts/'+j[0],*j[1:]],cwd=root,capture_output=True,text=True);(root/f'reports/electrical-fixes/{Path(j[0]).stem}-final.log').write_text(p.stdout+p.stderr);print(j[0],p.returncode,p.stdout[-120:],flush=True);return p.returncode
with ThreadPoolExecutor(max_workers=2) as pool:results=[f.result() for f in as_completed([pool.submit(run,j) for j in jobs])]
assert not any(results),results