Use of `attribute_goals//1` to compose answers

Sounds good. I still wonder about the use of wrapping for SWISH. After all, the wrapping is effective for all threads, so you have to use some thread-local activation anyway (global variable, thread-local predicate). Why not create a hard coded wrapper? Possibly not in general, but for SWISH embedding using conditional compilation.

I’ll try to have a look in the coming days.

As it stands, the new version of clpBNR that runs on SWISH is only missing two features that are available on a local SWIP install: tracing constraint propagation (which uses wrap_predicate) and the trace action on setting watchpoints on clpBNR intervals, which requires debugger activation via trace/0. These are both somewhat obscure developer tools and I don’t see any need to support these on SWISH - anybody using them should probably be running on local SWIP. So don’t expend any extra effort on my account; the status quo is quite acceptable IMO.