Reference

Burr / Reference

Rulepack Reference

A rulepack selects which declared design features Burr checks.

Rulepacks are JSON files with schema burr.rulepack.v1.

Shape

{
"schema_version": "burr.rulepack.v1",
"id": "actuator_mount",
"version": "0.14.0",
"artifact_type": "actuator_mount",
"rules": [
{
"id": "m3_loaded_hole_edge_distance",
"kind": "hole_edge_distance",
"applies_to": {
"kind": "clearance_hole",
"fastener": "M3",
"role_any": ["loaded_mount"]
},
"min_center_to_edge_diameter_multiple": 3.0
},
{
"id": "mechanical_slot_edge_distance",
"kind": "feature_edge_distance",
"applies_to": {
"kind": "straight_slot",
"intent_any": ["mechanical_interface"]
},
"min_wall_to_edge_mm": 3.0
},
{
"id": "counterbore_edge_distance",
"kind": "feature_edge_distance",
"applies_to": {
"kind": "counterbore",
"intent_any": ["mechanical_interface"]
},
"diameter_field": "counterbore_diameter_mm",
"min_wall_to_edge_mm": 3.0
},
{
"id": "bearing_seat_edge_distance",
"kind": "feature_edge_distance",
"applies_to": {
"kind": "bearing_seat",
"intent_any": ["mechanical_interface"],
"role_any": ["loaded_bearing_support", "shaft_support"]
},
"diameter_field": "seat_diameter_mm",
"min_wall_to_edge_mm": 3.0
},
{
"id": "m3_standoff_boss_edge_distance",
"kind": "feature_edge_distance",
"applies_to": {
"kind": "standoff_boss",
"fastener": "M3",
"intent_any": ["mechanical_interface"]
},
"center_field": "boss_center_mm",
"diameter_field": "boss_diameter_mm",
"min_wall_to_edge_mm": 3.0
},
{
"id": "heat_set_insert_pocket_edge_distance",
"kind": "feature_edge_distance",
"applies_to": {
"kind": "heat_set_insert_pocket",
"insert": "M3x5.7",
"intent_any": ["mechanical_interface"]
},
"center_field": "pocket_center_mm",
"diameter_field": "pocket_diameter_mm",
"min_wall_to_edge_mm": 3.0
},
{
"id": "m3_insert_pocket_back_wall_thickness",
"kind": "blind_pocket_back_wall_thickness",
"applies_to": {
"kind": "heat_set_insert_pocket",
"insert": "M3x5.7",
"intent_any": ["mechanical_interface"]
},
"min_back_wall_thickness_mm": 2.0
}
]
}

feature_edge_distance defaults to diameter_mm for circular envelopes. Counterbore rules should override diameter_field to counterbore_diameter_mm so Burr checks the larger screw-head recess, not only the smaller bore. Bearing-seat edge rules should override diameter_field to seat_diameter_mm so Burr checks the bearing support envelope, not a smaller shaft or pilot hole. Standoff-boss edge rules should override center_field and diameter_field to boss_center_mm and boss_diameter_mm so Burr checks the boss footprint, not the smaller supported screw hole. Insert-pocket edge rules should override center_field and diameter_field to pocket_center_mm and pocket_diameter_mm so Burr checks the pocket envelope, not an unrelated feature center.

Selection

Design data can choose a rulepack:

{
"schema_version": "burr.design-data.v1",
"rulepack": { "path": "../../../rules/captured_slider.rulepack.json" }
}

The CLI can override that choice:

burr check --rulepack rules/printed_plate.rulepack.json .

Supported Rule Kinds

hole_edge_distance -> hole center has enough distance to a free edge
feature_edge_distance -> feature envelope has enough material to a free edge
minimum_wall_thickness -> hole leaves enough printable wall
fastener_support_wall_thickness -> boss/support leaves enough radial material
blind_pocket_back_wall_thickness -> blind pocket leaves enough material behind its bottom
standoff_boss_support_link -> boss references and aligns with the hole or insert it supports
feature_presence -> declared feature exists in the exported STEP
feature_count -> declared feature inventory count is in range
feature_pair_spacing -> declared feature pair leaves enough ligament
numeric_range -> declared measurement is in range

standoff_boss_support_link checks metadata relationship, not STEP geometry:

{
"id": "m3_standoff_boss_support_link",
"kind": "standoff_boss_support_link",
"applies_to": {
"kind": "standoff_boss",
"fastener": "M3",
"intent_any": ["mechanical_interface"]
},
"centerline_tolerance_mm": 0.25,
"support_diameter_tolerance_mm": 0.05,
"axis_dot_min": 0.99
}

Boundary

Rulepacks are design-rule checks, not constraint solvers. A rulepack only checks declared features and measurements it selects.