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
- 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).
- swamp workflow search logs Skipping broken extension workflow for the file.
- 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).
Related
- 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.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.