Permit person PersonId role Role -------------------------------- Permit topic -------------------------------- PermitTopicLocal permit PermitId UniquePermitTopicLocal permit PermitTopicRepo permit PermitTopicLocalId repo RepoId UniquePermitTopicRepo permit PermitTopicDeck permit PermitTopicLocalId deck DeckId UniquePermitTopicDeck permit PermitTopicLoom permit PermitTopicLocalId loom LoomId UniquePermitTopicLoom permit PermitTopicProject permit PermitTopicLocalId project ProjectId UniquePermitTopicProject permit PermitTopicGroup permit PermitTopicLocalId group GroupId UniquePermitTopicGroup permit PermitTopicRemote permit PermitId actor RemoteActorId UniquePermitTopicRemote permit ------------------------------- Permit reason -------------------------------- PermitFulfillsTopicCreation permit PermitId UniquePermitFulfillsTopicCreation permit PermitFulfillsInvite permit PermitId UniquePermitFulfillsInvite permit PermitFulfillsJoin permit PermitId UniquePermitFulfillsJoin permit -- Person's gesture -- -- Join: Witnesses the initial Join that started the sequence -- Invite: Witnesses their approval, seeing the topic's accept, and then -- sending their own accept -- Create: Records the Create activity that created the topic PermitPersonGesture permit PermitId activity OutboxItemId UniquePermitPersonGesture permit UniquePermitPersonGestureActivity activity -- Topic collaborator's gesture -- -- Join: N/A (it happens but we don't record it) -- Invite: Witnesses the initial Invite that started the sequence PermitTopicGestureLocal fulfills PermitFulfillsInviteId invite OutboxItemId UniquePermitTopicGestureLocal fulfills UniquePermitTopicGestureLocalInvite invite PermitTopicGestureRemote fulfills PermitFulfillsInviteId actor RemoteActorId invite RemoteActivityId UniquePermitTopicGestureRemote fulfills UniquePermitTopicGestureRemoteInvite invite -- Topic's accept -- -- Join: N/A -- Invite: Witnesses that the topic saw and approved the Invite PermitTopicAcceptLocal fulfills PermitFulfillsInviteId topic PermitTopicLocalId accept OutboxItemId UniquePermitTopicAcceptLocal fulfills UniquePermitTopicAcceptLocalTopic topic UniquePermitTopicAcceptLocalAccept accept PermitTopicAcceptRemote fulfills PermitFulfillsInviteId topic PermitTopicRemoteId accept RemoteActivityId UniquePermitTopicAcceptRemote fulfills UniquePermitTopicAcceptRemoteTopic topic UniquePermitTopicAcceptRemoteAccept accept -------------------------------- Permit enable ------------------------------- -- Topic's grant -- -- Join: Seeing the new-collaborator's Join and existing-collaborator's Accept, -- the topic has made the link official and sent a direct-grant -- Invite: Seeing existing-collaborator's Invite and new-collaborator's Accept, -- the topic has made the link official and sent a direct-grant PermitTopicEnableLocal permit PermitPersonGestureId topic PermitTopicLocalId grant OutboxItemId UniquePermitTopicEnableLocal permit UniquePermitTopicEnableLocalTopic topic UniquePermitTopicEnableLocalGrant grant PermitTopicEnableRemote permit PermitPersonGestureId topic PermitTopicRemoteId grant RemoteActivityId UniquePermitTopicEnableRemote permit UniquePermitTopicEnableRemoteTopic topic UniquePermitTopicEnableRemoteGrant grant ----------------------- Permit delegator+extension --------------------------- -- This section is only for Project or Team topics -- Person sends delegator-Grant, topic starts sending extension-Grants -- Witnesses that the person used the direct-Grant to send a delegator-Grant to -- the topic PermitPersonSendDelegator permit PermitPersonGestureId grant OutboxItemId UniquePermitPersonSendDelegator permit UniquePermitPersonSendDelegatorGrant grant -- Witnesses extension-Grants that the topic has sent, extending chains from -- its components/subprojects or projects/superteams PermitTopicExtendLocal permit PermitPersonSendDelegatorId topic PermitTopicEnableLocalId grant OutboxItemId UniquePermitTopicExtendLocal permit UniquePermitTopicExtendLocalTopic topic UniquePermitTopicExtendLocalGrant grant PermitTopicExtendRemote permit PermitPersonSendDelegatorId topic PermitTopicEnableRemoteId grant RemoteActivityId UniquePermitTopicExtendRemote permit UniquePermitTopicExtendRemoteTopic topic UniquePermitTopicExtendRemoteGrant grant