Diff of the two buildlogs:

--
--- b1/build.log	2025-01-29 02:51:34.585677883 +0000
+++ b2/build.log	2025-01-29 02:53:39.876014836 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Mon Mar  2 21:13:58 -12 2026
-I: pbuilder-time-stamp: 1772529238
+I: Current time: Wed Jan 29 16:51:42 +14 2025
+I: pbuilder-time-stamp: 1738119102
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -28,54 +28,86 @@
 dpkg-source: info: applying rack3.patch
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/114216/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/D01_modify_environment starting
+debug: Running on ionos2-i386.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Jan 29 02:52 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='i386'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='i386'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="i686-pc-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=i386
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=10 '
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=i686
+  HOST_ARCH=i386
   IFS=' 	
   '
-  INVOCATION_ID='c7a6ec0818814f78be48e22f6592f89c'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  LD_LIBRARY_PATH='/usr/lib/libeatmydata'
-  LD_PRELOAD='libeatmydata.so'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='114216'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=a5ec672c4acf4b38abc2c7bfd823bcab
+  LANG=C
+  LANGUAGE=de_CH:de
+  LC_ALL=C
+  LD_LIBRARY_PATH=/usr/lib/libeatmydata
+  LD_PRELOAD=libeatmydata.so
+  MACHTYPE=i686-pc-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=9440
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.h99BpLyk/pbuilderrc_SU9x --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.h99BpLyk/b1 --logfile b1/build.log ruby-omniauth_2.1.1-4.dsc'
-  SUDO_GID='112'
-  SUDO_UID='107'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://213.165.73.152:3128'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.h99BpLyk/pbuilderrc_epPO --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.h99BpLyk/b2 --logfile b2/build.log ruby-omniauth_2.1.1-4.dsc'
+  SUDO_GID=112
+  SUDO_UID=107
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://46.16.76.132:3128
 I: uname -a
-  Linux ionos16-i386 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-30-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.124-1 (2025-01-12) x86_64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Nov 22  2024 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/114216/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -302,7 +334,7 @@
 Get: 169 http://deb.debian.org/debian unstable/main i386 ruby-rspec-expectations all 3.13.0c0e0m0s1-2 [90.2 kB]
 Get: 170 http://deb.debian.org/debian unstable/main i386 ruby-rspec-mocks all 3.13.0c0e0m0s1-2 [81.3 kB]
 Get: 171 http://deb.debian.org/debian unstable/main i386 ruby-rspec all 3.13.0c0e0m0s1-2 [5184 B]
-Fetched 58.5 MB in 0s (126 MB/s)
+Fetched 58.5 MB in 1s (40.4 MB/s)
 Preconfiguring packages ...
 Selecting previously unselected package libpython3.13-minimal:i386.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19829 files and directories currently installed.)
@@ -865,8 +897,8 @@
 Setting up tzdata (2025a-1) ...
 
 Current default time zone: 'Etc/UTC'
-Local time is now:      Tue Mar  3 09:14:20 UTC 2026.
-Universal Time is now:  Tue Mar  3 09:14:20 UTC 2026.
+Local time is now:      Wed Jan 29 02:52:59 UTC 2025.
+Universal Time is now:  Wed Jan 29 02:52:59 UTC 2025.
 Run 'dpkg-reconfigure tzdata' if you wish to change it.
 
 Setting up ruby-minitest (5.22.3-1) ...
@@ -1021,7 +1053,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/ruby-omniauth-2.1.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../ruby-omniauth_2.1.1-4_source.changes
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/ruby-omniauth-2.1.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../ruby-omniauth_2.1.1-4_source.changes
 dpkg-buildpackage: info: source package ruby-omniauth
 dpkg-buildpackage: info: source version 2.1.1-4
 dpkg-buildpackage: info: source distribution unstable
@@ -1058,7 +1094,7 @@
 │ ruby-omniauth: Installing files and building extensions for ruby3.3          │
 └──────────────────────────────────────────────────────────────────────────────┘
 
