Repository navigation
Description
Problem
Per-source steering (SignalSourceConfig.config.steering and default_not_actionable, products/signals/backend/emission/steering.py, applied in emission/pipeline.py) is the customer's way to say what matters and what to skip for a source. It only exists for sources that go through the shared emission pipeline: Support, GitHub issues, Linear, Zendesk and pganalyze (steerable: true in products/signals/frontend/inbox/components/config/agentRosterMeta.ts).
Error tracking (issue_created, issue_reopened, issue_spiking), session replay clusters and health checks emit signals directly through emit_signal and skip the actionability gate entirely, so there is nothing for the customer to steer and no place for a rule like "ignore issues whose events all come from local development hosts".
When a customer asks how to stop a class of error-tracking reports, the only answers today are turning the source type off or building a custom scout. Neither is a good answer to "I just want you to ignore localhost".
Fixes
- Route direct emitters through an actionability gate that honours steering. Either move error tracking, replay and health checks onto the emission pipeline with a per-source
actionability_prompt, or add a lightweight gate insideemit_signal(products/signals/backend/facade/api.py) that reads the source'sSignalSourceConfig, appliesapply_steering, and drops the signal when the gate says NOT_ACTIONABLE. The second is smaller and keeps the emitters unchanged. - Give the gate something to read. The steering text needs record metadata to act on;
include_record_metadata=steering.activein the pipeline already passesextra. Error tracking should put host and dev-host facts intoextra(tracked in fix(error-tracking): signals omit the event origin, so dev-host noise becomes duplicate reports and PRs #90178) so "skip localhost" is expressible. - Mark the sources steerable in
agentRosterMeta.tsso the existingSourceSteeringModalopens for them. No new UI. - Telemetry parity. Emit the same
signal_data_source_filteredstage event withsteering_appliedso filtered error-tracking signals are visible in the pipeline funnel. - Tests: steering text that excludes a described pattern drops the signal; empty steering leaves behaviour unchanged;
default_not_actionableon error tracking keeps only clearly actionable issues.
Why
Steering is already built, documented and in the UI; it is just not wired to the sources that generate most reports. Extending it closes the gap where the honest support answer is "write a custom scout".
From this Slack thread; the investigation is written up in the self-driving-debugging skill in the skills store.
Activity
feat(signals): honor source steering for error tracking and health ch…