------------------------------------------------------------------------------ -- Inheritance - Receiver tracking her givers -- (Project tracking its children) -- (Team tracking its parents) ------------------------------------------------------------------------------ Source role Role SourceHolderProject source SourceId project ProjectId UniqueSourceHolderProject source SourceHolderGroup source SourceId group GroupId UniqueSourceHolderGroup source -------------------------------- Source topic -------------------------------- SourceTopicLocal source SourceId UniqueSourceTopicLocal source SourceTopicProject holder SourceHolderProjectId topic SourceTopicLocalId child ProjectId UniqueSourceTopicProject holder UniqueSourceTopicProjectTopic topic SourceTopicGroup holder SourceHolderGroupId topic SourceTopicLocalId parent GroupId UniqueSourceTopicGroup holder UniqueSourceTopicGroupTopic topic SourceTopicRemote source SourceId topic RemoteActorId UniqueSourceTopicRemote source -------------------------------- Source flow --------------------------------- SourceOriginUs source SourceId UniqueSourceOriginUs source SourceOriginThem source SourceId UniqueSourceOriginThem source -- Our collaborator's gesture -- -- OriginUs: The Add that started the sequence -- OriginThem: N/A (they send their Accept but we don't record it) SourceUsGestureLocal us SourceOriginUsId add OutboxItemId UniqueSourceUsGestureLocal us UniqueSourceUsGestureLocalAdd add SourceUsGestureRemote us SourceOriginUsId actor RemoteActorId add RemoteActivityId UniqueSourceUsGestureRemote us UniqueSourceUsGestureRemoteAdd add -- Our accept -- -- OriginUs: I checked the Add and sending my Accept -- OriginThem: N/A SourceUsAccept us SourceOriginUsId accept OutboxItemId UniqueSourceUsAccept us UniqueSourceUsAcceptAccept accept -- Their collaborator's gesture -- -- OriginUs: N/A (they send it but we don't record it) -- OriginThem: The Add that started the sequence SourceThemGestureLocal them SourceOriginThemId add OutboxItemId UniqueSourceThemGestureLocal them UniqueSourceThemGestureLocalAdd add SourceThemGestureRemote them SourceOriginThemId actor RemoteActorId add RemoteActivityId UniqueSourceThemGestureRemote them UniqueSourceThemGestureRemoteAdd add -- Their accept -- -- OriginUs: Seeing our accept and their collaborator's accept, they send their -- own accept -- OriginThem: Checking the Add, they send their Accept SourceThemAcceptLocal topic SourceTopicLocalId accept OutboxItemId UniqueSourceThemAcceptLocal topic UniqueSourceThemAcceptLocalAccept accept SourceThemAcceptRemote topic SourceTopicRemoteId accept RemoteActivityId UniqueSourceThemAcceptRemote topic UniqueSourceThemAcceptRemoteAccept accept -------------------------------- Source enable ------------------------------- -- Witnesses that, seeing their approval and our collaborator's gesture, I've -- sent then a delegator-Grant and now officially considering them a source of -- us SourceUsSendDelegator source SourceId grant OutboxItemId UniqueSourceUsSendDelegator source UniqueSourceUsSendDelegatorGrant grant -- Witnesses that, using the delegator-Grant, they sent us a start-Grant or -- extension-Grant to delegate further SourceThemDelegateLocal source SourceThemAcceptLocalId grant OutboxItemId UniqueSourceThemDelegateLocal source UniqueSourceThemDelegateLocalGrant grant SourceThemDelegateRemote source SourceThemAcceptRemoteId grant RemoteActivityId UniqueSourceThemDelegateRemote source UniqueSourceThemDelegateRemoteGrant grant -- Witnesses that, seeing the delegation from them, I've sent an -- extension-Grant to a Dest of mine SourceUsGather source SourceUsSendDelegatorId dest DestUsAcceptId grant OutboxItemId SourceUsGatherFromLocal gather SourceUsGatherId from SourceThemDelegateLocalId UniqueSourceUsGatherFromLocal gather SourceUsGatherFromRemote gather SourceUsGatherId from SourceThemDelegateRemoteId UniqueSourceUsGatherFromRemote gather SourceUsGatherToLocal gather SourceUsGatherId to DestThemSendDelegatorLocalId UniqueSourceUsGatherToLocal gather SourceUsGatherToRemote gather SourceUsGatherId to DestThemSendDelegatorRemoteId UniqueSourceUsGatherToRemote gather -- Witnesses that, seeing the delegation from them, I've sent a leaf-Grant to a -- direct-collaborator of mine SourceUsLeaf source SourceUsSendDelegatorId collab CollabEnableId grant OutboxItemId SourceUsLeafFromLocal leaf SourceUsLeafId from SourceThemDelegateLocalId UniqueSourceUsLeafFromLocal leaf SourceUsLeafFromRemote leaf SourceUsLeafId from SourceThemDelegateRemoteId UniqueSourceUsLeafFromRemote leaf SourceUsLeafToLocal leaf SourceUsLeafId to CollabDelegLocalId UniqueSourceUsLeafToLocal leaf SourceUsLeafToRemote leaf SourceUsLeafId to CollabDelegRemoteId UniqueSourceUsLeafToRemote leaf ------------------------------------------------------------------------------ -- Inheritance - Giver tracking her receivers -- (Project tracking its parents) -- (Team tracking its children) ------------------------------------------------------------------------------ Dest role Role DestHolderProject dest DestId project ProjectId UniqueDestHolderProject dest DestHolderGroup dest DestId group GroupId UniqueDestHolderGroup dest ---------------------------------- Dest topic -------------------------------- DestTopicLocal dest DestId UniqueDestTopicLocal dest DestTopicProject holder DestHolderProjectId topic DestTopicLocalId parent ProjectId UniqueDestTopicProject holder UniqueDestTopicProjectTopic topic DestTopicGroup holder DestHolderGroupId topic DestTopicLocalId child GroupId UniqueDestTopicGroup holder UniqueDestTopicGroupTopic topic DestTopicRemote dest DestId topic RemoteActorId UniqueDestTopicRemote dest ---------------------------------- Dest flow --------------------------------- DestOriginUs dest DestId UniqueDestOriginUs dest DestOriginThem dest DestId UniqueDestOriginThem dest -- Our collaborator's gesture -- -- OriginUs: The Add that started the sequence -- OriginThem: Seeing the Add and their Accept, my collaborator has sent her -- Accept DestUsGestureLocal dest DestId activity OutboxItemId UniqueDestUsGestureLocal dest UniqueDestUsGestureLocalActivity activity DestUsGestureRemote dest DestId actor RemoteActorId activity RemoteActivityId UniqueDestUsGestureRemote dest UniqueDestUsGestureRemoteActivity activity -- Our accept -- -- OriginUs: Checking my collaborator's Add, I sent my Accept -- OriginThem: Seeing the Add, their Accept and my collaborator's Accept, I -- sent my Accept DestUsAccept dest DestId accept OutboxItemId UniqueDestUsAccept dest UniqueDestUsAcceptAccept accept -- Their collaborator's gesture -- -- OriginUs: N/A (they send it but we don't record it) -- OriginThem: The Add that started the sequence DestThemGestureLocal them DestOriginThemId add OutboxItemId UniqueDestThemGestureLocal them UniqueDestThemGestureLocalAdd add DestThemGestureRemote them DestOriginThemId actor RemoteActorId add RemoteActivityId UniqueDestThemGestureRemote them UniqueDestThemGestureRemoteAdd add -- Their accept -- -- OriginUs: N/A -- OriginThem: Seeing their collaborator's Add, they sent an Accept DestThemAcceptLocal them DestOriginThemId topic DestTopicLocalId accept OutboxItemId UniqueDestThemAcceptLocal them UniqueDestThemAcceptLocalTopic topic UniqueDestThemAcceptLocalAccept accept DestThemAcceptRemote them DestOriginThemId topic DestTopicRemoteId accept RemoteActivityId UniqueDestThemAcceptRemote them UniqueDestThemAcceptRemoteTopic topic UniqueDestThemAcceptRemoteAccept accept ---------------------------------- Dest enable ------------------------------- -- Witnesses that, seeing our approval and their collaborator's gesture, -- they've sent us a delegator-Grant, and we now officially consider them a -- dest of us DestThemSendDelegatorLocal dest DestUsAcceptId topic DestTopicLocalId grant OutboxItemId UniqueDestThemSendDelegatorLocal dest UniqueDestThemSendDelegatorLocalTopic topic UniqueDestThemSendDelegatorLocalGrant grant DestThemSendDelegatorRemote dest DestUsAcceptId topic DestTopicRemoteId grant RemoteActivityId UniqueDestThemSendDelegatorRemote dest UniqueDestThemSendDelegatorRemoteTopic topic UniqueDestThemSendDelegatorRemoteGrant grant