-/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20260302-119580-yurgwo/gemspec
+/usr/bin/ruby3.3 -S gem build --config-file /dev/null --verbose /tmp/d20250129-32357-qzpeq4/gemspec
 WARNING:  description and summary are identical
 WARNING:  open-ended dependency on hashie (>= 3.4.6) is not recommended
   if hashie is semantically versioned, use:
@@ -1073,7 +1109,7 @@
   Name: omniauth
   Version: 2.1.1
   File: omniauth-2.1.1.gem
-/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-omniauth/usr/share/rubygems-integration/all /tmp/d20260302-119580-yurgwo/omniauth-2.1.1.gem
+/usr/bin/ruby3.3 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-omniauth/usr/share/rubygems-integration/all /tmp/d20250129-32357-qzpeq4/omniauth-2.1.1.gem
 /build/reproducible-path/ruby-omniauth-2.1.1/debian/ruby-omniauth/usr/share/rubygems-integration/all/gems/omniauth-2.1.1/lib/omniauth.rb
 /build/reproducible-path/ruby-omniauth-2.1.1/debian/ruby-omniauth/usr/share/rubygems-integration/all/gems/omniauth-2.1.1/lib/omniauth/auth_hash.rb
 /build/reproducible-path/ruby-omniauth-2.1.1/debian/ruby-omniauth/usr/share/rubygems-integration/all/gems/omniauth-2.1.1/lib/omniauth/authenticity_token_protection.rb
@@ -1119,83 +1155,132 @@
 RUBYLIB=. GEM_PATH=/build/reproducible-path/ruby-omniauth-2.1.1/debian/ruby-omniauth/usr/share/rubygems-integration/all:/build/reproducible-path/ruby-omniauth-2.1.1/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.3.0:/var/lib/gems/3.3.0:/usr/local/lib/ruby/gems/3.3.0:/usr/lib/ruby/gems/3.3.0:/usr/lib/i386-linux-gnu/ruby/gems/3.3.0:/usr/share/rubygems-integration/3.3.0:/usr/share/rubygems-integration/all:/usr/lib/i386-linux-gnu/rubygems-integration/3.3.0 ruby3.3 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake
 /usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation
 
-Randomized with seed 122
+Randomized with seed 32872
+
+OmniAuth::Strategies::Developer
+  callback phase
+    with custom options
+      sets info fields properly
+      sets the uid properly
+    with default options
+      sets the uid to the email
+      sets the name in the auth hash
+      sets the email in the auth hash
+  request phase
+    has a text field for each of the fields
+    has the callback as the action for the form
+    displays a form
+
+OmniAuth::Form
+  #html
+    appends to the html body
+  .build
+    yields the instance when called with a block and argument
+    evaluates in the instance when called with a block and no argument
+  #initialize
+    sets the form action to the passed :url option
+    sets an H1 tag from the passed :title option
+  #password_field
+    adds a labeled input field
+  fieldset
+    creates a fieldset with options
 
 OmniAuth::AuthHash
-  does not try to parse `string` as InfoHash
   has a subkey_class
+  does not try to parse `string` as InfoHash
   converts a supplied info key into an InfoHash object
+  OmniAuth::AuthHash::InfoHash
+    has a subkey_class
+    #valid?
+      is valid if there is a name
+    with Hashie 3.5.1+
+      does not log anything in Hashie 3.5.1+
+  #name
+    displays only a first or last name if only that is available
+    falls back to go to first_name last_name concatenation
+    displays the nickname if no name, first, or last is available
+    defaults to the name key
+    displays the email if no name, first, last, or nick is available
   #to_hash
-    does not pollute the URL hash with 'name' etc
+    converts an info hash as well
     supplies the calculated name in the converted hash
+    does not pollute the URL hash with 'name' etc
     has string keys
     is a plain old hash
-    converts an info hash as well
-  #name
-    displays the nickname if no name, first, or last is available
-    displays the email if no name, first, last, or nick is available
-    defaults to the name key
-    falls back to go to first_name last_name concatenation
-    displays only a first or last name if only that is available
   #valid?
     requires a uid
-    requires a provider
-    is valid with the right parameters
     requires a name in the user info hash
-  OmniAuth::AuthHash::InfoHash
-    has a subkey_class
-    with Hashie 3.5.1+
-      does not log anything in Hashie 3.5.1+
-    #valid?
-      is valid if there is a name
+    is valid with the right parameters
+    requires a provider
 
-OmniAuth::Form
-  #password_field
-    adds a labeled input field
-  #initialize
-    sets the form action to the passed :url option
-    sets an H1 tag from the passed :title option
-  #html
-    appends to the html body
-  .build
-    yields the instance when called with a block and argument
-    evaluates in the instance when called with a block and no argument
-  fieldset
-    creates a fieldset with options
+OmniAuth::Builder
+  #before_callback_phase
+    passes the block to the config
+  #options
+    merges provided options in
+    adds an argument if no options are provided
+  #before_request_phase
+    passes the block to the config
+  #call
+    passes env to to_app.call
+  #provider
+    doesn't translate a symbol to a top-level constant
+    accepts a class
+    translates a symbol to a constant
+    raises a helpful LoadError message if it can't find the class
+  #on_failure
+    passes the block to the config
+  #before_options_phase
+    passes the block to the config
+  #configure
+    passes the block to the config
 
 OmniAuth::Strategy
-  inherits by merging with preference for the latest class
-  inherits by merging with preference for the latest class
   is the current class's proc call if one exists
   is the current class's proc call if one exists
+  inherits by merging with preference for the latest class
+  inherits by merging with preference for the latest class
   is the current class's proc call if one exists
   inherits by merging with preference for the latest class
-  #redirect
-    uses javascript if :iframe is true (PENDING: Temporarily skipped with xit)
-  .configure
-    takes a hash and deep merge it
-    when block is passed
-      allows for default options setting
-      works when block doesn't evaluate to true
   setup phase
     when options[:setup] = true
-      does not call through on a non-omniauth endpoint
       calls through to /auth/:provider/setup
+      does not call through on a non-omniauth endpoint
     when options[:setup] is an app
       calls the rack app
       does not call the app on a non-omniauth endpoint
-  #uid
-    inherits if it can
-    is the current class's uid if one exists
+  #fail!
+    provides exception information when one is provided
+    provides a generic message when not provided an exception
+  #inspect
+    returns the class name
+  .default_options
+    is inherited from a parent class
+  user_info
+    should default to an empty hash
   .args
     sets args to the specified argument if there is one
     is inheritable
     accepts corresponding options as default arg values
-  #call
-    duplicates and calls
-    raises NoSessionError if rack.session isn't set
-  #full_host
-    remains calm when there is a pipe in the URL
+  #skip_info?
+    is false if options.skip_info is false
+    is false by default
+    is true if options.skip_info is true
+    is true if options.skip_info is a callable that evaluates to truthy
+  fetcher stacks
+    .info_stack
+      is an array of called ancestral procs
+    .uid_stack
+      is an array of called ancestral procs
+    .extra_stack
+      is an array of called ancestral procs
+    .credentials_stack
+      is an array of called ancestral procs
+  .configure
+    takes a hash and deep merge it
+    when block is passed
+      works when block doesn't evaluate to true
+      allows for default options setting
   fetcher procs
     .credentials
       sets and retrieve a proc
@@ -1211,32 +1296,94 @@
     options extraction
       is the default options if any are provided
       is the last argument if the last argument is a Hash
-  #skip_info?
-    is true if options.skip_info is a callable that evaluates to truthy
-    is false if options.skip_info is false
-    is true if options.skip_info is true
-    is false by default
   request_phase
     raises a NotImplementedError
-  #inspect
-    returns the class name
+  #redirect
+    uses javascript if :iframe is true (PENDING: Temporarily skipped with xit)
   #call
     calls fail! when encountering an unhandled exception
     redirects to the fail! result when encountering an unhandled exception
+    test mode
+      responds with a provider-specific hash if one is set
+      executes request hook on the request phase
+      short circuits the request phase entirely
+      rescues errors in request_call
+      redirects on failure
+      respects SCRIPT_NAME (a.k.a. BaseURI)
+      responds with the default hash if none is set
+      maintains host and port
+      sets omniauth.params with query params on the request phase
+      is case insensitive on request path
+      turns omniauth.origin into an env variable on the callback phase
+      does not set body parameters of POST request on the request phase
+      respects SCRIPT_NAME (a.k.a. BaseURI) on failure
+      turns omniauth.params into an env variable on the callback phase
+      simulates login failure if mocked data is set as a symbol
+      is case insensitive on callback path
+      doesn't short circuit the request if request method is not allowed
+      does not short circuit requests outside of authentication
+      maintains query string parameters
+      executes callback hook on the callback phase
+      omniauth.origin
+        disabled
+          does not set omniauth.origin
+        default flow
+          sets omniauth.origin to the HTTP_REFERER on the request phase by default
+          sets omniauth.origin from the params if provided
+        custom
+          sets omniauth.origin from a custom param
+    dynamic paths
+      runs the callback phase if the custom callback path evaluator is truthy
+      runs the request phase if the custom request path evaluator is truthy
+      correctly reports the callback path when the custom callback path evaluator is truthy
+      provides a custom callback path if request_path evals to a string
+    request method restriction
+      allows a request method of the correct type
+      does not allow a request method of the wrong type
+    custom paths
+      uses a custom request_path if one is provided
+      uses a custom callback_path if one is provided
+      callback_url
+        uses a custom callback_path if one is provided
+        preserves the query parameters
+    receiving an OPTIONS request
+      to the request path
+        behaves like an OPTIONS request
+          sets the Allow header properly
+          responds with 200
+      to the request path
+        behaves like an OPTIONS request
+          responds with 200
+          sets the Allow header properly
+      to some other path
+        does not short-circuit the request
     :form option
       calls through to the supplied form option if one exists
       calls through to the app if :form => true is set as an option
+    when in test mode and path not on request path
+      does not verify token
     default paths
+      is case insensitive on callback path
+      strips trailing spaces on callback
       uses the default request path
-      uses the default callback path
       strips trailing spaces on request
-      is case insensitive on callback path
       is case insensitive on request path
-      strips trailing spaces on callback
+      uses the default callback path
       callback_url
-        consider script name
         preserves the query parameters
+        consider script name
         uses the default callback_path
+    custom prefix
+      uses a custom prefix for callback
+      uses a custom prefix for request
+      callback_url
+        uses a custom prefix
+        preserves the query parameters
+    custom full_host
+      is the string when a string is there
+      runs the proc with the env when it is a proc
+      is based on the request if it's not a string nor a proc
+      honors HTTP_X_FORWARDED_PROTO if present
     options mutation
       in request phase
         does not affect original options
@@ -1244,12 +1391,6 @@
       in callback phase
         does not affect deep options
         does not affect original options
-    custom prefix
-      uses a custom prefix for request
-      uses a custom prefix for callback
-      callback_url
-        preserves the query parameters
-        uses a custom prefix
     with relative url root
       accepts the request
       accepts the callback
@@ -1261,51 +1402,6 @@
         passes the error to fail!()
       error during call_app!
         raises the application error
-    dynamic paths
-      runs the callback phase if the custom callback path evaluator is truthy
-      runs the request phase if the custom request path evaluator is truthy
-      provides a custom callback path if request_path evals to a string
-      correctly reports the callback path when the custom callback path evaluator is truthy
-    custom full_host
-      is based on the request if it's not a string nor a proc
-      honors HTTP_X_FORWARDED_PROTO if present
-      runs the proc with the env when it is a proc
-      is the string when a string is there
-    test mode
-      maintains host and port
-      doesn't short circuit the request if request method is not allowed
-      simulates login failure if mocked data is set as a symbol
-      maintains query string parameters
-      does not short circuit requests outside of authentication
-      turns omniauth.params into an env variable on the callback phase
-      does not set body parameters of POST request on the request phase
-      responds with the default hash if none is set
-      executes callback hook on the callback phase
-      executes request hook on the request phase
-      respects SCRIPT_NAME (a.k.a. BaseURI) on failure
-      rescues errors in request_call
-      is case insensitive on callback path
-      turns omniauth.origin into an env variable on the callback phase
-      respects SCRIPT_NAME (a.k.a. BaseURI)
-      short circuits the request phase entirely
-      is case insensitive on request path
-      responds with a provider-specific hash if one is set
-      redirects on failure
-      sets omniauth.params with query params on the request phase
-      omniauth.origin
-        disabled
-          does not set omniauth.origin
-        custom
-          sets omniauth.origin from a custom param
-        default flow
-          sets omniauth.origin from the params if provided
-          sets omniauth.origin to the HTTP_REFERER on the request phase by default
-    custom paths
-      uses a custom callback_path if one is provided
-      uses a custom request_path if one is provided
-      callback_url
-        uses a custom callback_path if one is provided
-        preserves the query parameters
     omniauth.origin
       disabled
         does not set omniauth.origin
@@ -1317,147 +1413,87 @@
         is set on the request phase
         sets from the params if provided
         with script_name
-          is turned into an env variable on the callback phase, containing full path
           is set on the request phase, containing full path
-    request method restriction
-      allows a request method of the correct type
-      does not allow a request method of the wrong type
+          is turned into an env variable on the callback phase, containing full path
     authenticity validation
-      with custom allow_if proc
-        allows a valid request
-      with default POST only request methods
-        allows a request with matching authenticity_token
-        does not allow a request without a matching authenticity token
       with allowed GET
         allows a request without authenticity token
         warning message logging
           logs warning message
           when not login path is requested
             does not log warning message
-    receiving an OPTIONS request
-      to the request path
-        behaves like an OPTIONS request
-          responds with 200
-          sets the Allow header properly
-      to some other path
-        does not short-circuit the request
-      to the request path
-        behaves like an OPTIONS request
-          sets the Allow header properly
-          responds with 200
-    when in test mode and path not on request path
-      does not verify token
-  .option
-    sets the default value to nil if none is provided
-    sets a default value
+      with custom allow_if proc
+        allows a valid request
+      with default POST only request methods
+        allows a request with matching authenticity_token
+        does not allow a request without a matching authenticity token
   #callback_phase
     sets the auth hash
+  #call
+    duplicates and calls
+    raises NoSessionError if rack.session isn't set
+  #uid
+    is the current class's uid if one exists
+    inherits if it can
+  .option
+    sets a default value
+    sets the default value to nil if none is provided
+  #full_host
+    remains calm when there is a pipe in the URL
   #auth_hash
-    returns an AuthHash
     calls through to uid, info, credentials, and extra
-  .default_options
-    is inherited from a parent class
-  user_info
-    should default to an empty hash
-  fetcher stacks
-    .extra_stack
-      is an array of called ancestral procs
-    .uid_stack
-      is an array of called ancestral procs
-    .credentials_stack
-      is an array of called ancestral procs
-    .info_stack
-      is an array of called ancestral procs
-  #fail!
-    provides a generic message when not provided an exception
-    provides exception information when one is provided
+    returns an AuthHash
+
+OmniAuth::KeyStore
+  on Hashie < 3.5.0
+    does not log anything to the console
+  on Hashie 3.5.2+
+    does not log anything to the console
+  on Hashie 3.5.0 and 3.5.1
+    does not log anything to the console
+
+OmniAuth::FailureEndpoint
+  non-raise-out environment
+    includes the origin (escaped) if one is provided
+    respects the globally configured path prefix
+    escapes the message key
+    is a redirect
+    includes the SCRIPT_NAME
+    respects the custom path prefix configured on the strategy
+  raise-out environment
+    raises out an OmniAuth::Error if no omniauth.error is set
+    raises out the error
 
 OmniAuth
   .logger
     calls through to the configured logger
   .strategies
     increases when a new strategy is made
