TODO: Fix pal-e-docs-mcp PyPI publish pipeline failure

todo-fix-mcp-pypi-publish Todo

todo done

Problem

The publish step in forgejo_admin/pal-e-docs-mcp Woodpecker pipeline fails on every push to main. Clone and lint pass. Publish exits with code 1.

What We Know

  • Clone fix (PR #15) works — internal Forgejo URL resolves from pipeline pods
  • Lint step passes
  • PyPI URL was changed from from_secret to hardcoded internal URL in PR #17
  • Internal Forgejo PyPI endpoint responds correctly (405 on GET, allows POST) — verified via curl from cluster
  • Package version is 0.1.0 — never changes between builds
  • Woodpecker log streaming is broken (empty newlines) — cannot read actual error output

What We Don't Know

  • The actual error message from twine — logs are empty due to Woodpecker 3.13.0 log streaming bug
  • Could be: DNS resolution failure in the publish container (different from clone container)
  • Could be: version conflict (0.1.0 already published, twine rejects duplicate)
  • Could be: auth failure (secrets not injected properly after URL change)
  • Could be: something else entirely

Impact

Low — pal-e-docs-mcp runs locally from source via uv run. The published PyPI package is not consumed by anything in production. But the pipeline should work.

To Investigate

  • Fix Woodpecker log streaming so we can actually read errors (may require Woodpecker DB cleanup or version upgrade)
  • Or: add set -x / verbose output to the publish commands to force output to stdout before the log stream
  • Or: run a test pod in the woodpecker namespace that exactly replicates the publish step (python:3.12-slim, pip install build twine, build, upload)
  • Check if version 0.1.0 is already in the Forgejo PyPI registry
  • Consider adding auto-version-bump (e.g. using git SHA or date) to avoid conflicts
  • todo-woodpecker-tls-clone-fix — same TLS root cause, clone portion fixed
  • Forgejo issues: pal-e-docs-mcp #14 (clone fix, merged), #16 (PyPI URL fix, merged)