Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ansible-core-2.18 for 
openSUSE:Factory checked in at 2026-03-11 20:56:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ansible-core-2.18 (Old)
 and      /work/SRC/openSUSE:Factory/.ansible-core-2.18.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ansible-core-2.18"

Wed Mar 11 20:56:58 2026 rev:5 rq:1338275 version:2.18.14

Changes:
--------
--- /work/SRC/openSUSE:Factory/ansible-core-2.18/ansible-core-2.18.changes      
2025-12-11 18:44:12.316692848 +0100
+++ 
/work/SRC/openSUSE:Factory/.ansible-core-2.18.new.8177/ansible-core-2.18.changes
    2026-03-11 20:58:47.730523068 +0100
@@ -1,0 +2,31 @@
+Fri Feb 27 07:35:22 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- update to 2.18.14:
+  
https://github.com/ansible/ansible/blob/v2.18.14/changelogs/CHANGELOG-v2.18.rst
+  * Minor Changes
+    - ansible-test - Update URL used to download FreeBSD wheels for
+      managed remotes.
+    - ansible-test - Use the new API endpoint for the Ansible Core CI
+      service.
+
+-------------------------------------------------------------------
+Fri Jan 30 08:23:10 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- update to 2.18.13:
+  
https://github.com/ansible/ansible/blob/v2.18.13/changelogs/CHANGELOG-v2.18.rst
+  * Minor Changes
+    - ansible-test - Replace RHEL 10.0 remote with 10.1.
+    - ansible-test - Replace RHEL 9.4 remote with 9.7.
+    - conditionals - Conditional expressions (such as when in
+      playbook tasks or that in the assert action) with results
+      other than True or False will issue a deprecation warning.
+      Such expressions mask subtle errors and will fail by default
+      in Ansible Core >= 2.19. They should be corrected to always
+      ensure a strictly boolean (True or False) result. The
+      stricter Ansible Core >= 2.19 failure behavior can be enabled
+      by configuring ALLOW_BROKEN_CONDITIONALS to False.
+  * Bugfixes
+    - Fix Windows LIB env var corruption
+      (ansible-collections/ansible.windows#297).
+
+-------------------------------------------------------------------

Old:
----
  ansible_core-2.18.12.tar.gz
  ansible_core-2.18.12.tar.gz.sha256

New:
----
  ansible_core-2.18.14.tar.gz
  ansible_core-2.18.14.tar.gz.sha256

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ansible-core-2.18.spec ++++++
--- /var/tmp/diff_new_pack.04ImmP/_old  2026-03-11 20:58:48.346548437 +0100
+++ /var/tmp/diff_new_pack.04ImmP/_new  2026-03-11 20:58:48.346548437 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ansible-core-2.18
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -43,7 +43,7 @@
 %endif
 
 Name:           ansible-core-2.18
-Version:        2.18.12
+Version:        2.18.14
 Release:        0
 Summary:        Radically simple IT automation
 License:        GPL-3.0-or-later

++++++ ansible_core-2.18.12.tar.gz -> ansible_core-2.18.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/PKG-INFO 
new/ansible_core-2.18.14/PKG-INFO
--- old/ansible_core-2.18.12/PKG-INFO   2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/PKG-INFO   2026-02-23 23:49:04.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: ansible-core
-Version: 2.18.12
+Version: 2.18.14
 Summary: Radically simple IT automation
 Author: Ansible Project
 Project-URL: Homepage, https://ansible.com/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/ansible_core.egg-info/PKG-INFO 
new/ansible_core-2.18.14/ansible_core.egg-info/PKG-INFO
--- old/ansible_core-2.18.12/ansible_core.egg-info/PKG-INFO     2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/ansible_core.egg-info/PKG-INFO     2026-02-23 
23:49:04.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: ansible-core
-Version: 2.18.12
+Version: 2.18.14
 Summary: Radically simple IT automation
 Author: Ansible Project
 Project-URL: Homepage, https://ansible.com/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/ansible_core.egg-info/SOURCES.txt 
new/ansible_core-2.18.14/ansible_core.egg-info/SOURCES.txt
--- old/ansible_core-2.18.12/ansible_core.egg-info/SOURCES.txt  2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/ansible_core.egg-info/SOURCES.txt  2026-02-23 
23:49:04.000000000 +0100
@@ -1293,6 +1293,8 @@
 test/integration/targets/apt/vars/Ubuntu-22.yml
 test/integration/targets/apt/vars/Ubuntu-24.yml
 test/integration/targets/apt/vars/default.yml
+test/integration/targets/apt/vars/arch/amd64.yml
+test/integration/targets/apt/vars/arch/arm64.yml
 test/integration/targets/apt_key/aliases
 test/integration/targets/apt_key/meta/main.yml
 test/integration/targets/apt_key/tasks/apt_key.yml
@@ -1699,8 +1701,12 @@
 test/integration/targets/common_network/tasks/main.yml
 test/integration/targets/common_network/test_plugins/is_mac.py
 test/integration/targets/conditionals/aliases
+test/integration/targets/conditionals/broken_conditional_with_approx_location.yml
+test/integration/targets/conditionals/broken_conditional_with_location.yml
+test/integration/targets/conditionals/broken_conditional_without_location.yml
 test/integration/targets/conditionals/play.yml
 test/integration/targets/conditionals/runme.sh
+test/integration/targets/conditionals/validate_broken_conditionals.yml
 test/integration/targets/conditionals/vars/main.yml
 test/integration/targets/config/aliases
 test/integration/targets/config/inline_comment_ansible.cfg
@@ -4351,6 +4357,8 @@
 test/sanity/code-smell/mypy.py
 test/sanity/code-smell/mypy.requirements.in
 test/sanity/code-smell/mypy.requirements.txt
+test/sanity/code-smell/no-s3.json
+test/sanity/code-smell/no-s3.py
 test/sanity/code-smell/no-unwanted-characters.json
 test/sanity/code-smell/no-unwanted-characters.py
 test/sanity/code-smell/no-unwanted-files.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/changelogs/CHANGELOG-v2.18.rst 
new/ansible_core-2.18.14/changelogs/CHANGELOG-v2.18.rst
--- old/ansible_core-2.18.12/changelogs/CHANGELOG-v2.18.rst     2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/changelogs/CHANGELOG-v2.18.rst     2026-02-23 
23:49:04.000000000 +0100
@@ -4,6 +4,42 @@
 
 .. contents:: Topics
 
+v2.18.14
+========
+
+Release Summary
+---------------
+
+| Release Date: 2026-02-23
+| `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+Minor Changes
+-------------
+
+- ansible-test - Update URL used to download FreeBSD wheels for managed 
remotes.
+- ansible-test - Use the new API endpoint for the Ansible Core CI service.
+
+v2.18.13
+========
+
+Release Summary
+---------------
+
+| Release Date: 2026-01-29
+| `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+Minor Changes
+-------------
+
+- ansible-test - Replace RHEL 10.0 remote with 10.1.
+- ansible-test - Replace RHEL 9.4 remote with 9.7.
+- conditionals - Conditional expressions (such as ``when`` in playbook tasks 
or ``that`` in the ``assert`` action) with results other than True or False 
will issue a deprecation warning. Such expressions mask subtle errors and will 
fail by default in Ansible Core >= 2.19. They should be corrected to always 
ensure a strictly boolean (True or False) result. The stricter Ansible Core >= 
2.19 failure behavior can be enabled by configuring 
``ALLOW_BROKEN_CONDITIONALS`` to False.
+
+Bugfixes
+--------
+
+- Fix Windows LIB env var corruption 
(https://github.com/ansible-collections/ansible.windows/issues/297).
+
 v2.18.12
 ========
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/changelogs/changelog.yaml 
new/ansible_core-2.18.14/changelogs/changelog.yaml
--- old/ansible_core-2.18.12/changelogs/changelog.yaml  2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/changelogs/changelog.yaml  2026-02-23 
23:49:04.000000000 +0100
@@ -709,6 +709,70 @@
     - 85193-runtime-metadata.yml
     - varloaderror.yml
     release_date: '2025-12-02'
+  2.18.13:
+    changes:
+      release_summary: '| Release Date: 2026-01-29
+
+        | `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+        '
+    codename: Fool in the Rain
+    fragments:
+    - 2.18.13_summary.yaml
+    release_date: '2026-01-29'
+  2.18.13rc1:
+    changes:
+      bugfixes:
+      - Fix Windows LIB env var corruption 
(https://github.com/ansible-collections/ansible.windows/issues/297).
+      minor_changes:
+      - ansible-test - Replace RHEL 10.0 remote with 10.1.
+      - ansible-test - Replace RHEL 9.4 remote with 9.7.
+      - conditionals - Conditional expressions (such as ``when`` in playbook 
tasks
+        or ``that`` in the ``assert`` action) with results other than True or 
False
+        will issue a deprecation warning. Such expressions mask subtle errors 
and
+        will fail by default in Ansible Core >= 2.19. They should be corrected 
to
+        always ensure a strictly boolean (True or False) result. The stricter 
Ansible
+        Core >= 2.19 failure behavior can be enabled by configuring 
``ALLOW_BROKEN_CONDITIONALS``
+        to False.
+      release_summary: '| Release Date: 2026-01-23
+
+        | `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+        '
+    codename: Fool in the Rain
+    fragments:
+    - 2.18.13rc1_summary.yaml
+    - ansible-test-rhel-10.1.yml
+    - broken_conditional_backport.yml
+    - fix-windows-lib-env-corruption.yml
+    release_date: '2026-01-22'
+  2.18.14:
+    changes:
+      release_summary: '| Release Date: 2026-02-23
+
+        | `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+        '
+    codename: Fool in the Rain
+    fragments:
+    - 2.18.14_summary.yaml
+    release_date: '2026-02-23'
+  2.18.14rc1:
+    changes:
+      minor_changes:
+      - ansible-test - Update URL used to download FreeBSD wheels for managed 
remotes.
+      - ansible-test - Use the new API endpoint for the Ansible Core CI 
service.
+      release_summary: '| Release Date: 2026-02-17
+
+        | `Porting Guide 
<https://docs.ansible.com/ansible-core/2.18/porting_guides/porting_guide_core_2.18.html>`__
+
+        '
+    codename: Fool in the Rain
+    fragments:
+    - 2.18.14rc1_summary.yaml
+    - ansible-test-api-endpoint.yml
+    - ansible-test-spare-tire.yml
+    release_date: '2026-02-17'
   2.18.1rc1:
     changes:
       bugfixes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/lib/ansible/config/base.yml 
new/ansible_core-2.18.14/lib/ansible/config/base.yml
--- old/ansible_core-2.18.12/lib/ansible/config/base.yml        2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/lib/ansible/config/base.yml        2026-02-23 
23:49:04.000000000 +0100
@@ -9,6 +9,32 @@
     - For internal use only.
   type: path
   version_added: "2.18"
+_DISABLE_BACKPORTED_INSPECTIONS:
+  name: Disable inspections backported from future Ansible Core releases
+  default: false
+  description:
+    - When true, bypasses backported content inspections from future Ansible 
Core releases.
+    - Unsupported, for internal use only.
+  env: [ { name: _ANSIBLE_DISABLE_BACKPORTED_INSPECTIONS } ]
+  ini:
+    - { key: _disable_backported_inspections, section: defaults }
+  type: boolean
+  version_added: '2.16'
+ALLOW_BROKEN_CONDITIONALS:
+  name: Allow broken conditionals
+  default: true
+  description:
+    - When true (default), this option allows conditionals with non-boolean 
results to be used.
+    - A deprecation warning will be emitted in these cases.
+    - When false, non-boolean conditionals result in an error.
+    - Such results often indicate unintentional use of templates where they 
are not supported, resulting in a conditional that is always true.
+    - When this option is enabled, conditional expressions which are a literal 
``None`` or empty string will evaluate as true for backwards compatibility.
+    - This configuration was backported from Ansible Core 2.19 to enable 
detection and correction of problematic conditional expressions that default to 
an error in Ansible Core 2.19+.
+  env: [{name: ANSIBLE_ALLOW_BROKEN_CONDITIONALS}]
+  ini:
+  - {key: allow_broken_conditionals, section: defaults}
+  type: boolean
+  version_added: '2.16'
 ANSIBLE_HOME:
   name: The Ansible home path
   description:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/lib/ansible/executor/task_executor.py 
new/ansible_core-2.18.14/lib/ansible/executor/task_executor.py
--- old/ansible_core-2.18.12/lib/ansible/executor/task_executor.py      
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/lib/ansible/executor/task_executor.py      
2026-02-23 23:49:04.000000000 +0100
@@ -3,6 +3,7 @@
 # GNU General Public License v3.0+ (see COPYING or 
https://www.gnu.org/licenses/gpl-3.0.txt)
 from __future__ import annotations
 
+import contextlib
 import os
 import time
 import json
@@ -410,6 +411,8 @@
                 cond.when = self._task.loop_control.get_validated_value(
                     'break_when', 
self._task.loop_control.fattributes.get('break_when'), 
self._task.loop_control.break_when, templar
                 )
+                with contextlib.suppress(AttributeError):
+                    cond._ds = self._task._ds  # propagate task context for 
errors
                 if cond.evaluate_conditional(templar, task_vars):
                     # delete loop vars before exiting loop
                     del task_vars[loop_var]
@@ -722,12 +725,16 @@
                 if self._task.changed_when is not None and 
self._task.changed_when:
                     cond = Conditional(loader=self._loader)
                     cond.when = self._task.changed_when
+                    with contextlib.suppress(AttributeError):
+                        cond._ds = self._task._ds  # propagate task context 
for errors
                     result['changed'] = cond.evaluate_conditional(templar, 
vars_copy)
 
             def _evaluate_failed_when_result(result):
                 if self._task.failed_when:
                     cond = Conditional(loader=self._loader)
                     cond.when = self._task.failed_when
+                    with contextlib.suppress(AttributeError):
+                        cond._ds = self._task._ds  # propagate task context 
for errors
                     failed_when_result = cond.evaluate_conditional(templar, 
vars_copy)
                     result['failed_when_result'] = result['failed'] = 
failed_when_result
                 else:
@@ -792,6 +799,8 @@
             if retries > 1:
                 cond = Conditional(loader=self._loader)
                 cond.when = self._task.until or [not result['failed']]
+                with contextlib.suppress(AttributeError):
+                    cond._ds = self._task._ds
                 if cond.evaluate_conditional(templar, vars_copy):
                     break
                 else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/lib/ansible/module_utils/ansible_release.py 
new/ansible_core-2.18.14/lib/ansible/module_utils/ansible_release.py
--- old/ansible_core-2.18.12/lib/ansible/module_utils/ansible_release.py        
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/lib/ansible/module_utils/ansible_release.py        
2026-02-23 23:49:04.000000000 +0100
@@ -17,6 +17,6 @@
 
 from __future__ import annotations
 
-__version__ = '2.18.12'
+__version__ = '2.18.14'
 __author__ = 'Ansible, Inc.'
 __codename__ = "Fool in the Rain"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/lib/ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1
 
new/ansible_core-2.18.14/lib/ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1
--- 
old/ansible_core-2.18.12/lib/ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1
       2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/lib/ansible/module_utils/powershell/Ansible.ModuleUtils.AddType.psm1
       2026-02-23 23:49:04.000000000 +0100
@@ -372,7 +372,7 @@
         $originalEnv = @{}
         try {
             'LIB' | ForEach-Object -Process {
-                $value = Get-Item -LiteralPath "Env:\$_" -ErrorAction 
SilentlyContinue
+                $value = (Get-Item -LiteralPath "Env:\$_" -ErrorAction 
SilentlyContinue).Value
                 if ($value) {
                     $originalEnv[$_] = $value
                     Remove-Item -LiteralPath "Env:\$_"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/lib/ansible/playbook/conditional.py 
new/ansible_core-2.18.14/lib/ansible/playbook/conditional.py
--- old/ansible_core-2.18.12/lib/ansible/playbook/conditional.py        
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/lib/ansible/playbook/conditional.py        
2026-02-23 23:49:04.000000000 +0100
@@ -17,8 +17,10 @@
 
 from __future__ import annotations
 
+import contextlib
 import typing as t
 
+from ansible import constants as C
 from ansible.errors import AnsibleError, AnsibleUndefinedVariable, 
AnsibleTemplateError
 from ansible.module_utils.common.text.converters import to_native
 from ansible.playbook.attribute import FieldAttribute
@@ -72,9 +74,12 @@
                 try:
                     res = self._check_conditional(conditional, templar, 
all_vars)
                 except AnsibleError as e:
+                    # propagate error `obj` if present, use conditional if 
position-tagged, fall back to task DS
+                    obj = e.obj or conditional if hasattr(conditional, 
'ansible_pos') else getattr(self, '_ds', None)
+
                     raise AnsibleError(
                         "The conditional check '%s' failed. The error was: %s" 
% (to_native(conditional), to_native(e)),
-                        obj=getattr(self, '_ds', None)
+                        obj=obj,
                     )
 
             display.debug("Evaluated conditional (%s): %s" % (conditional, 
res))
@@ -86,6 +91,7 @@
     def _check_conditional(self, conditional: str, templar: Templar, all_vars: 
dict[str, t.Any]) -> bool:
         original = conditional
         templar.available_variables = all_vars
+
         try:
             if templar.is_template(conditional):
                 display.warning(
@@ -99,15 +105,59 @@
                 elif conditional == "":
                     return False
 
+            # these should be module-global, but can't be for esoteric config 
chicken/egg scenarios
+            _allow_broken_conditionals = 
C.config.get_config_value('ALLOW_BROKEN_CONDITIONALS')
+            _disable_backported_inspections = 
C.config.get_config_value('_DISABLE_BACKPORTED_INSPECTIONS')
+
             # If the result of the first-pass template render (to resolve 
inline templates) is marked unsafe,
             # explicitly fail since the next templating operation would never 
evaluate
             if hasattr(conditional, '__UNSAFE__'):
                 raise AnsibleTemplateError('Conditional is marked as unsafe, 
and cannot be evaluated.')
 
-            # NOTE The spaces around True and False are intentional to 
short-circuit literal_eval for
-            #      jinja2_native=False and avoid its expensive calls.
-            return templar.template(
-                "{%% if %s %%} True {%% else %%} False {%% endif %%}" % 
conditional,
-            ).strip() == "True"
+            if _disable_backported_inspections:
+                # internal escape hatch to restore original conditional 
wrapper behavior
+                # NOTE The spaces around True and False are intentional to 
short-circuit literal_eval for
+                #      jinja2_native=False and avoid its expensive calls.
+                return templar.template(
+                    "{%% if %s %%} True {%% else %%} False {%% endif %%}" % 
conditional,
+                ).strip() == "True"
+
+            result, result_type_name = templar.template(f'{{% set __cres = 
{conditional} %}}{{{{ [true if __cres else false, __cres.__class__.__name__] 
}}}}')
+
+            if result_type_name != 'bool':
+                if _allow_broken_conditionals:
+                    display.deprecated(
+                        msg=f"Conditional result at 
{self._get_conditional_source_context(conditional)} was of type 
{result_type_name!r}. "
+                            f"Conditional results should only be True or 
False. The result was interpreted as {result}.",
+                        version="2.19",
+                    )
+                else:
+                    raise AnsibleTemplateError(
+                        message=f"Conditional result was of type 
{result_type_name!r}. "
+                                "Conditional results must be True or False 
when `ALLOW_BROKEN_CONDITIONALS` is disabled, "
+                                "which is the default in Ansible Core >= 
2.19.",
+                        obj=original,
+                    )
+
+            return result
         except AnsibleUndefinedVariable as e:
             raise AnsibleUndefinedVariable("error while evaluating conditional 
(%s): %s" % (original, e))
+
+    def _get_conditional_source_context(self, conditional: str) -> str:
+        """Utility method to approximate 2.19+ source context for warnings."""
+        src: str | None = None
+        location_label: str | None = None
+
+        # most string expressions should have been tagged by the YAML parser
+        with contextlib.suppress(AttributeError, ValueError):
+            src, line, col = conditional.ansible_pos
+            location_label = "location"
+
+        if not location_label:
+            # report approximate location from the conditional's task DS, if 
available
+            with contextlib.suppress(AttributeError, ValueError):
+                src, line, col = self._ds.ansible_pos
+                location_label = "approximate location"
+
+        # display the conditional expression inline only if we have no other 
source context
+        return f'{location_label} {src} {line}:{col}' if location_label else 
f'unknown location (conditional: {conditional!r})'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/lib/ansible/release.py 
new/ansible_core-2.18.14/lib/ansible/release.py
--- old/ansible_core-2.18.12/lib/ansible/release.py     2025-12-09 
17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/lib/ansible/release.py     2026-02-23 
23:49:04.000000000 +0100
@@ -17,6 +17,6 @@
 
 from __future__ import annotations
 
-__version__ = '2.18.12'
+__version__ = '2.18.14'
 __author__ = 'Ansible, Inc.'
 __codename__ = "Fool in the Rain"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/pyproject.toml 
new/ansible_core-2.18.14/pyproject.toml
--- old/ansible_core-2.18.12/pyproject.toml     2025-12-09 17:45:08.000000000 
+0100
+++ new/ansible_core-2.18.14/pyproject.toml     2026-02-23 23:49:04.000000000 
+0100
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["setuptools >= 66.1.0, <= 80.9.0", "wheel == 0.45.1"]  # lower 
bound to support controller Python versions, upper bound for latest version 
tested at release
+requires = ["setuptools >= 66.1.0, <= 82.0.0", "wheel == 0.45.1"]  # lower 
bound to support controller Python versions, upper bound for latest version 
tested at release
 build-backend = "setuptools.build_meta"
 
 [project]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/defaults/main.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/defaults/main.yml
--- old/ansible_core-2.18.12/test/integration/targets/apt/defaults/main.yml     
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/apt/defaults/main.yml     
2026-02-23 23:49:04.000000000 +0100
@@ -1,2 +1 @@
-apt_foreign_arch: i386
-hello_old_version: 2.6-1
+hello_old_version: 2.10-2ubuntu2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/tasks/apt-multiarch.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/tasks/apt-multiarch.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/apt/tasks/apt-multiarch.yml   
    2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/apt/tasks/apt-multiarch.yml   
    2026-02-23 23:49:04.000000000 +0100
@@ -1,3 +1,19 @@
+- name: get the default arch
+  command: dpkg --print-architecture
+  register: default_arch
+
+- name: select a foreign arch for {{ default_arch.stdout }}
+  # When adding a new arch, pick a foreign arch hosted on the same repository 
mirror as the default arch. For example:
+  # - archive.ubuntu.com hosts both amd64 and i386
+  # - ports.ubuntu.com hosts both arm64 and armhf
+  include_vars: "{{ item }}"
+  with_first_found:
+    - "arch/{{ default_arch.stdout }}.yml"
+
+- name: show the arch selected for multi-arch testing
+  debug:
+    msg: Using {{ apt_foreign_arch }} as the foreign arch for {{ 
default_arch.stdout }}
+
 # verify that apt is handling multi-arch systems properly
 
 - name: load version specific vars
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/tasks/apt.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/tasks/apt.yml
--- old/ansible_core-2.18.12/test/integration/targets/apt/tasks/apt.yml 
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/apt/tasks/apt.yml 
2026-02-23 23:49:04.000000000 +0100
@@ -1,13 +1,3 @@
-- name: use Debian mirror
-  set_fact:
-    distro_mirror: http://ftp.debian.org/debian
-  when: ansible_distribution == 'Debian'
-
-- name: use Ubuntu mirror
-  set_fact:
-    distro_mirror: http://archive.ubuntu.com/ubuntu
-  when: ansible_distribution == 'Ubuntu'
-
 # UNINSTALL 'python-apt'
 #  The `apt` module has the smarts to auto-install `python-apt(3)`.  To test, 
we
 #  will first uninstall `python-apt`.
@@ -275,7 +265,7 @@
   apt: pkg=hello state=absent purge=yes
 
 - name: install deb file from URL
-  apt: deb="{{ distro_mirror }}/pool/main/h/hello/hello_{{ 
hello_version.stdout }}_{{ hello_architecture.stdout }}.deb"
+  apt: 
"deb=https://ci-files.testing.ansible.com/test/integration/targets/apt/hello_{{ 
hello_old_version }}_{{ hello_architecture.stdout }}.deb"
   register: apt_url
 
 - name: verify installation of hello
@@ -456,7 +446,7 @@
 
 # https://github.com/ansible/ansible/issues/65325
 - name: Download and install old version of hello (to test 
allow_change_held_packages option)
-  apt: 
"deb=https://ci-files.testing.ansible.com/test/integration/targets/dpkg_selections/hello_{{
 hello_old_version }}_amd64.deb"
+  apt: 
"deb=https://ci-files.testing.ansible.com/test/integration/targets/apt/hello_{{ 
hello_old_version }}_{{ hello_architecture.stdout }}.deb"
   notify:
     - remove package hello
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/tasks/main.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/tasks/main.yml
--- old/ansible_core-2.18.12/test/integration/targets/apt/tasks/main.yml        
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/apt/tasks/main.yml        
2026-02-23 23:49:04.000000000 +0100
@@ -15,14 +15,16 @@
 # You should have received a copy of the GNU General Public License
 # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
 
+- name: skip test on unsupported platforms
+  meta: end_play
+  when: ansible_distribution not in ('Ubuntu', 'Debian')
+
 - block:
   - import_tasks: 'apt.yml'
 
   - import_tasks: 'url-with-deps.yml'
 
   - import_tasks: 'apt-multiarch.yml'
-    when:
-      - ansible_userspace_architecture != apt_foreign_arch
 
   - import_tasks: 'apt-builddep.yml'
 
@@ -36,9 +38,6 @@
           name: "{{ repodir }}"
           state: absent
 
-  when:
-    - ansible_distribution in ('Ubuntu', 'Debian')
-
   always:
     - name: Check if the target is managed by ansible-test
       stat:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/vars/arch/amd64.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/vars/arch/amd64.yml
