@steve I was interested in your questions on socialhub about typing for Activity Streams objects.
I agree, the type system in JSON-LD is difficult to use.
There's also a real tension between using standards and making extensions. I think we did OK with AS2 and AP, but it's not always easy.