Bug: Woodpecker smoke-test fails with empty logs on pal-e-docs deploy

bug-woodpecker-smoke-test-empty-logs Todo

bug resolved

Problem

Woodpecker CI pipelines on pal-e-docs showed all steps failing with empty logs. Assumed to be the Woodpecker K8s backend log streaming bug (#4409 upstream).

Root Cause

Three independent bugs, NOT a K8s backend issue:
  • ruff format violationtests/test_blocks_compiled_pages.py had unformatted multi-arg constructors. ruff format --check exits 1, blocking all downstream steps.
  • --index-url vs --extra-index-url — smoke-test used --index-url for Forgejo PyPI, which replaced public PyPI entirely. Transitive deps (httpx, pydantic) unreachable → ResolutionImpossible.
  • Stale SDK v0.2.0 — published SDK had sprints module, not boards. Smoke test called list_boards() which didn't exist → 404 caught as connection error.
The "empty logs" were caused by aggressive pod garbage collection in the K8s backend, not by a log streaming bug. Logs were captured by streaming in real-time with kubectl logs -f before pod cleanup.

Fix

  • Commit 9fe5106: ruff format fix (test step now passes)
  • Commit b5032ba: --extra-index-url fix (SDK installs from both Forgejo + public PyPI)
  • Commit 385ecd6: replaced SDK smoke test with inline health check (no version skew dependency)
Pipeline 209: first fully green pipeline. 5/5 steps SUCCESS.
  • plan-pal-e-docs — parent plan
  • phase-pal-e-docs-ci-infra — CI/Infra Hardening phase
  • todo-fix-mcp-pypi-publish — SDK needs republish with boards module