--- old/ansible_core-2.18.12/test/integration/targets/apt/vars/arch/amd64.yml   
1970-01-01 01:00:00.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/apt/vars/arch/amd64.yml   
2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1 @@
+apt_foreign_arch: i386
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/apt/vars/arch/arm64.yml 
new/ansible_core-2.18.14/test/integration/targets/apt/vars/arch/arm64.yml
--- old/ansible_core-2.18.12/test/integration/targets/apt/vars/arch/arm64.yml   
1970-01-01 01:00:00.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/apt/vars/arch/arm64.yml   
2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1 @@
+apt_foreign_arch: armhf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_with_approx_location.yml
 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_with_approx_location.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_with_approx_location.yml
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_with_approx_location.yml
  2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1,6 @@
+- hosts: localhost
+  gather_facts: no
+  tasks:
+    - name: conditional expression with non-boolean input (inherits task 
location)
+      debug:
+      when: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_with_location.yml
 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_with_location.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_with_location.yml
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_with_location.yml
 2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1,6 @@
+- hosts: localhost
+  gather_facts: no
+  tasks:
+    - name: conditional expression with non-boolean result (has location)
+      debug:
+      when: 1 + 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_without_location.yml
 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_without_location.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/conditionals/broken_conditional_without_location.yml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/conditionals/broken_conditional_without_location.yml
      2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1,6 @@
+- hosts: localhost
+  gather_facts: no
+  tasks:
+    - name: non-task conditional expression with non-boolean input (no 
location)
+      assert:
+        that: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/play.yml 
new/ansible_core-2.18.14/test/integration/targets/conditionals/play.yml
--- old/ansible_core-2.18.12/test/integration/targets/conditionals/play.yml     
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/conditionals/play.yml     
2026-02-23 23:49:04.000000000 +0100
@@ -652,19 +652,20 @@
             - top is skipped
             - sub is skipped
 
-      - name: test that 'comparison expression' item works with_items
-        assert:
-          that:
-            - item
-        with_items:
-          - 1 == 1
-
-      - name: test that 'comparison expression' item works in loop
-        assert:
-          that:
-            - item
-        loop:
-          - 1 == 1
+# these tests have never actually worked; they were only asserting a truthy 
string, not executing an indirected expression
+#      - name: test that 'comparison expression' item works with_items
+#        assert:
+#          that:
+#            - item
+#        with_items:
+#          - 1 == 1
+#
+#      - name: test that 'comparison expression' item works in loop
+#        assert:
+#          that:
+#            - item
+#        loop:
+#          - 1 == 1
 
       - set_fact:
           sentinel_file: '{{ lookup("env", 
"OUTPUT_DIR")}}/LOOKUP_SIDE_EFFECT.txt'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/runme.sh 
new/ansible_core-2.18.14/test/integration/targets/conditionals/runme.sh
--- old/ansible_core-2.18.12/test/integration/targets/conditionals/runme.sh     
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/conditionals/runme.sh     
2026-02-23 23:49:04.000000000 +0100
@@ -3,3 +3,5 @@
 set -eux
 
 ansible-playbook -i ../../inventory play.yml "$@"
