feat: light-kanban-worker v0.1.5 candidate — non-overlapping runs, fi… #30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: collection-quality | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| quality: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Run collection and package checks (cross-platform python) | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| python -m unittest discover -s tests -p "test_*.py" | |
| python -m compileall -q skills/learn-anything skills/manuscript-ops skills/light-kanban-worker/tests tests/test_collection_contract.py | |
| for f in \ | |
| skills/ask-light/tests/test_ask_light_contract.py \ | |
| skills/project-init/tests/test_project_init_contract.py \ | |
| skills/project-init/tests/test_project_init_behavior.py \ | |
| skills/recap/tests/test_recap_contract.py \ | |
| skills/recap/tests/test_recap_output_contract.py \ | |
| skills/language-learning/tests/test_language_learning_contract.py \ | |
| skills/light-kanban-worker/tests/test_light_kanban_worker_contract.py \ | |
| skills/light-kanban-worker/tests/test_light_kanban_worker_behavior.py \ | |
| skills/review-loop/tests/review_protocol_helpers.py \ | |
| skills/review-loop/tests/test_agent_skill_profile_contract.py \ | |
| skills/review-loop/tests/test_agent_skill_profile_behavior.py \ | |
| skills/review-loop/tests/test_generic_profile_contract.py \ | |
| skills/review-loop/tests/test_generic_profile_behavior.py \ | |
| skills/review-loop/tests/test_manuscript_profile_contract.py \ | |
| skills/review-loop/tests/test_manuscript_profile_behavior.py \ | |
| skills/review-loop/tests/test_software_profile_contract.py \ | |
| skills/review-loop/tests/test_software_profile_behavior.py \ | |
| skills/review-loop/tests/test_specification_profile_contract.py \ | |
| skills/review-loop/tests/test_specification_profile_behavior.py \ | |
| ; do | |
| python "$f" | |
| done | |
| - name: Run ask-light scanner behavior (requires pwsh) | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| if command -v pwsh >/dev/null 2>&1; then | |
| python skills/ask-light/tests/test_ask_light_behavior.py | |
| else | |
| echo "pwsh not available; ask-light behavior suite skipped (structural contract still enforced)" | |
| fi | |
| - name: Retired package boundary | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| hits=$(grep -rn --include="*" -E "project-workflow|to-manuscript-spec" skills/ || true) | |
| if [ -n "$hits" ]; then | |
| echo "Retired package references remain under skills/:" | |
| echo "$hits" | |
| exit 1 | |
| fi | |
| - name: No PowerShell test files remain | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| count=$(find . -path "*/tests/*.ps1" -not -path "./.git/*" | wc -l | tr -d " ") | |
| if [ "$count" -ne 0 ]; then | |
| echo "PowerShell test files still present: $count" | |
| find . -path "*/tests/*.ps1" -not -path "./.git/*" | |
| exit 1 | |
| fi |