← All Pull Requests

kicad-lane: battery never overlaps another bridge's battery on one box (#112) #47

Merged opened by Colby Knox 2026-10-29

The verb battery waits for, then refuses to overlap, another bridge's battery (altium-lane's, fusion-lane's) on the same --target, found in /proc on the launching machine. KiCad frames rising mid-run can take the other run's clicks and keys (#112). Tested: refused against altium-lane's live run on DESKTOP-BAR6S0F before touching the box.

Files: skills/kicad-bridge-test/run_verb_tests.py (test script only; no runtime change).

🤖 Generated with Claude Code

Diff Skip to comments

--- a/skills/kicad-bridge-test/run_verb_tests.py+++ b/skills/kicad-bridge-test/run_verb_tests.py@@ -1,1795 +1,1814 @@⋯ 571 unchanged lines ⋯             ago = now - float(r.get("finishedAt") or 0)             if r.get("caller") not in IGNORE_CALLERS and r.get("verb") not in READ_ONLY and 0 <= ago <= 120:                 busy.append((r.get("caller"), r.get("verb"), round(ago, 1)))+        # another bridge's battery on the same box (altium-lane's, fusion-lane's), started from this machine: KiCad+        # windows rising during our run can take its clicks and keys (#112), so the two never overlap+        for pid in os.listdir("/proc") if os.path.isdir("/proc") else []:+            if not pid.isdigit() or int(pid) == os.getpid():+                continue+            try:+                argv = Path(f"/proc/{pid}/cmdline").read_bytes().split(b"\0")+            except OSError:+                continue+            args = [x.decode(errors="replace") for x in argv if x]+            if not args or "python" not in Path(args[0]).name:+                continue+            script = next((x for x in args if x.endswith("run_verb_tests.py")), "")+            if not script or "kicad-bridge-test" in script:+                continue+            tgt = next((args[i + 1] for i, x in enumerate(args[:-1]) if x == "--target"), "")+            if tgt == a.target:+                busy.append((f"another battery ({Path(script).parent.name}, pid {pid})", "run_verb_tests", 0.0))         return busy      waited = 0.0⋯ 1215 unchanged lines ⋯  if __name__ == "__main__":     sys.exit(main())+

Comments

No comments yet.

Log in to comment.