pipetree lint: cross-check parser against woodpecker-cli lint #6

Open
opened 2026-08-01 15:42:31 +03:00 by oleks · 0 comments
Owner

SPEC.md roadmap item 5.

woodpecker-cli lint <file> (system-installed, v3.16.0, matches
ci.oleks.space) validates a file against Woodpecker's actual
schema/parser with no server round-trip — a ground-truth oracle for
pipetree's own parser. This is exactly the kind of check that would have
caught the sequence-vs-map steps: bug (see commit 4b5b336) before a
human had to notice zero steps in the tool's own pipeline.

Two parts:

  • pipetree lint: shell out to woodpecker-cli lint per discovered file,
    merge syntax-validity results into the tree/JSON alongside structure.
  • Wire the same comparison into this repo's own CI as a regression check:
    for every fixture/example .woodpecker.yaml, assert pipetree's parsed
    step count matches what woodpecker-cli lint implies (or, if lint gains
    a machine-readable structure dump, diff against that directly).

Source: SPEC.md.

Acceptance criteria

  • pipetree lint (or -lint flag) shells out to woodpecker-cli lint per discovered file and surfaces pass/fail per file
  • a CI step in this repo's own .woodpecker.yaml cross-checks pipetree's step counts against woodpecker-cli lint for a set of fixture files (reuse the woodpecker mirror's test-fixture corpus noted in #2 as ready-made adversarial inputs)
  • graceful behavior when woodpecker-cli isn't installed (skip with a clear message, don't hard-fail the whole scan)
  • documented in README/SPEC.md
SPEC.md roadmap item 5. `woodpecker-cli lint <file>` (system-installed, v3.16.0, matches `ci.oleks.space`) validates a file against Woodpecker's actual schema/parser with no server round-trip — a ground-truth oracle for pipetree's own parser. This is exactly the kind of check that would have caught the sequence-vs-map `steps:` bug (see commit `4b5b336`) before a human had to notice zero steps in the tool's own pipeline. Two parts: - `pipetree lint`: shell out to `woodpecker-cli lint` per discovered file, merge syntax-validity results into the tree/JSON alongside structure. - Wire the same comparison into this repo's own CI as a regression check: for every fixture/example `.woodpecker.yaml`, assert pipetree's parsed step count matches what `woodpecker-cli lint` implies (or, if lint gains a machine-readable structure dump, diff against that directly). Source: [SPEC.md](https://git.oleks.space/oleks/pipetree/src/branch/main/SPEC.md#roadmap). ## Acceptance criteria - [ ] `pipetree lint` (or `-lint` flag) shells out to `woodpecker-cli lint` per discovered file and surfaces pass/fail per file - [ ] a CI step in this repo's own `.woodpecker.yaml` cross-checks pipetree's step counts against `woodpecker-cli lint` for a set of fixture files (reuse the woodpecker mirror's test-fixture corpus noted in #2 as ready-made adversarial inputs) - [ ] graceful behavior when `woodpecker-cli` isn't installed (skip with a clear message, don't hard-fail the whole scan) - [ ] documented in README/SPEC.md
oleks added this to the v0.4 — Lint integration & MCP milestone 2026-08-01 15:42:31 +03:00
oleks added the enhancement label 2026-08-01 15:42:31 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: oleks/pipetree#6