Review: Woodpecker pipeline missing timestamps for DORA metrics

review-1296-2026-07-26 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Board item #1296 — Forgejo issue ldraney/landscaping-assistant#57. Type: Feature. Points: 2.

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Standalone, related to #43 (observability parent)
  • [x] Repo — ldraney/landscaping-assistant
  • [x] User Story — present (developer wants timestamps for DORA metrics)
  • [x] Context — present (null timestamps in Woodpecker API response)
  • [x] File Targets — present (but inaccurate, see below)
  • [ ] Feature Flag — MISSING. Section required by template-issue-feature. Infra work should specify "none" with rationale.
  • [x] Acceptance Criteria — 3 items
  • [x] Test Expectations — 2 items
  • [x] Constraints — present
  • [x] Checklist — present
  • [x] Related — present

Traceability

  • [ ] story:observability label — NO entry in project-landscaping-assistant user-stories section. [SCOPE] Create user story entry "observability" on project-landscaping-assistant user-stories section.
  • [ ] story:dora label — NO entry in project-landscaping-assistant user-stories section. [SCOPE] Create user story entry "dora" on project-landscaping-assistant user-stories section.
  • [x] arch:ci-pipeline label — arch-ci-pipeline note exists in pal-e-docs (covers shared Woodpecker pipeline pattern)
  • [x] Forgejo issue — ldraney/landscaping-assistant#57, state: open

File Targets

  • [ ] .woodpecker.yml — ISSUE: Wrong extension. Actual file is .woodpecker.yaml. Additionally, pipeline YAML defines steps, not API response fields — timestamp population is a Woodpecker server behavior, unlikely fixable via pipeline config.
  • [ ] "Woodpecker server config" — ISSUE: Too vague. No concrete file path or repo specified. If this refers to Woodpecker Helm values or deployment config, it likely lives in pal-e-platform (terraform/kustomize), not in landscaping-assistant.

Repo Placement

Issue filed on ldraney/landscaping-assistant, but the fix may require Woodpecker server-side changes (upgrade, config) which live in pal-e-platform. The .woodpecker.yaml in this repo defines pipeline steps, not server API behavior. If the root cause is a Woodpecker server version issue, the fix touches pal-e-platform, not this repo. The issue should clarify which repo(s) are affected, or acknowledge that the repo placement depends on root cause analysis.

Dependencies

No blocking dependencies found on board-landscaping-assistant. Parent issue #43 (Observability & DORA metrics stack) is open but does not block this work. No items currently in in_progress or next_up are related to DORA/observability/pipeline timestamps.

Acceptance Criteria

3 AC items, all testable via Woodpecker MCP tools (list_pipelines, get_pipeline_status). The test expectations correctly reference these tools. AC is reasonable and verifiable. Note: AC #3 ("DORA deployment frequency derivable from push-to-main pipeline history") is somewhat vague — "derivable" is not a binary pass/fail condition. Consider tightening to something like "pipeline history includes timestamps sufficient to calculate deploy count per time period."

Blast Radius

If the fix involves a Woodpecker server upgrade or config change, it affects ALL repos using Woodpecker CI across the platform, not just landscaping-assistant. The arch-ci-pipeline note documents the shared pipeline pattern used by basketball-api, pal-e-docs, westside-contracts, and other services. A server-side change should be validated against multiple repos. Existing DORA doc at docs/dora/pipeline-timing.md was built from manual log scraping — this ticket would enable programmatic collection.

Decomposition Assessment

2 file targets (one incorrect), 3 acceptance criteria, 2 story points. Fits in a single agent pass. No decomposition needed.

Recommendation

  • [BODY] Fix file extension: .woodpecker.yml.woodpecker.yaml
  • [BODY] Add Feature Flag section with value "none" and rationale "CI/infra investigation, no user-visible behavior"
  • [BODY] Replace vague "Woodpecker server config" with concrete path or repo reference. If unknown, state: "Root cause TBD — may require changes in pal-e-platform (Woodpecker Helm values / deployment config)"
  • [BODY] Tighten AC #3 from "derivable" to a testable condition
  • [SCOPE] Create user story entry "observability" on project-landscaping-assistant user-stories section
  • [SCOPE] Create user story entry "dora" on project-landscaping-assistant user-stories section