ShaderBuildReportSink

A report store as a holder on another thread keeps it.

In the namespace construct::shader. Declared in src/libs/libconstruct/construct/shader/ShaderBuildReport.hpp.

Detailed description

The render worker, the forge's build threads and the SDF layer publish into the store of a document that the GUI thread can close at any moment. With a plain pointer they published into a freed store: on lavapipe the worker then waited forever on the freed store's mutex, and the shell's destructor waited forever on the worker (testConstructShellLifecycle under the ci profile, cleanupTestCase, 2026-10-16). A sink publishes while its store lives and into nothing after: the store's destructor waits for a publish in progress, then cuts the link.

Copyable and cheap. A default sink publishes nothing.

In this section