If the methods aren’t naturally part of either self or context…you could just make them top-level functions. This isn’t Java; not everything has to be an object.
Alternatively, you could just make these methods static methods of some namespace-ish type and give them parameters for both context and self (which wouldn’t actually be self at this point but you know what I mean).
well part of the motivation for organizing by object is because the actual methods have lots of moving parts; there would be four or five additional parameters after context. so introducing a Tandem identifier would just make the calls even bigger in source.
combining self and context into temporary Tandem aggregates would retain self and context. context is immutable, so this is not a problem, but self (and its allocations) will mutate between various stages of the computation.
SwiftUI's UIViewRepresentable protocol passes the context as a parameter in methods like makeUIView(context:) and updateUIView(_:context:). This is also true for UIViewControllerRepresentable, NSViewRepresentable, NSViewControllerRepresentable, and WKInterfaceObjectRepresentable.
A benefit of self.computeSomething(context, ...) is that it can be shortened to computeSomething(context, ...).
With that being said, I don't think either approach is wrong.