But that would lead to horrible designs.. Receive an Offer? Go into huge if/then/else construct to determine from the props what kind of Offer we deal with.
For this we have namespacing to indicate the bounded context (consistency boundary) in which the activity lends its meaning.
For ActivityStreams the first project that manages to broadly popularize a particular activity, gets to decide its predominant meaning (in current fedi practice).