Cross-pipeline structural analysis: shared images, unreachable steps, orphaned files #5

Closed
opened 2026-08-01 15:42:22 +03:00 by oleks · 1 comment
Owner

SPEC.md roadmap item 4. Once JSON output is stable and consumed by more
than one caller, build analysis on top of it:

  • Duplicate/shared step images across projects (candidate base-image
    consolidation).
  • Unreachable steps — named in nobody's depends_on but also never
    default-run.
  • Orphaned .woodpecker/*.yaml files nothing references.

Depends on #1 and #4 (rollup mode and the health layer both exercise/stress
the JSON shape first, per the v0.3 milestone plan).

Source: SPEC.md.

Acceptance criteria

  • a report (subcommand or flag, consistent with #4's choice) lists step images used by 2+ projects
  • the same report flags steps that appear in no pipeline's execution path (never default-run, never named in a depends_on)
  • orphaned .woodpecker/*.yaml detection defined and implemented (what makes a file "orphaned" needs a precise definition — e.g. not reachable from any tag/event that could plausibly fire it)
  • verified against ~/projects with at least one confirmed true positive per category
SPEC.md roadmap item 4. Once JSON output is stable and consumed by more than one caller, build analysis on top of it: - Duplicate/shared step images across projects (candidate base-image consolidation). - Unreachable steps — named in nobody's `depends_on` but also never default-run. - Orphaned `.woodpecker/*.yaml` files nothing references. Depends on #1 and #4 (rollup mode and the health layer both exercise/stress the JSON shape first, per the v0.3 milestone plan). Source: [SPEC.md](https://git.oleks.space/oleks/pipetree/src/branch/main/SPEC.md#roadmap). ## Acceptance criteria - [ ] a report (subcommand or flag, consistent with #4's choice) lists step images used by 2+ projects - [ ] the same report flags steps that appear in no pipeline's execution path (never default-run, never named in a `depends_on`) - [ ] orphaned `.woodpecker/*.yaml` detection defined and implemented (what makes a file "orphaned" needs a precise definition — e.g. not reachable from any tag/event that could plausibly fire it) - [ ] verified against `~/projects` with at least one confirmed true positive per category
oleks added this to the v0.3 — CI health milestone 2026-08-01 15:42:22 +03:00
oleks added the enhancement label 2026-08-01 15:42:22 +03:00
oleks added a new dependency 2026-08-01 16:03:48 +03:00
oleks closed this issue 2026-08-01 17:04:03 +03:00
Author
Owner

Resolved by 2f13297 (v0.3 batch push), with a course-correction: the originally planned "unreachable steps" check was dropped after reading Woodpecker's actual DAG compiler source proved it describes something that can't happen (caught via a live false positive against builder-arbitrage before shipping). Replaced with two source-verified depends_on checks (step-level = hard compile error, pipeline-level = silently dropped workflow). Also found+fixed a real parser bug along the way: depends_on's {name, optional} mapping form was silently parsed as empty strings (forrest/notify.yaml). Fleet currently shows 0 broken depends_on (clean, not untested - the shared-images check alone confirmed 15 true positives). See SPEC.md for full detail.

Resolved by 2f13297 (v0.3 batch push), with a course-correction: the originally planned "unreachable steps" check was dropped after reading Woodpecker's actual DAG compiler source proved it describes something that can't happen (caught via a live false positive against builder-arbitrage before shipping). Replaced with two source-verified depends_on checks (step-level = hard compile error, pipeline-level = silently dropped workflow). Also found+fixed a real parser bug along the way: depends_on's {name, optional} mapping form was silently parsed as empty strings (forrest/notify.yaml). Fleet currently shows 0 broken depends_on (clean, not untested - the shared-images check alone confirmed 15 true positives). See SPEC.md for full detail.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: oleks/pipetree#5