docs: def global_defaults():
          """
          Default configuration values and behavior toggles.
  
          Fabric only extends this method in order to make minor adjustments and
          additions to Invoke's `~invoke.config.Config.global_defaults`; see its
          documentation for the base values, such as the config subtrees
          controlling behavior of ``run`` or how ``tasks`` behave.
  
          For Fabric-specific modifications and additions to the Invoke-level
          defaults, see our own config docs at :ref:`default-values`.
  
          .. versionadded:: 2.0
          """
          # TODO: hrm should the run-related things actually be derived from the
          # runner_class? E.g. Local defines local stuff, Remote defines remote
          # stuff? Doesn't help with the final config tree tho...
          # TODO: as to that, this is a core problem, Fabric wants split
          # local/remote stuff, eg replace_env wants to be False for local and
          # True remotely; shell wants to differ depending on target (and either
          # way, does not want to use local interrogation for remote)
          # TODO: is it worth moving all of our 'new' settings to a discrete
          # namespace for cleanliness' sake? e.g. ssh.port, ssh.user etc.
          # It wouldn't actually simplify this code any, but it would make it
          # easier for users to determine what came from which library/repo.
          defaults = InvokeConfig.global_defaults()
          ours = {
              # New settings
              "connect_kwargs": {},
              "forward_agent": False,
              "gateway": None,
              "load_ssh_configs": True,
              "port": 22,
              "run": {"replace_env": True},
              "runners": {"remote": Remote},
              "ssh_config_path": None,
              "tasks": {"collection_name": "fabfile"},
              # TODO: this becomes an override/extend once Invoke grows execution
              # timeouts (which should be timeouts.execute)
              "timeouts": {"connect": None},
              "user": get_local_user(),
          }
          merge_dicts(defaults, ours)
          return defaults