Blackhole (Fallback) Analyzer
Name (URL slug): blackhole
A generic, content-type-agnostic analyzer. It doesn’t parse any particular format — it exists so that auto-routing never dead-ends with “no analyzer found.” When neither a diff file’s path (file_globs) nor a pasted blob’s content (sniff()) is claimed by any dedicated analyzer, auto-routing sends the content here instead of silently skipping it.
How it works
Section titled “How it works”Matching
Section titled “Matching”Unlike every other analyzer, this one is never a candidate in normal file_globs glob-matching or sniff() confidence scoring — file_globs is empty and sniff() stays at BaseAnalyzer’s opt-out default (0.0). It’s reached exclusively through content_router.py’s explicit fallback branches, after every real analyzer has already had a chance to claim the content and none did.
A Detection routed here has fallback: true, so callers (the dashboard, a GitHub PR job record) can tell “the safety net caught this” apart from “a real analyzer matched.”
Ingestion
Section titled “Ingestion”ingest() treats the entire input as a single opaque unit — there’s no format-specific structure to split on. name is taken from the first non-blank line (falls back to (blob) for all-whitespace input); type and action are both "unknown".
There is no domain-specific rule library behind this analyzer (rules/generic.md). It instructs the LLM to:
- Look only for issues a careful human reviewer would catch regardless of format — hardcoded secrets, destructive operations stated in plain language, wide-open access control, obvious syntax breakage.
- Never invent format-specific best practices for content it can’t confirm the type of.
- Cap
confidenceatMEDIUM— this analyzer has no ground truth for what “correct” looks like here. - Return a single
INFOfinding recommending a dedicated analyzer be built, when nothing else qualifies.
Disabling it
Section titled “Disabling it”An org that would rather fail loudly than receive a best-effort result can disable blackhole the same way as any other analyzer (the existing per-org installed-analyzer toggle). With it disabled, auto-routing reverts to the plain “no analyzer available” skip behavior it had before this analyzer existed.
Building a real analyzer instead
Section titled “Building a real analyzer instead”This analyzer is intentionally limited. If you’re seeing it show up regularly for a particular content type, that’s the signal to build a dedicated analyzer for it — see Adding an Analyzer.