diff --git a/policy/ch-controlfields.rst b/policy/ch-controlfields.rst
index 5310813..7fc9216 100644
--- a/policy/ch-controlfields.rst
+++ b/policy/ch-controlfields.rst
@@ -1050,11 +1050,31 @@ The field can consist of exactly one of either of the following:
    pretend that the value was set to ``binary-targets`` and both
    parties must degrade accordingly (see below).
 
+If the package builder supports the field and want to enable the
+feature, then it must set the environment variable
+``DEB_RULES_REQUIRES_ROOT`` when invoking the package building script
+``debian/rules``.  The value of ``DEB_RULES_REQUIRES_ROOT`` should be
+one of:
+
+ * The same value as the ``Rules-Requires-Root`` if the builder can
+   provide the necessary support.  The builder may trim unnecessary
+   whitespace used to format the field for readability.
+
+ * The value ``binary-targets`` if it cannot provide the necessary
+   support.
+
+All packages and builders must support ``binary-targets`` as this was
+the historical behaviour prior to the introduction of this field.
+
 Please note that any tool (partiularly older versions of them) may be
 unaware of this field and behave like the field was set to
 ``binary-targets``.  The package build must gracefully cope with this
-and produce the same semantical result regardless.  The value of this
-field must not degrade if a builder tool invokes the package build
+and produce the same semantical result regardless.
+
+A compliant builder may also leave ``DEB_RULES_REQUIRES_ROOT`` unset
+or set it to ``binary-targets`` if it has been requested to test
+whether the package it builds correctly implements the fall-back for
+legacy builders.
 
 This field intentionally does not enable a package to request a true
 root over fakeroot.
@@ -1088,7 +1108,7 @@ fakeroot if (but only if) a package lists of said keyword in the
 All tools must ignore keywords with namespaces they do not know or
 own.  A tool may choose warn or abort with an error if it finds
 unknown keywords in namespaces it provides or owns (but it is not
-required to this for all keywords in the namespace).
+required to do this for all keywords in the namespace).
 
 
 **Provided keywords**:
diff --git a/policy/ch-source.rst b/policy/ch-source.rst
index 21e10f3..009716c 100644
--- a/policy/ch-source.rst
+++ b/policy/ch-source.rst
@@ -437,6 +437,12 @@ should not be used to get the CPU or system information; the
 that. GNU style variables should generally only be used with upstream
 build systems.
 
+The builder should set ``DEB_RULES_REQUIRES_ROOT`` environment
+variable when calling any of the mandatory targets as defined in
+:ref:`Rules-Requires-Root <s-f-Rules-Requires-Root>`.  If the variable
+is not set, the package must behave as if it was set to
+``binary-targets``.
+
 .. _s-debianrules-options:
 
 ``debian/rules`` and ``DEB_BUILD_OPTIONS``
@@ -539,34 +545,35 @@ Depending on the value of the :ref:`Rules-Requires-Root
 unprivileged user and provide a `gain root command`.
 
 The `gain root command` is passed to the build script via the
-``DPKG_GAIN_ROOT_CMD`` environment variable.  It is space separated
+``DEB_GAIN_ROOT_CMD`` environment variable.  It is space separated
 list with the first word being the command (which should available be
 in PATH) and additional words being arguments.  The `gain root
-command` may not be used via a shell and accordingly it must not rely
-on shell features.
+command` might not be used via a shell and accordingly it must not
+rely on shell features.
 
 The `gain root command` must not prompt or require human interaction
-(as the build script itself must not require interaction).
-Furthermore, it must be possible to preprend the command to an
-existing command without having to alter or quote the command being
-invoked.
+(as the build script itself must not require interaction).  The `gain
+root command` must be possible to preprend the command to an existing
+command without having to alter or quote the command being invoked.
+Furthermore, it must retain the environment variables without the
+caller having to explicitly request it.
 
 The following are examples of valid defitions root commands (in the sh
 syntax) provided the tools are available and properly configured::
 
   # Command "sudo", with arguments "-nE" and "--"
-  export DPKG_GAIN_ROOT_CMD='sudo -nE --'
+  export DEB_GAIN_ROOT_CMD='sudo -nE --'
   # Command "fakeroot" with the single argument "--"
-  export DPKG_GAIN_ROOT_CMD='fakeroot --'
+  export DEB_GAIN_ROOT_CMD='fakeroot --'
 
 Examples of valid use of the `gain root command`::
 
   # sh-syntax (assumes set -e semantics for error handling)
-  $DPKG_GAIN_ROOT_CMD some-cmd --which-requires-root
+  $DEB_GAIN_ROOT_CMD some-cmd --which-requires-root
 
   # perl
   my @cmd = ('some-cmd', '--which-requires-root');
-  unshift(@cmd, split(' ', $ENV{DPKG_GAIN_ROOT_CMD})) if $ENV{DPKG_GAIN_ROOT_CMD};
+  unshift(@cmd, split(' ', $ENV{DEB_GAIN_ROOT_CMD})) if $ENV{DEB_GAIN_ROOT_CMD};
   system(@cmd) == or die("@cmd failed");
 
 .. _s-substvars:
