Validation: Woodpecker pipeline missing timestamps for DORA metrics
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-assistantEnvironment
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 removedtests/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_pipelinesandget_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.