+  ::Utils
+    .camelize
+      replaces / with ::
+      works in special cases that have been added
+      doesn't uppercase the first letter when passed false
+      works on normal cases
+    form_css
+      returns a style tag with the configured form_css
+    .deep_merge
+      combines hashes
   configuration
-    is able to set the on_failure rack app
-    is able to set request_validation_phase
-    is able to set hook on callback_call
-    is able to set the path
     is callable from .configure
     is able to set hook on request_call
+    is able to set request_validation_phase
     is able to set hook on option_call
+    is able to set the on_failure rack app
+    is able to set hook on callback_call
+    is able to set the path
     mock auth
-      does not mutate given auth hash
-      sets facebook attributes
       default is AuthHash
+      does not mutate given auth hash
       facebook is AuthHash
+      sets facebook attributes
     .defaults
       is a hash of default configuration
-  ::Utils
-    .camelize
-      doesn't uppercase the first letter when passed false
-      replaces / with ::
-      works on normal cases
-      works in special cases that have been added
-    form_css
-      returns a style tag with the configured form_css
-    .deep_merge
-      combines hashes
-
-OmniAuth::Builder
-  #options
-    merges provided options in
-    adds an argument if no options are provided
-  #before_callback_phase
-    passes the block to the config
-  #configure
-    passes the block to the config
-  #call
-    passes env to to_app.call
-  #before_options_phase
-    passes the block to the config
-  #on_failure
-    passes the block to the config
-  #provider
-    doesn't translate a symbol to a top-level constant
-    translates a symbol to a constant
-    accepts a class
-    raises a helpful LoadError message if it can't find the class
-  #before_request_phase
-    passes the block to the config
-
-OmniAuth::Strategies::Developer
-  callback phase
-    with custom options
-      sets info fields properly
-      sets the uid properly
-    with default options
-      sets the email in the auth hash
-      sets the uid to the email
-      sets the name in the auth hash
-  request phase
-    displays a form
-    has a text field for each of the fields
-    has the callback as the action for the form
-
-OmniAuth::FailureEndpoint
-  non-raise-out environment
-    includes the SCRIPT_NAME
-    is a redirect
-    includes the origin (escaped) if one is provided
-    escapes the message key
-    respects the globally configured path prefix
-    respects the custom path prefix configured on the strategy
-  raise-out environment
-    raises out the error
-    raises out an OmniAuth::Error if no omniauth.error is set
-
-OmniAuth::KeyStore
-  on Hashie 3.5.2+
-    does not log anything to the console
-  on Hashie < 3.5.0
-    does not log anything to the console
-  on Hashie 3.5.0 and 3.5.1
-    does not log anything to the console
 
 Pending: (Failures listed here are expected and do not affect your suite's status)
 
@@ -1465,10 +1501,10 @@
      # Temporarily skipped with xit
      # ./spec/omniauth/strategy_spec.rb:278
 
-Finished in 0.18329 seconds (files took 0.32483 seconds to load)
+Finished in 0.3366 seconds (files took 1.26 seconds to load)
 211 examples, 0 failures, 1 pending
 
-Randomized with seed 122
+Randomized with seed 32872
 
 /usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner
 
@@ -1795,7 +1831,7 @@
 #   ./lib/omniauth/authenticity_token_protection.rb:1:in `<top (required)>'
 No examples found.
 
-Finished in 0.00004 seconds (files took 0.40255 seconds to load)
+Finished in 0.00007 seconds (files took 0.84572 seconds to load)
 0 examples, 0 failures, 8 errors occurred outside of examples
 
 /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation failed
@@ -1829,12 +1865,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: not including original source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/9440/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/114216 and its subdirectories
-I: Current time: Mon Mar  2 21:14:33 -12 2026
-I: pbuilder-time-stamp: 1772529273
+I: removing directory /srv/workspace/pbuilder/9440 and its subdirectories
+I: Current time: Wed Jan 29 16:53:38 +14 2025
+I: pbuilder-time-stamp: 1738119218