code: def user_provenance(self, document):  # type: (ProvDocument) -> None
          
          self.self_check()
          (username, fullname) = _whoami()
  
          if not self.full_name:
              self.full_name = fullname
  
          document.add_namespace(UUID)
          document.add_namespace(ORCID)
          document.add_namespace(FOAF)
          account = document.agent(
              ACCOUNT_UUID, {provM.PROV_TYPE: FOAF["OnlineAccount"],
                             "prov:label": username,
                             FOAF["accountName"]: username})
  
          user = document.agent(
              self.orcid or USER_UUID,
              {provM.PROV_TYPE: PROV["Person"],
               "prov:label": self.full_name,
               FOAF["name"]: self.full_name,
               FOAF["account"]: account})
          # cwltool may be started on the shell (directly by user),
          # by shell script (indirectly by user)
          # or from a different program
          #   (which again is launched by any of the above)
          #
          # We can't tell in which way, but ultimately we're still
          # acting in behalf of that user (even if we might
          # get their name wrong!)
          document.actedOnBehalfOf(account, user)
docs: Add the user provenance.