This is no good -- the point of a capability is to say exactly what data is needed by the candidate to run. If you just write **kwargs, it is left completely unspecified. This dynamic typing stuff is ok in some contexts but NOT when you're specifying an interface for arbitrary people you don't know to program against.

If you want Runnable, you have to have it be runnable without any arguments. Otherwise, there is no use for this capability -- you should define a specific version of this every time you have a different set of arguments you need to run.