RAC: A Relational Agent Contract for Constraint-Governed Engineering Tasks
Organizations: University of Washington · Western Washington University · King Abdulaziz City for Science and Technology (KACST)
Abstract
Engineering agents must produce artifacts that satisfy exact, coupled constraints. Existing solutions often require agents to make semantic decisions and also derive consequences such as precise geometry or timing from those decisions, leading to failures in constraint-governed engineering tasks. In this paper, we introduce RAC, a harness-agnostic contract for the action and feedback layer of engineering agents. It specifies authoritative observations, semantic actions, tool-based realization, independent verification, and repair evidence. The agent decides which relations an artifact should satisfy; specialized tools derive their concrete consequences. On PCB placement, routing, and repair tasks, RAC achieves the highest clean-pass rate for all nine evaluated models, averaging 90.9%, compared with 74.0% for the strongest baseline, requirements-only delegation. In job-shop scheduling, direct relational actions achieve 96.3% quality pass versus 59.6% for code-mediated delivery with access to the same scheduling backend. Our evaluations on 141 embedded-code tasks across four microcontroller identify the action contract as a source of agent capability: preserving semantic control while delegating mechanically derivable outputs improves the reliability of constrained artifacts.
Figures & tables
| Model | Coord. | Coord.+Py | Candidates | Seq. Relations | Req.-Only | RAC |
|---|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 10.2% | 7.1% | 37.8% | 64.3% | 74.5% | 92.9 % |
| GLM-5.3-Flash | 25.5% | 20.4% | 33.7% | 60.2% | 68.4% | 89.8 % |
| GPT-5.6-Luna | 24.5% | 26.5% | 41.8% | 73.5% | 77.6% | 95.9 % |
| GPT-5.6-Sol | 29.6% | 26.5% | 40.8% | 65.3% | 77.6% | 92.9 % |
| Kimi-K2.7 | 6.1% | 4.1% | 22.4% | 43.9% | 61.2% | 77.6 % |
| Qwen3.6-27B | 26.5% | 25.5% | 34.7% | 62.2% | 77.6% | 93.9 % |
| Model | Coord. | Coord.+Py | Candidates | Seq. Relations | Req.-Only | RAC |
|---|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 12.5 | 10.3 | 13.0 | 11.2 | 9.2 | 9.0 |
| GLM-5.3-Flash | 38.2 | 41.7 | 35.2 | 20.4 | 22.4 | 19.4 |
| GPT-5.6-Luna | 41.8 | 66.9 | 23.4 | 14.9 | 14.8 | 9.1 |
| GPT-5.6-Sol | 59.1 | 62.0 | 37.6 | 21.7 | 25.5 | 19.5 |
| Kimi-K2.7 | 29.4 | 37.7 | 20.7 | 22.9 | 21.0 | 13.9 |
| Qwen3.6-27B | 409.4 | 511.1 | 194.1 | 157.4 | 109.8 | 88.8 |
| GPT-5.6-Luna | GPT-5.6-Sol | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Clean pass | Tokens / task | Clean pass | Tokens / task | |||||||||
| Harness | Coord. | RAC | Coord. | RAC | Coord. | RAC | Coord. | RAC | ||||
| Native | 29.6% | 92.9% | 63.3 | 22.9k | 16.1k | 6.8k | 26.5% | 95.9% | 69.4 | 22.4k | 14.5k | 7.9k |
| Codex | 24.5% | 91.8% | 67.3 | 71.4k | 53.2k | 18.2k | 22.7% | 93.9% | 71.2 | 69.8k | 64.9k | 4.9k |
| Claude Code | 26.5% | 91.8% | 65.3 | 81.9k | 60.0k | 21.9k | 32.7% | 94.9% | 62.2 | 84.8k | 78.8k | 6.0k |
| OpenCode | 25.5% | 92.9% | 67.4 | 47.4k | 35.1k | 12.3k | 26.5% | 93.9% | 67.4 | 47.6k | 38.4k | 9.2k |
| Final proposal | First proposal | |||||
|---|---|---|---|---|---|---|
| Model | Code | RAC | Code | RAC | ||
| DeepSeek-V4-Flash | 26.7% | 100.0 % | +73.3 | 10.0% | 100.0 % | +90.0 |
| GLM-5.3-Flash | 63.3% | 100.0 % | +36.7 | 46.7% | 100.0 % | +53.3 |
| GPT-5.6-Luna | 86.7% | 100.0 % | +13.4 | 83.3% | 96.7 % | +13.3 |
| GPT-5.6-Sol | 100.0 % | 100.0 % | 0.0 | 100.0 % | 100.0 % | 0.0 |
| Kimi-K2.7 | 30.0% | 96.7 % | +66.7 | 23.3% | 100.0 % | +76.7 |
Appendix figures & tables8 assets
Supplementary material from the paper’s appendix.
Appendix
| Model | Coord. | Coord.+Py | Candidates | Seq. Relations | Req.-Only | RAC |
|---|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 7.5k | 8.8k | 10.2k | 8.8k | 6.6 k | 6.6 k |
| GLM-5.3-Flash | 11.0k | 11.8k | 12.8k | 10.5k | 9.3k | 8.8 k |
| GPT-5.6-Luna | 9.9k | 10.1k | 11.4k | 9.3k | 7.2k | 6.0 k |
| GPT-5.6-Sol | 9.4k | 9.7k | 11.1k | 9.2k | 7.6k | 6.1 k |
| Kimi-K2.7 | 10.0k | 9.6k | 10.5k | 11.0k | 8.7k | 7.2 k |
| Qwen3.6-27B | 36.6k | 43.2k | 25.8k | 20.6k | 14.0k | 13.3 k |
| Adaptation method | Adaptation clean-pass | Overall clean-pass | Paired difference [95% CI] |
| Frozen coordinates | 187/459 (40.7%) | 187/702 (26.6%) | [ , ] |
| Affine coordinates | 239/459 (52.1%) | 239/702 (34.0%) | [ , ] |
| Empty-relation solver | 212/459 (46.2%) | 212/702 (30.2%) | [ , ] |
| Preserve-legal coordinates | 267/459 (58.2%) | 267/702 (38.0%) | [ , ] |
| Numeric best-of-three | 301/459 (65.6%) | 301/702 (42.9%) | [ , ] |
| RAC relational re-solve | 411/459 (89.5%) | 411/702 (58.5%) | — |
| Transform | Frozen | Numeric best-of-three | Relational re-solve |
|---|---|---|---|
| Board shrink 20% | 23/153 (15.0%) | 73/153 (47.7%) | 118/153 (77.1%) |
| Board expansion 20% | 46/153 (30.1%) | 110/153 (71.9%) | 141/153 (92.2%) |
| Footprint shrink 25% | 118/153 (77.1%) | 118/153 (77.1%) | 152/153 (99.3%) |
| Task | Requirement | Verification of realized artifact |
|---|---|---|
| P013: placement | Associate connector J1 with the left board edge and J2 with the right edge. | Each connector is 1.00 mm from its requested edge, meeting the task’s 1.00 mm limit. |
| R010: routing | Match the routed lengths of nets N2 and N3. | The measured mismatch is 0.00 mm, within the task oracle’s 1.00 mm tolerance. |
| C008: combined | Place J1 at the top edge, decoupling capacitors C1–C3 near U1 pins, and preserve the R1/C4 and R2/C5 filter groups. | J1 is 1.00 mm from the top edge; capacitor-to-pin distances are 2.00, 1.50, and 1.58 mm; filter-group spreads are 2.69 and 3.04 mm. |
| Model | RawSDK | SignaturesOnly | SourceLite | RAC | |
|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 132 | 43.9% | 39.4% | 42.4% | 68.2% |
| Qwen3.6-27B | 129 | 39.5% | 33.3% | 41.9% | 60.5% |
| GLM-5.3-Flash | 106 | 41.5% | 38.7% | 40.6% | 70.8% |
| Kimi-K2.7 | 130 | 43.8% | 46.2% | 44.6% | 63.1% |
| GPT-5.6-Luna | 140 | 59.3% | 55.7% | 57.9% | 87.1% |
| GPT-5.6-Sol | 121 | 62.8% | 59.5% | 66.1% | 78.5% |
| Model | RawSDK | SignaturesOnly | SourceLite | RAC | |
|---|---|---|---|---|---|
| DeepSeek-V4-Flash | 132 | 894,940 | 640,572 | 846,254 | 525,295 |
| Qwen3.6-27B | 129 | 1,478,250 | 1,198,840 | 1,405,793 | 858,130 |
| GLM-5.3-Flash | 106 | 762,785 | 575,674 | 725,054 | 446,729 |
| Kimi-K2.7 | 130 | 765,991 | 538,520 | 726,882 | 468,364 |
| GPT-5.6-Luna | 140 | 944,558 | 701,345 | 906,761 | 514,919 |
| GPT-5.6-Sol | 121 | 817,766 | 616,651 | 784,798 | 476,405 |
| Item | Verified value |
|---|---|
| Constructed designs | 10 |
| Assignments / output bits exhaustively checked | 92 / 208 |
| Correct actions accepted | 10/10 |
| One-row action changes rejected | 10/10 |
| Modified artifacts with forged receipts rejected | 10/10 |
| Supplied repair traces, fail pass | 10/10 |
| Domain | Traces | Matching outputs | Direct median (ms) | RAC median (ms) | Paired (ms) | Overhead | 95% interval |
|---|---|---|---|---|---|---|---|
| Logic | 400 | 400/400 | 1.211 | 1.658 | 0.398 | 30.84% | [ , ] |
| PCB | 24 | 24/24 | 59.737 | 59.451 | 0.158 | 0.66% | [ , ] |
| Scheduling | 24 | 24/24 | 2370.016 | 2372.419 | 0.304 | 0.24% | [ , ] |
| Embedded | 24 | 24/24 | 4011.018 | 3940.803 | 38.725 | 4.21% | [ , ] |
LLM Agent Reliability
Large language model (LLM) agent reliability concerns dependable, safe, and verifiable behavior across tools, multi-step tasks, and changing environments.
See all 843 papers