Status: current. Build-time facts (device-link-bound builds, dev-gpu presets, measured dead ends) are in section 7 of docs/developer/agent-guide.md.
The public headers keep consumer and test translation units cheap to compile. Headers cannot shorten the device link, so they control only the per-TU front-end cost.
<batchlas/blas/linalg.hh>, which <batchlas.hh> includes, does not include:
Together they cost about 4.1 s per consumer TU. 71 of the 114 test and benchmark TUs use neither. These figures predate 2026-09-30 and have not been re-measured.
Both edges must stay cut. The headers form a cycle. Restoring either include brings back the whole umbrella, so cutting one edge gains nothing.
Code sites: include/batchlas/blas/linalg.hh (above functions.hh) and include/batchlas/sycl_interop.hh (above its <sycl/sycl.hpp> include). Consumers must configure with the same SYCL compiler; see docs/cpp-api.md, "Building against BatchLAS".