pipetree's own .woodpecker.yaml double-runs on every PR push (WP001) #17

Closed
opened 2026-08-13 18:24:17 +03:00 by issuer-agent · 2 comments
Collaborator

Why: ~/projects/pipetree/.woodpecker.yaml line 1-2:

when:
  - event: [push, pull_request]

This is the WP001 defect the repo's own linter now detects: every step runs TWICE, identically, on any push to a branch with an open PR. Doubles CI cost and doubles flaky-step exposure for zero added coverage. Confirmed by running the tool on its own repo.

IMPORTANT for whoever fixes it — do NOT blindly narrow the push trigger. That is the class-1 fix that CAUSED the class-2 founding case (oleks/oracle-adb-backend#136). Run pipetree lint -online -C ~/projects/pipetree first: WP010 will state whether ci/woodpecker/push/woodpecker is currently required by branch protection on this repo. Only narrow if it is not.

Also note: once the emmett cutover (oleks/emmett#380/#120) lands, this repo's own pushes would be blocked by its own linter until fixed.

Acceptance:

  • Run pipetree lint -online -C ~/projects/pipetree and check WP010's verdict on whether ci/woodpecker/push/woodpecker is a required status context
  • If not required, scope the push trigger (e.g. branch: [main]) to eliminate the double-run; if required, choose a fix that doesn't break the required context (see oleks/oracle-adb-backend#136 for the failure mode to avoid)
  • pipetree lint reports clean against its own repo's .woodpecker.yaml

Links: oleks/oracle-adb-backend#136, oleks/emmett#380, oleks/pipetree e9989b5

Surfaced while implementing the Woodpecker CI linter in oleks/pipetree (specs/001-woodpecker-ci-linter).

**Why**: `~/projects/pipetree/.woodpecker.yaml` line 1-2: ``` when: - event: [push, pull_request] ``` This is the WP001 defect the repo's own linter now detects: every step runs TWICE, identically, on any push to a branch with an open PR. Doubles CI cost and doubles flaky-step exposure for zero added coverage. Confirmed by running the tool on its own repo. IMPORTANT for whoever fixes it — do NOT blindly narrow the push trigger. That is the class-1 fix that CAUSED the class-2 founding case (oleks/oracle-adb-backend#136). Run `pipetree lint -online -C ~/projects/pipetree` first: WP010 will state whether `ci/woodpecker/push/woodpecker` is currently required by branch protection on this repo. Only narrow if it is not. Also note: once the emmett cutover (oleks/emmett#380/#120) lands, this repo's own pushes would be blocked by its own linter until fixed. **Acceptance**: - [ ] Run `pipetree lint -online -C ~/projects/pipetree` and check WP010's verdict on whether `ci/woodpecker/push/woodpecker` is a required status context - [ ] If not required, scope the push trigger (e.g. `branch: [main]`) to eliminate the double-run; if required, choose a fix that doesn't break the required context (see oleks/oracle-adb-backend#136 for the failure mode to avoid) - [ ] `pipetree lint` reports clean against its own repo's `.woodpecker.yaml` **Links**: oleks/oracle-adb-backend#136, oleks/emmett#380, oleks/pipetree e9989b5 Surfaced while implementing the Woodpecker CI linter in oleks/pipetree (specs/001-woodpecker-ci-linter).
oleks added the agent/wip label 2026-08-13 18:27:40 +03:00
oleks added this to the pipetree-board project 2026-08-13 18:27:42 +03:00
Owner

Fixed in 114c0bc.

.woodpecker.yaml now reads:

when:
  - event: push
    branch: [main]
  - event: pull_request

Checked branch protection first, which is the half of WP001's
remediation that exists precisely so this fix does not become
oleks/oracle-adb-backend#136 again:

  • pipetree lint -online -C ."ci/woodpecker/push/woodpecker is NOT
    currently required by any branch protection rule on this repo, so
    narrowing the push trigger does not strand a required check today."
  • Independent branch_protection_read on oleks/pipetree[]. No
    protection rules exist at all, so there is no required context to
    strand.

Two of them agreeing matters here: the first is this tool reporting on
itself, and a tool that only checked its own answer would be exactly the
kind of self-confirming evidence the class-2 rules exist to replace.

Verified after the change: pipetree lint .woodpecker.yaml exits 0 (the
WP001 finding is gone; one WP022 warning remains, non-blocking — the go build step has no path: scoping, which is a separate judgement call I
have not made here), and woodpecker-cli lint still reports the config
valid. The pre-push hook's own WPR check also passed on the new file.

Note for the record: this defect sat here unnoticed because the retired
xonsh check structurally could not see the event: [push, pull_request]
shape — the same blind spot as oleks/pipetree#15. The new linter found it
on its own repo the first time it was pointed at it.

Fixed in `114c0bc`. `.woodpecker.yaml` now reads: ```yaml when: - event: push branch: [main] - event: pull_request ``` **Checked branch protection first**, which is the half of WP001's remediation that exists precisely so this fix does not become oleks/oracle-adb-backend#136 again: - `pipetree lint -online -C .` → *"`ci/woodpecker/push/woodpecker` is NOT currently required by any branch protection rule on this repo, so narrowing the push trigger does not strand a required check today."* - Independent `branch_protection_read` on `oleks/pipetree` → `[]`. No protection rules exist at all, so there is no required context to strand. Two of them agreeing matters here: the first is this tool reporting on itself, and a tool that only checked its own answer would be exactly the kind of self-confirming evidence the class-2 rules exist to replace. Verified after the change: `pipetree lint .woodpecker.yaml` exits 0 (the WP001 finding is gone; one WP022 warning remains, non-blocking — the `go build` step has no `path:` scoping, which is a separate judgement call I have not made here), and `woodpecker-cli lint` still reports the config valid. The pre-push hook's own WPR check also passed on the new file. Note for the record: this defect sat here unnoticed because the *retired* xonsh check structurally could not see the `event: [push, pull_request]` shape — the same blind spot as oleks/pipetree#15. The new linter found it on its own repo the first time it was pointed at it.
oleks closed this issue 2026-08-13 18:29:37 +03:00
oleks added spent time 3 minutes 2026-08-13 18:29:45 +03:00
Owner

⏱ worked | 13-08-26 | session oleks/3b3844a4 | +3min | session-total 3min (lane-release) | elapsed from timeline

⏱ worked | 13-08-26 | session oleks/3b3844a4 | +3min | session-total 3min (lane-release) | elapsed from timeline
oleks added agent/worked:oleks/3b3844a4agent/worked:oleks/3b3844a4:3min and removed agent/wip labels 2026-08-13 18:29:46 +03:00
Sign in to join this conversation.