from pathlib import Path
import shutil,sys,re,uuid,json
B=Path('work/tri-product-continuation-2026-10-10.nosync').resolve();R=B/'lamp_VLED_width_A58';R.mkdir(exist_ok=True)
if (R/'checks.json').exists():raise RuntimeError('Final candidate exists: generate only in a fresh isolated comparison directory')
shutil.copytree(B/'lamp_ground_closure_A57/board',R/'board',dirs_exist_ok=True)
for name in ['netlist.xml','verify_board.py','run_checks.sh','VLED_track_width_audit.json']:shutil.copy2(B/'lamp_ground_closure_A57'/name,R/name)
sys.path.insert(0,str(B/'parity_metadata_closure_A22'));from prepare_candidates import forms
P=R/'board/led_driver.kicad_pcb';s=P.read_text();removed=[]
for st,en,t in reversed(list(forms(s,'segment'))):
 if '(net "/VLED_GUARDED")' in t:removed.append(t);s=s[:st]+s[en:]
adds=[]
for layer,pts in [('B.Cu',[(91,80.24),(94.45,80.24),(94.45,8),(70,8),(70,10)]),('F.Cu',[(70,10),(40,10),(10,10)])]:
 for a,b in zip(pts,pts[1:]):adds.append('(segment (start %s %s) (end %s %s) (width 2.0) (layer "%s") (net "/VLED_GUARDED") (uuid "%s"))'%(*a,*b,layer,str(uuid.uuid4())))
s=s.rstrip()[:-1]+'\n'+'\n'.join(adds)+'\n)\n';s=s.replace('A57 GND CLOSURE CANDIDATE','A58 POWER WIDTH CANDIDATE');P.write_text(s);(R/'removed_VLED_thin_tracks.txt').write_text('\n'.join(removed));(R/'edit_plan.json').write_text(json.dumps({'replaced_VLED_tracks':len(removed),'new_width_mm':2.0,'power_path':'J1.7 -> board edge94.45 -> J4.1 -> J3.1 -> J2.1','layers':2,'new_power_vias':0,'physical_current_rating':'NOT_VALIDATED','manufacturing':'HOLD'},indent=2))
