-
Notifications
You must be signed in to change notification settings - Fork 125
Description
Summary
The release-stable.yml pipeline run #53 fails on the Python Lint (.github/skills/experimental/powerpoint) / Ruff Lint and Format Check job, which blocks the release-please job from creating a stable release PR.
Root Cause Analysis
This failure was exposed by PR #1043, which added -Force to Get-ChildItem calls in release-stable.yml and pr-validation.yml. Before that fix, Get-ChildItem -Recurse could not traverse hidden directories like .github/, so the discover-python-projects job never found the powerpoint skill and python-lint was always skipped.
With -Force in place, the powerpoint skill is now correctly discovered and linted. Pre-existing ruff violations in the skill cause the lint job to fail.
Why PR validation did not catch this
The python-lint reusable workflow is called with different parameters in each pipeline:
| Pipeline | changed-files-only |
Effect |
|---|---|---|
pr-validation.yml |
true |
Only lints Python files changed in the PR |
release-stable.yml |
false |
Lints all Python files in discovered skills |
PR #1043 changed only YAML workflow files. With changed-files-only: true, zero Python files were linted during PR validation, so the pre-existing violations were invisible.
Dependency chain to release-please
The release-please job depends on python-lint via its needs: list. PR #1043 added an if: ${{ !cancelled() && !failure() }} guard to handle the skip case (no Python projects found). However, when python-lint genuinely fails (as in run #53), failure() returns true and release-please is correctly blocked.
Fixing the ruff violations resolves the genuine failure, allowing python-lint to pass and release-please to proceed.
Violations Found
ruff check (3 errors)
tests/test_build_deck.py:920— E501 line too long (92 > 88)tests/test_build_deck.py:940— E501 line too long (92 > 88)tests/test_build_deck.py:954— E501 line too long (93 > 88)
ruff format (7 files)
scripts/build_deck.pyscripts/extract_content.pyscripts/pptx_colors.pytests/test_build_deck.pytests/test_render_pdf_images.pytests/test_validate_deck.pytests/test_validate_slides.py
All paths relative to .github/skills/experimental/powerpoint/.
Additional Discovery
The same hidden-directory bug (Get-ChildItem -Recurse without -Force) was present in two local linting scripts:
scripts/linting/Invoke-PythonLint.ps1(line 38)scripts/linting/Invoke-PythonTests.ps1(line 44)
Running npm run lint:py locally produced "No Python skills found" before the fix. Adding -Force resolves this.
Fix
- Apply
ruff formatto 7 Python files in the powerpoint skill - Apply
ruff check --fixto resolve 3 E501 line-too-long violations - Add
-ForcetoGet-ChildIteminInvoke-PythonLint.ps1andInvoke-PythonTests.ps1
Branch: fix/ruff-lint-powerpoint-skill
Validation
All checks pass locally after the fix:
ruff check .— 0 errorsruff format --check .— all files formattednpm run lint:py— "Found 1 Python skill(s)", all passednpm run lint:ps— 93 files, 0 issues