merge_assembly
Build a complete assembly from a JSON manifest: create the document, link and place components, recompute, and run all design gates in one deterministic call.
Instructions
Construct-up an assembly from a manifest JSON (the coordinator's one call): create the doc, link each component by file path, place it, recompute, and run the gates. Component files resolve relative to the manifest's directory; links auto-reload, so re-running picks up updated components (deterministic, idempotent).
manifest shape: { "name": "gearbox", "root": "gearbox.FCStd", "components": {"": {"file": "rel/part.FCStd", "object": ""?, "envelope": {"min":[...],"max":[...]}?}}, "instances": [{"component":"", "name":""?, "placement": [x,y,z] | {position,axis,angle_deg}, "mate": {"child_iface","parent","parent_iface", "verify_align":{"child_iface","parent_iface"}?}?}], "mates": [{"child","parent","child_iface","parent_iface", "verify_align":{...}?}]? }
Placement positions anchors; mate-by-frame positions everything else by aligning published interface frames (see publish_interface).
Any component carrying a PERFORMANCE contract (declare_performance, #226) is gated on it too, with no manifest opt-in: the merge consults the verdict verify_performance last RECORDED on that part and never measures, so it stays synchronous and deterministic. A requirement measured as NOT met fails the merge; a requirement with no verdict yet is neither passed nor failed and rides in report["performance"]["skipped"] — "unverified" is never read as "fine".
Returns {assembly, doc, root, placed, gates:{interference, bom, envelope,
interface_align?, typed?, requirements?, mobility?, performance?}, ok,
requirements?, mobility?, performance?, children?, library?}. The performance
gate and report block are absent entirely when no component declares a contract.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes |