From 12058a420180fd23be9712159dc69ce7702748b3 Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sun, 23 Aug 2026 16:20:10 +0200 Subject: [PATCH] Trigger Python tests when meta/requirements.txt changes The previous commit fixed the dependency resolution failure that had kept Python tests red since ~2026-08-19 -- and then did not run it, because the workflow's path filter lists "requirements.txt" while the root file is a SYMLINK into meta/. GitHub matches filters against the path as git records it, so editing the real file matched nothing and the red result stayed pinned to an older commit. A gate that cannot be triggered by the change it gates is the same class of problem as the two found earlier today: it reports a stale answer and looks fine. Both spellings are now listed, in the push and pull_request filters. The other root symlinks -- pyproject.toml, run.sh, lint_python.sh, .fvmrc -- are in no workflow filter today, so they carry the same latent trap if one is ever added. CI_GREEN_SKIP=1: the baseline is red only from the pre-fix Python tests run this commit exists to make reachable. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01PJrqKERAo5QUeEHWS5Asgp --- .github/workflows/python-tests.yml | 12 +++++++ ...-tests-path-filter-symlink-2026-08-23.json | 34 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 docs/superpowers/evidence/python-tests-path-filter-symlink-2026-08-23.json diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 746a736f..9e161f06 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -9,7 +9,13 @@ on: - "tests/**" - "linux_configuration/scripts/periodic_background/system-maintenance/bin/**" - "linux_configuration/tests/**" + # Both spellings: the root requirements.txt is a SYMLINK into meta/, + # and GitHub matches path filters against the changed path as git + # records it. Editing meta/requirements.txt therefore did NOT match + # "requirements.txt", so a dependency fix silently skipped this + # workflow and the red run stayed on an older commit. - "requirements.txt" + - "meta/requirements.txt" - ".github/workflows/python-tests.yml" pull_request: branches: [main] @@ -19,7 +25,13 @@ on: - "tests/**" - "linux_configuration/scripts/periodic_background/system-maintenance/bin/**" - "linux_configuration/tests/**" + # Both spellings: the root requirements.txt is a SYMLINK into meta/, + # and GitHub matches path filters against the changed path as git + # records it. Editing meta/requirements.txt therefore did NOT match + # "requirements.txt", so a dependency fix silently skipped this + # workflow and the red run stayed on an older commit. - "requirements.txt" + - "meta/requirements.txt" - ".github/workflows/python-tests.yml" workflow_dispatch: {} diff --git a/docs/superpowers/evidence/python-tests-path-filter-symlink-2026-08-23.json b/docs/superpowers/evidence/python-tests-path-filter-symlink-2026-08-23.json new file mode 100644 index 00000000..f2efc3f6 --- /dev/null +++ b/docs/superpowers/evidence/python-tests-path-filter-symlink-2026-08-23.json @@ -0,0 +1,34 @@ +{ + "intent": "Make the Python tests workflow actually trigger when the dependency list changes, so a requirements fix cannot silently skip the workflow it is meant to repair.", + "scope": [ + ".github/workflows/python-tests.yml (push and pull_request path filters)", + "Non-goal: changing the symlink layout, which the repo documents deliberately" + ], + "changes": [ + "Added meta/requirements.txt alongside requirements.txt in both path filters. The root file is a symlink into meta/, and GitHub matches filters against the path as git records it, so editing the real file did not match the symlink's name." + ], + "verification": [ + { + "command": "Observed on commit 32de2215, which changed meta/requirements.txt", + "result": "fail", + "evidence": "Dependency Graph, Shell tests and Pre-commit checks all ran; Python tests did NOT trigger at all, leaving the last Python tests result on the older red commit 5ba2cbd4" + }, + { + "command": "python3 -c \"import yaml; yaml.safe_load(open('.github/workflows/python-tests.yml'))\"", + "result": "pass", + "evidence": "YAML valid; both the push and pull_request filter lists were patched (2 occurrences)" + }, + { + "command": "gh workflow run 'Python tests' --ref main", + "result": "pass", + "evidence": "Dispatched run 32645075080 to confirm the dependency fix itself, since the filter bug prevented an automatic run" + } + ], + "risks": [ + "The other root symlinks (pyproject.toml, run.sh, lint_python.sh, .fvmrc) are not referenced by any workflow path filter today, so they carry the same latent trap if one is ever added." + ], + "rollback": [ + "Remove the meta/requirements.txt lines from both filters.", + "After rollback, a change to meta/requirements.txt will once again skip this workflow." + ] +}