heibench

Hardware Engineering Integration bench

Drive the engine. Check the result.

Engineering engines — OpenRocket, PrusaSlicer, KiCad, OpenSCAD, OCCT — are built for a person sitting at a GUI. Two things follow, and the second is the one that bites.

A program cannot drive them well. Every one has a CLI or a binding, and every one of those is version-skewed, undocumented in places, and shaped around a human who will notice when something looks wrong.

And a program cannot look at the result. You catch a bad render by glancing at it. A script does not glance. Neither does an agent. So a tool that returns a plausible-looking artifact and says nothing is not merely unhelpful — it is indistinguishable from a tool that worked, and everything downstream inherits the mistake.

heibench does those two things and nothing else: it puts engineering engines under program control, and it adjudicates what they produce against declared intent.

The two layers

Drive

Put the engine under program control: headless, scriptable, version-aware, deterministic.

ToolEngine
orlab OpenRocket, via JPype — load .ork, run simulations, extract time series and flight events
prusaslicer-py PrusaSlicer, via its CLI — slice a model and get back a verified artifact, on PATH or as a Flatpak

Verify

Adjudicate an artifact against declared intent.

ToolDomainOracle
partspec mechanical parts, CAD-as-code OpenSCAD, OCCT (build123d / CadQuery)
netspec PCB connectivity kicad-cli
gerberdiff fabrication output (Gerber / Excellon) the fabrication files themselves

Each tool is independent — no shared runtime, no framework, nothing to adopt in order to use one.

What belongs here

A tool belongs if both hold:

  1. It puts an engineering engine or artifact under program control — headless, scriptable, deterministic, no human in the loop.
  2. It is honest about what it established — a structured result, a meaningful exit code, never reporting success it did not verify and never substituting a plausible result for a real one.

The second is not a quality preference. It is the condition that makes the first worth anything, and it is violated constantly — including nine times in this author's own code, across five unrelated domains, eight of which are still open.

What does not

Authoring and design generation, language runtimes, slicer post-processing, dependency management, and machine control at runtime are all out of scope. heibench is the design-time middle: operate the tool, and know whether to believe the output.

The contract

Humans and coding agents working in any heibench repository follow AGENTS.md. Each repository also carries its own, which wins where they conflict; the org-wide file is the floor, not the ceiling.

This site is canonical for the evidence behind that contract — the record of the core defect and the open adjudications between members.