The orchard has two doorways
Copper Orchard is a small arrangement of luminous fruit and moving pollen. You already know the ideas: vertices, shaders, buffers, submissions, and completion. Metal gives those ideas a different API contract. Apple’s metal-cpp exposes Metal through C++ interfaces so scene data, math, resource policy, and rendering decisions can remain in C++. A small Objective-C++ file can own the Cocoa window, view, application delegate, and event callbacks. Keep this boundary narrow and name the borrowed objects crossing it.
Create one implementation translation unit for metal-cpp’s implementation macros, then include its ordinary headers elsewhere. Link the required Apple frameworks. Do not put the implementation macros in a commonly included header; multiple definitions are a build-structure error, not a rendering problem. Keep platform events flowing on their required thread and hand the renderer a clear frame/resize request rather than letting every Cocoa callback mutate GPU state.
The supplied SDK-only orchard_probe.mm is a command-line compute check, not the full orchard window and not a metal-cpp implementation. It uses Objective-C++ and ARC to run with the installed SDK alone. The separate metal_cpp_device.cpp demonstrates the C++ ownership boundary and requires Apple’s headers. This distinction lets you verify the local GPU immediately while building the intended C++ renderer deliberately.
Draw three boxes: portable scene/math, metal-cpp renderer, Cocoa window bridge. Place every proposed responsibility in exactly one box.
