from pathlib import Path
import json,sys,subprocess
R=Path(__file__).resolve().parent;sys.path.insert(0,str(R.parent/'parity_metadata_closure_A22'));from prepare_candidates import forms
P=R/'board/led_driver.kicad_pcb';CLI='/Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli';removed=[]
for attempt in range(8):
 d=json.loads((R/'trim_drc.json').read_text());ids={t['uuid'] for v in d['violations'] if v['type']=='track_dangling' for t in v['items']}
 if not ids:break
 s=P.read_text()
 for st,en,t in reversed(list(forms(s,'segment'))):
  if any(i in t for i in ids):removed.append(t);s=s[:st]+s[en:]
 P.write_text(s);subprocess.run([CLI,'pcb','drc','--refill-zones','--save-board','--schematic-parity','--severity-all','--format','json','-o',str(R/'trim_drc.json'),str(P)],check=True)
else:raise RuntimeError('prune bound')
(R/'trimmed_unused_tails.txt').write_text('\n'.join(removed));print('Trimmed tails',len(removed))
