The biggest problem for peer to peer ActivityPub is the fact that ActivityPub is primarily a "pull" protocol. You need to fetch a remote actor before interacting with it. This is not feasible in the environment where nodes are intermittently online.
What if we used a special activity to request objects? I've described this idea in more detail in Asynchronous object retrieval:
https://codeberg.org/silverpill/feps/src/branch/main/aef6/fep-aef6.md
I think this mechanism, if combined with self-authenticating objects, should make ActivityPub compatible with store and forward protocols.