GitHub
08/09/2026, 7:23 AMPluginExecutionError when a full-stream selection rule names a literal stream that is absent from the discovered catalog. Stream-only rules retain their established equivalence to stream.*.
Exact property selections remain warning-only, while wildcard/glob and negated stream patterns remain non-fatal. Custom catalogs and runtime select_filter rules are unchanged. The discovered catalog is preserved when validation fails.
Added focused regression coverage for both fatal forms and representative property, glob, and negated non-fatal cases.
Validation completed:
• uv run --frozen python -m pytest tests/meltano/core/plugin/singer/test_tap.py tests/meltano/core/plugin/singer/test_catalog.py -q (107 passed, 1 xfailed)
• nox -t lint
• Independent read-only review: APPROVE, no correctness blockers
• Final diff reviewed by the author
Checklist
• I have read the contribution guide
Was generative AI tooling used to co-author this PR?
• Yes (Codex)
Generated-by: Codex following the agentic coding guidelines
Related Issues
• Closes #6147
Summary by Sourcery
Enforce validation of explicit stream selection rules against the discovered Singer catalog and raise a plugin execution error when a required stream is missing.
New Features:
• Add validation that full-stream selection rules referencing literal stream names must match streams present in the discovered Singer catalog.
Enhancements:
• Refactor select metadata rule construction to reuse parsed selection patterns in both catalog utilities and Singer tap catalog rule application.
Tests:
• Add regression tests covering fatal errors for missing explicit streams and non-fatal behavior for property, wildcard, and negated selection patterns.
meltano/meltano