Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneeshammz

Relationships

#2942 swamp doctor workflows misses nested and .yml extension workflows that the loader reads

Opened by hammz · 10/2/2026· Shipped 10/2/2026

Summary

doctorWorkflows() in src/libswamp/workflows/doctor.ts lists each workflow directory flat with Deno.readDir and only matches names ending in .yaml. ExtensionWorkflowRepository in src/infrastructure/persistence/extension_workflow_repository.ts walks each directory recursively and matches both .yaml and .yml. So doctor never checks extension workflows that the loader does load or try to load:

  • workflows in subdirectories of the extension workflows dir, a source dir, or a pulled-extension dir (for example namespace-debug/workflow.yaml, a layout the push resolver supports)
  • workflows saved with a .yml extension (loader support added in #2215)

A broken workflow in either place is skipped by the loader with a warning but reported as healthy by doctor workflows, so the CI gate passes.

Reproduction

  1. In an initialized repo, create extensions/workflows/nested/broken.yml containing a workflow with jobs whose construction fails (for example a step with an invalid task type).
  2. swamp workflow search logs Skipping broken extension workflow for the file.
  3. swamp doctor workflows does not list the file and exits 0.

Expected

doctor workflows checks the same set of files the extension workflow loader reads: recursive walk, .yaml and .yml, using the same skip rules (manifest files and YAML without a top-level jobs key, per swamp-club#2940).

  • swamp-club#2940: doctor and the extension scanner treat non-workflow YAML as workflows. Found while planning that fix and kept out of its scope.
02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 9 MOREREVIEW+ 16 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/2/2026, 4:26:31 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
hammz assigned hammz10/2/2026, 1:34:52 PM

Sign in to post a ripple.