Files
wehub-resource-sync 91e75e620b
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Has been cancelled
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Has been cancelled
CD: Docs MCP Server / build (linux/amd64) (push) Has been cancelled
CD: Docs MCP Server / build (linux/arm64) (push) Has been cancelled
CD: Docs MCP Server / merge (push) Has been cancelled
CI: cua-driver distro-compat matrix / Resolve release version (push) Has been cancelled
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Has been cancelled
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Has been cancelled
CI: cua-driver distro-compat matrix / Distro compat summary (push) Has been cancelled
CI: Rust Linux unit / Rust Linux unit and compile (push) Has been cancelled
CI: Rust Windows unit / Rust Windows unit and compile (push) Has been cancelled
CI: Nix Linux Rust source / Nix / compositor build (push) Has been cancelled
CI: Nix Linux Rust source / Nix / driver package (push) Has been cancelled
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:19 +08:00

103 lines
4.2 KiB
Python

"""Auto-generated cb task for KiCad submission d5947ae7-19bf-42dc-92c4-c9ca182d6d8d."""
from __future__ import annotations
import asyncio
from pathlib import Path
import cua_bench as cb
_SUBMISSION_ID = "d5947ae7-19bf-42dc-92c4-c9ca182d6d8d"
_REMOTE_PROJECT_DIR = "/home/cua/kicad_project"
_HARNESS_DIR = Path(__file__).parent
@cb.tasks_config
def tasks() -> list[cb.Task]:
return [
cb.Task(
description='''Revise the 5V fixed-output LM2596S-5 buck converter shown in the attached schematic to improve stability and transient performance by strengthening both input and output filtering while keeping the overall topology unchanged. Add a 100 nF ceramic capacitor for improved high-frequency output noise suppression and include a 10 µF ceramic capacitor to enhance input decoupling during switching events. Increase the output bulk capacitance from 220 µF to 470 µF to improve load transient response and energy buffering capability. All other components and connections remain unchanged.''',
metadata={"difficulty": 'medium', "submission_id": _SUBMISSION_ID},
)
]
@cb.setup_task(split="train")
async def start(task_cfg: cb.Task, session: cb.DesktopSession) -> None:
await session.apps.kicad.install(with_shortcut=True)
initial_dir = _HARNESS_DIR / "initial"
for local_path in sorted(initial_dir.rglob("*")):
if not local_path.is_file():
continue
rel = local_path.relative_to(initial_dir)
remote_path = f"{_REMOTE_PROJECT_DIR}/{rel.as_posix()}"
remote_dir = f"{_REMOTE_PROJECT_DIR}/{rel.parent.as_posix()}"
await session.run_command(f"mkdir -p '{remote_dir}'", check=False)
await session.write_bytes(remote_path, local_path.read_bytes())
try:
await session.apps.kicad.launch(project_path='/home/cua/kicad_project/kicad_buck converter_circuit/kicad_buck converter_circuit.kicad_pro')
except Exception:
pass
await asyncio.sleep(5)
@cb.solve_task(split="train")
async def solve(task_cfg: cb.Task, session: cb.DesktopSession) -> None:
"""Oracle solver: upload reference.net directly to the expected output path."""
await session.run_command(f"mkdir -p '{_REMOTE_PROJECT_DIR}'", check=False)
await session.write_bytes(
f"{_REMOTE_PROJECT_DIR}/output.net",
(_HARNESS_DIR / "reference.net").read_bytes(),
)
@cb.evaluate_task(split="train")
async def evaluate(task_cfg: cb.Task, session: cb.DesktopSession) -> float:
from cua_bench.netlist_compare import (
compare_kicad_netlists,
load_reference_netlist,
)
reference = load_reference_netlist(_HARNESS_DIR / "reference.net", _HARNESS_DIR)
# Try common netlist output locations first
candidate_paths = [
f"{_REMOTE_PROJECT_DIR}/{_SUBMISSION_ID}.net",
f"{_REMOTE_PROJECT_DIR}/output.net",
]
for path in candidate_paths:
result = await session.run_command(f"cat '{path}'", check=False)
candidate = result.get("stdout", "")
if candidate.strip():
return compare_kicad_netlists(candidate, reference)
# Search for any .net file in the project dir
result = await session.run_command(
f"find {_REMOTE_PROJECT_DIR} -name '*.net' | head -1", check=False
)
net_path = result.get("stdout", "").strip()
if net_path:
result = await session.run_command(f"cat '{net_path}'", check=False)
candidate = result.get("stdout", "")
if candidate.strip():
return compare_kicad_netlists(candidate, reference)
# Fall back: agent edited schematic without exporting — use kicad-cli to generate netlist
result = await session.run_command(
f"find {_REMOTE_PROJECT_DIR} -name '*.kicad_sch' | head -1", check=False
)
sch_path = result.get("stdout", "").strip()
if sch_path:
out_net = "/tmp/kicad_eval_output.net"
await session.run_command(
f"kicad-cli sch export netlist '{sch_path}' -o '{out_net}'",
check=False,
)
result = await session.run_command(f"cat '{out_net}'", check=False)
candidate = result.get("stdout", "")
if candidate.strip():
return compare_kicad_netlists(candidate, reference)
return 0.0