Validation: Woodpecker pipeline missing timestamps for DORA metrics

validation-57-2026-07-26 Doc

validation pass

Verdict: PASS

Ticket

ldraney/landscaping-assistant#57 — Expose pipeline start/finish timestamps via Woodpecker MCP so DORA deployment frequency and lead time metrics can be calculated.
Merged PR: ldraney/woodpecker-mcp#8 (commit 56c9123)
Board item: #1296 on board-landscaping-assistant

Environment

Woodpecker MCP server (local MCP tool), restarted after merge to load committed code from commit 56c9123. Validated by querying MCP tools list_pipelines, get_pipeline_status, and get_pipeline_failure_rate against ldraney/landscaping-assistant pipelines.

Tiers Executed

Tier 1 (local code review) + 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>list_pipelines(repo_full_name="ldraney/landscaping-assistant", branch="main")</code> PASS Pipeline #898: created_at=2026-07-27T05:18:37Z, started_at=2026-07-27T05:18:38Z, finished_at=2026-07-27T05:24:24Z. All 3 pipelines returned have non-null timestamps.
2 Pipeline duration calculable from API data <code>get_pipeline_status(repo="ldraney/landscaping-assistant", number=898)</code> PASS duration_seconds=346. Step-level durations also present: clone(8s), database(337s), bundle-install(23s), lint(6s), test(53s), build-and-push(261s).
3 DORA deployment frequency derivable from push-to-main pipeline history <code>list_pipelines</code> with <code>branch=main</code> filter PASS All pipelines include created_at timestamps. Can filter by event=push, branch=main to count deployments over time.
4 <code>list_pipelines</code> timestamps non-null Direct MCP tool call — checked 3 pipelines PASS Pipelines #898, #897, #895 all return non-null created_at, started_at, finished_at, duration_seconds.
5 <code>get_pipeline_status</code> step-level timing <code>get_pipeline_status(number=898)</code> PASS 6 steps with started_at, finished_at, and duration_seconds each. Example: test step started_at=05:19:10, finished_at=05:20:03, duration_seconds=53.
6 <code>get_pipeline_failure_rate</code> DORA tool works with timestamps <code>get_pipeline_failure_rate(repo="ldraney/landscaping-assistant")</code> PASS Returns 30-day stats: 233 total, 195 success, 38 failure (16.31% CFR). All 10 recent_failures include created_at, started_at, finished_at timestamps.

Regression Check

All existing MCP functionality verified intact:
  • list_pipelines — returns correct pipeline data (status, event, branch, message, author) plus new timestamp fields
  • get_pipeline_status — returns step-level status and exit codes plus new timestamp/duration fields
  • get_pipeline_failure_rate — DORA module working correctly, returns failure rate with timestamp data
No regressions detected.

Prior Attempts

This ticket required three validation attempts:
  • Attempt 1 (PARTIAL): MCP server had not been restarted after merge — old code still serving null timestamps.
  • Attempt 2 (FAIL): Working tree had staged changes reverting PR #8 and deleting dora.py module.
  • Attempt 3 (PASS): Working tree cleaned, MCP server restarted with committed code. All timestamps confirmed working.

Discovered Issues

None. All acceptance criteria satisfied.