Validation: Woodpecker pipeline missing timestamps for DORA metrics

validation-la-57-2026-07-26 Doc

validation fail

Verdict: FAIL

Ticket

ldraney/landscaping-assistant#57 -- Woodpecker pipeline timestamps (started_at, finished_at, created_at) returning null in MCP tool responses, blocking DORA metric calculation. Fixed via woodpecker-mcp PR #8.
Board item: #1296 on board-landscaping-assistant

Environment

Woodpecker CI server v3.13.0. Woodpecker MCP server running locally from source at /home/ldraney/woodpecker-mcp. Validated against live pipelines on ldraney/landscaping-assistant (pipelines #887, #888).

Tiers Executed

Tier 1 (local code review + tests) and Tier 3 (prod MCP tool queries). Per skill-validate-ticket for arch:ci-pipeline / API repo type.

Checks

# Criterion How Verified Result Evidence
1 <code>started_at</code> and <code>finished_at</code> populated in API responses <code>get_pipeline_status(repo=ldraney/landscaping-assistant, number=887)</code> FAIL <code>created_at: null, started_at: null, finished_at: null</code>
2 Pipeline duration calculable from API data <code>get_pipeline_status</code> -- checked for <code>duration_seconds</code> FAIL No <code>duration_seconds</code> field returned; no step-level timestamps
3 DORA deployment frequency calculable from pipeline history <code>list_pipelines(repo=ldraney/landscaping-assistant, branch=main)</code> FAIL All 5 pipelines returned <code>created_at: null</code>; no <code>started_at</code>/<code>finished_at</code>
4 <code>list_pipelines</code> timestamps non-null <code>list_pipelines</code> FAIL All timestamps null across 5 pipelines
5 <code>get_pipeline_status</code> step-level timing <code>get_pipeline_status(number=887)</code> FAIL Steps: name/status/exit_code only -- no timestamps or duration
6 Merge commit contains the fix (Tier 1 code review) <code>git show HEAD:src/woodpecker_mcp/tools/pipelines.py</code> PASS Commit <code>56c9123</code> adds <code>_unix_to_iso()</code>, reads v3 fields (<code>created</code>, <code>started</code>, <code>finished</code>), adds step timestamps and <code>duration_seconds</code>
7 Unit tests pass (Tier 1) <code>python -m pytest tests/ -v</code> FAIL <code>ModuleNotFoundError: No module named 'woodpecker_mcp'</code> -- package not installed; 6 collection errors

Root Cause of Validation Failure

The merge commit (56c9123) correctly fixes the timestamp issue. However, the working tree at /home/ldraney/woodpecker-mcp has staged uncommitted changes that completely revert the fix:
  • pipelines.py: _unix_to_iso() helper removed; field names reverted from v3 (created, started, finished) back to broken v1 names (created_at, started_at, finished_at)
  • dora.py: Entire module staged for deletion
  • __init__.py: dora module import removed
  • tests/test_dora.py: Staged for deletion
The running MCP server loads from the working tree, so it executes the reverted (broken) code despite the fix being committed at HEAD.

Regression Check

Basic MCP functionality unaffected: get_version (v3.13.0), list_repos (49 repos), list_pipelines (non-timestamp data correct), get_pipeline_status (non-timestamp data correct). The get_pipeline_failure_rate DORA tool is NOT available in the running server due to the staged deletion of dora.py.

Remediation Required

  • Investigate and remove the staged changes reverting PR #8 in /home/ldraney/woodpecker-mcp
  • Install the package in editable mode (pip install -e .) to enable test execution
  • Run the test suite to confirm all 17 tests pass
  • Restart the MCP server process to load the committed code
  • Re-validate timestamps via list_pipelines and get_pipeline_status

Discovered Issues

Staged uncommitted changes in the woodpecker-mcp working tree completely revert PR #8. Origin unknown -- likely from a prior incomplete refactoring or accidental staging. The dora.py module and its tests are staged for deletion, which would also remove the get_pipeline_failure_rate tool.