+
+ansible-playbook validate_broken_conditionals.yml "$@"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/conditionals/validate_broken_conditionals.yml
 
new/ansible_core-2.18.14/test/integration/targets/conditionals/validate_broken_conditionals.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/conditionals/validate_broken_conditionals.yml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/conditionals/validate_broken_conditionals.yml
     2026-02-23 23:49:04.000000000 +0100
@@ -0,0 +1,54 @@
+- hosts: localhost
+  gather_facts: no
+  environment:
+    ANSIBLE_NOCOLOR: 1
+    ANSIBLE_FORCE_COLOR: 0
+    ANSIBLE_DEPRECATION_WARNINGS: 1
+  tasks:
+    - name: broken conditional warning with exact location and bypass
+      command: ansible-playbook broken_conditional_with_location.yml
+      environment:
+      - '{{ item.extra_env }}'
+      loop:
+        - scenario: default
+          extra_env: {}
+        - scenario: explicit
+          extra_env:
+            ANSIBLE_ALLOW_BROKEN_CONDITIONALS: 1
+        - scenario: bypass
+          extra_env:
+            _ANSIBLE_DISABLE_BACKPORTED_INSPECTIONS: 1
+      register: result
+
+    - assert:
+        that:
+          - result.results[0].stderr | replace('\n', '') is search("result at 
location.+was of type 'int'")
+          - result.results[1].stderr | replace('\n', '') is search("result at 
location.+was of type 'int'")
+          - result.results[2].stderr | replace('\n', '') is not search("result 
at location.+was of type 'int'")
+
+    - name: validate broken conditional default warning with approximate 
location
+      command: ansible-playbook broken_conditional_with_approx_location.yml
+      register: result
+
+    - assert:
+        that:
+          - result.stderr | replace('\n', '') is search("result at approximate 
location.+was of type 'int'")
+
+    - name: validate broken conditional without location
+      command: ansible-playbook broken_conditional_without_location.yml
+      register: result
+
+    - assert:
+        that:
+          - result.stderr | replace('\n', '') is search("result at unknown 
location.+was of type 'int'")
+
+    - name: validate broken conditional error
+      command: ansible-playbook broken_conditional_with_location.yml
+      environment:
+        ANSIBLE_ALLOW_BROKEN_CONDITIONALS: 0
+      register: result
+      failed_when: result.rc == 0
+
+    - assert:
+        that:
+          - result.stdout | replace('\n', '') is search("conditional 
check.+failed.+was of type 'int'")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/defaults/main.yaml
 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/defaults/main.yaml
--- 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/defaults/main.yaml
        2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/defaults/main.yaml
        2026-02-23 23:49:04.000000000 +0100
@@ -1 +1 @@
-hello_old_version: 2.6-1
+hello_old_version: 2.10-2ubuntu2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/tasks/dpkg_selections.yaml
 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/tasks/dpkg_selections.yaml
--- 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/tasks/dpkg_selections.yaml
        2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/tasks/dpkg_selections.yaml
        2026-02-23 23:49:04.000000000 +0100
@@ -1,5 +1,9 @@
+- name: get the default arch
+  command: dpkg --print-architecture
+  register: default_arch
+
 - name: download and install old version of hello
-  apt: 
"deb=https://ci-files.testing.ansible.com/test/integration/targets/dpkg_selections/hello_{{
 hello_old_version }}_amd64.deb"
+  apt: 
"deb=https://ci-files.testing.ansible.com/test/integration/targets/dpkg_selections/hello_{{
 hello_old_version }}_{{ default_arch.stdout }}.deb"
 
 - name: freeze version for hello
   dpkg_selections:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/tasks/main.yaml
 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/tasks/main.yaml
--- 
old/ansible_core-2.18.12/test/integration/targets/dpkg_selections/tasks/main.yaml
   2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/dpkg_selections/tasks/main.yaml
   2026-02-23 23:49:04.000000000 +0100
@@ -1,3 +1,6 @@
 ---
+ - name: skip test on unsupported platforms
+   meta: end_play
+   when: ansible_distribution not in ('Ubuntu', 'Debian')
+
  - include_tasks: file='dpkg_selections.yaml'
-   when: ansible_distribution in ('Ubuntu', 'Debian')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/module_utils_Ansible.ModuleUtils.AddType/library/add_type_test.ps1
 
new/ansible_core-2.18.14/test/integration/targets/module_utils_Ansible.ModuleUtils.AddType/library/add_type_test.ps1
--- 
old/ansible_core-2.18.12/test/integration/targets/module_utils_Ansible.ModuleUtils.AddType/library/add_type_test.ps1
        2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/module_utils_Ansible.ModuleUtils.AddType/library/add_type_test.ps1
        2026-02-23 23:49:04.000000000 +0100
@@ -322,6 +322,7 @@
 $env:LIB = "C:\fake\folder\path"
 try {
     Add-CSharpType -Reference $lib_set
+    Assert-Equal -actual $env:LIB -expected "C:\fake\folder\path"
 }
 finally {
     Remove-Item -LiteralPath env:\LIB
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/rpm_key/tasks/main.yaml 
new/ansible_core-2.18.14/test/integration/targets/rpm_key/tasks/main.yaml
--- old/ansible_core-2.18.12/test/integration/targets/rpm_key/tasks/main.yaml   
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/integration/targets/rpm_key/tasks/main.yaml   
2026-02-23 23:49:04.000000000 +0100
@@ -1,3 +1,7 @@
+ - name: Skip RHEL 10.1 until rpm_key has been updated
+   meta: end_play
+   when: ansible_distribution == "RedHat" and ansible_distribution_version == 
"10.1"
+
  - when: ansible_os_family == "RedHat"
    block:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/integration/targets/setup_deb_repo/tasks/main.yml 
new/ansible_core-2.18.14/test/integration/targets/setup_deb_repo/tasks/main.yml
--- 
old/ansible_core-2.18.12/test/integration/targets/setup_deb_repo/tasks/main.yml 
    2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/integration/targets/setup_deb_repo/tasks/main.yml 
    2026-02-23 23:49:04.000000000 +0100
@@ -66,8 +66,8 @@
     lineinfile:
       path: /etc/apt/sources.list
       backrefs: True
-      regexp: ^#\s*deb-src http://archive\.ubuntu\.com/ubuntu/ (\w*){{ item }} 
universe$
-      line: deb-src http://archive.ubuntu.com/ubuntu \1{{ item }} universe
+      regexp: ^#\s*deb-src (http://.*\.ubuntu\.com/ubuntu.*/) (\w*){{ item }} 
universe$
+      line: deb-src \1 \2{{ item }} universe
       state: present
     with_items:
     - ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/lib/ansible_test/_data/completion/remote.txt 
new/ansible_core-2.18.14/test/lib/ansible_test/_data/completion/remote.txt
--- old/ansible_core-2.18.12/test/lib/ansible_test/_data/completion/remote.txt  
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/lib/ansible_test/_data/completion/remote.txt  
2026-02-23 23:49:04.000000000 +0100
@@ -7,8 +7,8 @@
 freebsd python_dir=/usr/local/bin become=su_sudo provider=aws arch=x86_64
 macos/14.3 python=3.11 python_dir=/usr/local/bin become=sudo 
provider=parallels arch=x86_64
 macos python_dir=/usr/local/bin become=sudo provider=parallels arch=x86_64
-rhel/9.4 python=3.9,3.12 become=sudo provider=aws arch=x86_64
-rhel/10.0 python=3.12 become=sudo provider=aws arch=x86_64
+rhel/9.7 python=3.9,3.12 become=sudo provider=aws arch=x86_64
+rhel/10.1 python=3.12 become=sudo provider=aws arch=x86_64
 rhel become=sudo provider=aws arch=x86_64
 ubuntu/22.04 python=3.10 become=sudo provider=aws arch=x86_64
 ubuntu/24.04 python=3.12 become=sudo provider=aws arch=x86_64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/lib/ansible_test/_internal/core_ci.py 
new/ansible_core-2.18.14/test/lib/ansible_test/_internal/core_ci.py
--- old/ansible_core-2.18.12/test/lib/ansible_test/_internal/core_ci.py 
2025-12-09 17:45:08.000000000 +0100
+++ new/ansible_core-2.18.14/test/lib/ansible_test/_internal/core_ci.py 
2026-02-23 23:49:04.000000000 +0100
@@ -136,7 +136,7 @@
 class AnsibleCoreCI:
     """Client for Ansible Core CI services."""
 
-    DEFAULT_ENDPOINT = 'https://ansible-core-ci.testing.ansible.com'
+    DEFAULT_ENDPOINT = 'https://api.ci.core.ansible.com'
 
     def __init__(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/lib/ansible_test/_util/target/setup/bootstrap.sh 
new/ansible_core-2.18.14/test/lib/ansible_test/_util/target/setup/bootstrap.sh
--- 
old/ansible_core-2.18.12/test/lib/ansible_test/_util/target/setup/bootstrap.sh  
    2025-12-09 17:45:08.000000000 +0100
+++ 
new/ansible_core-2.18.14/test/lib/ansible_test/_util/target/setup/bootstrap.sh  
    2026-02-23 23:49:04.000000000 +0100
@@ -232,7 +232,7 @@
     # make additional wheels available for packages which lack them for this 
platform
     echo "# generated by ansible-test
 [global]
-extra-index-url = https://spare-tire.testing.ansible.com/simple/
+extra-index-url = https://spare-tire.core.ansible.com/simple/
 prefer-binary = yes
 " > /etc/pip.conf
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ansible_core-2.18.12/test/sanity/code-smell/no-s3.json 
new/ansible_core-2.18.14/test/sanity/code-smell/no-s3.json
--- old/ansible_core-2.18.12/test/sanity/code-smell/no-s3.json  1970-01-01 
01:00:00.000000000 +0100
+++ new/ansible_core-2.18.14/test/sanity/code-smell/no-s3.json  2026-02-23 
23:49:04.000000000 +0100
@@ -0,0 +1,4 @@
+{
+    "text": true,
+    "output": "path-line-column-message"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ansible_core-2.18.12/test/sanity/code-smell/no-s3.py 
new/ansible_core-2.18.14/test/sanity/code-smell/no-s3.py
--- old/ansible_core-2.18.12/test/sanity/code-smell/no-s3.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/ansible_core-2.18.14/test/sanity/code-smell/no-s3.py    2026-02-23 
23:49:04.000000000 +0100
@@ -0,0 +1,27 @@
+"""
+Disallow direct linking to S3 buckets.
+S3 buckets should be accessed through a CloudFront distribution.
+"""
+
+from __future__ import annotations
+
+import re
+import sys
+
+
+def main():
+    """Main entry point."""
+    for path in sys.argv[1:] or sys.stdin.read().splitlines():
+        with open(path, 'rb') as path_fd:
+            for line, b_text in enumerate(path_fd.readlines()):
+                try:
+                    text = b_text.decode()
+                except UnicodeDecodeError:
+                    continue
+
+                if match := re.search(r'(http.*?s3\..*?amazonaws\.com)', text):
+                    print(f'{path}:{line + 1}:{match.start(1) + 1}: use a 
CloudFront distribution instead of an S3 bucket: {match.group(1)}')
+
+
+if __name__ == '__main__':
+    main()

++++++ ansible_core-2.18.12.tar.gz.sha256 -> ansible_core-2.18.14.tar.gz.sha256 
++++++
--- 
/work/SRC/openSUSE:Factory/ansible-core-2.18/ansible_core-2.18.12.tar.gz.sha256 
    2025-12-11 18:44:12.392696041 +0100
+++ 
/work/SRC/openSUSE:Factory/.ansible-core-2.18.new.8177/ansible_core-2.18.14.tar.gz.sha256
   2026-03-11 20:58:47.790525539 +0100
@@ -1 +1 @@
-40e03f74bee7f0eb65e76827017373c4e56dc57ba0618e98c435d875e8e349fc  
ansible_core-2.18.12.tar.gz
+da9ff29f673e2cf2632ddd266883977b6602559c65cbd0cfc4d48e70306e85d5  
ansible_core-2.18.14.tar.gz

Reply via email to