Commit Graph
8350 Commits
Author SHA1 Message Date
Loakesh Indiran bcc37562a0 feat(oncall): stage 2c, on-call sends through the shared send path
The on-call engine reaches notify() through a registered sender slot. Pages,
escalations, manual escalates and handoffs are Firing with the response id
as the platform key; coverage gap, verdict and test pages are
Informational, so platforms skip them. Email and SNS destinations now get
pages (D9), and a generic webhook keeps today's page JSON (D1). Nothing is
sent on acknowledge or resolve (strict D8, D4). oncall_policies gains a
template column (m20261210_000001) with validation and replication, and a
startup line names the policies whose email or SNS destinations now get
pages.
2026-11-03 14:24:05 +05:30
Loakesh Indiran b24f9e4425 Merge remote-tracking branch 'origin/main' into feat/unified-notification-templates 2026-11-03 14:11:06 +05:30
Loakesh Indiran 4bdea24558 fix(synthetics): stage 2a fix, private location down skips platforms
A location down is sent as Informational with no platform key, so
PagerDuty, Opsgenie and ServiceNow skip it with a logged reason (strict
D8). Every other destination gets the location card, and a generic webhook
keeps today's text body.
2026-11-03 14:10:56 +05:30
Loakesh Indiran 89718515b8 fix(alerts): stage 1 fix, strict D8 and review pass 1
D8 is strict: a platform resolve goes out only where a module sends a
recovery today. Incident and on-call Resolved are now a platform skip, and
the incident resolve hook, resolve_platform_destinations and its guard are
removed. Incidents keep the keyed trigger.

Review pass 1: incidents pass "[{event}] {title}" as the subject again,
and the subject rule is a pure function with a matrix test. Alerts set
cluster_name. The rename migration exempts only the exact seeded names, so
a root user's o2_default_foo in the default org is renamed. PlatformNoAck
is removed. The resolve answer mapping and the default_templates miss cache
have tests. A non-alert destination returns Ok(false) from the anomaly
sender again, as before this branch.
2026-11-03 14:10:56 +05:30
Loakesh Indiran a7f587569d feat(synthetics): stage 2a and 2b, synthetics and downtimes through the shared send path
Synthetics checks gain a template column (m20261201_000001) with save
validation and replication. CheckNotification carries the template and the
event, filled from the alerting decision: firing for failed and error,
resolved for recovered, informational for degraded, flaky and certificate
notices. Each run sends through notify() with the compiled synthetics card,
today's subject line as its title and the error in a code fence. A generic
webhook keeps today's {"text"} body. Platforms get a trigger keyed by the
check id and one protocol resolve on the recovered branch; notices skip
platforms. Private location down sends through the same path keyed by the
location id; nothing is sent when it returns.

Downtimes send through notify(): the seeded prebuilt_downtime pair is the
compiled default per transport, any user template applies, and platform
destinations are skipped with the skip named in the result. The D3 sniff,
the private renderer, build_email_html, build_plain_text and
dispatch_notification are deleted. The cooldown, mute and claim rules are
unchanged.
2026-11-03 13:50:30 +05:30
Loakesh Indiran 2353c0c336 fix(llm-eval): reuse a saved provider key only for its saved endpoint (#16310) 2026-11-03 08:07:37 +00:00
Huaijin a185ab1e13 chore: fill default search Query fields with ..Default::default() (#16314) 2026-11-03 08:01:44 +00:00
Loakesh Indiran 3efed2f2ce Merge remote-tracking branch 'origin/main' into feat/unified-notification-templates 2026-11-03 13:31:16 +05:30
Loakesh Indiran a10868b44a feat(incidents): stage 1d, incidents through the shared send path
Every incident send carries kind incident, event firing and the incident
id as the platform key. The template order is default_templates.incident,
then the alert's template, then the destination template, so an incident
override that does not fit a destination's transport falls through. Merged
destinations and external subjects use the incident template too.

When update_status_as resolves an incident, each PagerDuty, Opsgenie or
ServiceNow destination in the incident's destination merge gets one
protocol resolve, once, with errors logged and never retried (D8). No other
destination receives a message (D4). A second resolve of an incident that
is already resolved sends nothing. send_templated_to_destination had no
caller left and is deleted.
2026-11-03 13:30:55 +05:30
Loakesh Indiran fed1dc18f4 feat(anomaly): stage 1c, anomaly alerts through the shared send path
The anomaly sender calls notify(). An anomaly renders the compiled anomaly
card, or the config's template override, and now reaches email and SNS
destinations (D9). A generic webhook keeps today's JSON until a user
template applies or payload_format says rendered (D1). PagerDuty, Opsgenie
and ServiceNow get a trigger keyed by the anomaly id; the gated recovery
sends them one protocol resolve and sends the resolved card elsewhere (D8).
The scheduler's cooldown, budget, cursor hold and recovery gate are
unchanged.
2026-11-03 13:14:18 +05:30
Vamsi Karthik R 289a52ea20 fix(logs): keep field-value filters on the exact field name (#16304) 2026-11-03 07:43:25 +00:00
Loakesh Indiran f7436e1472 fix(synthetics): offer only AWS when adding a location (#16308) 2026-11-03 07:30:54 +00:00
Loakesh Indiran bb33fd44ab feat(alerts): stage 1b, templates know their kinds
Templates gain applies_to, stored in its own column. Saving checks the
values and refuses a narrowing that drops a kind an anomaly config, an
alert or the org default still binds. The o2_default_ prefix is reserved;
a migration renames user rows with a reserved name to user_{name} and the
alerts that named them follow.

The default_templates org key is settable through settings v2 and checks
each name. The template list filters by applies_to and type, GET shows
used_by, and delete refuses a template that is still used. Preview and test
send take a kind and return variables_for(kind). anomaly_detection_config
gains a template column.
2026-11-03 12:51:03 +05:30
Vamsi Karthik R e561cfcad9 test(oncall): run the on-call suites for real in enterprise CI (#15987) 2026-11-03 06:54:41 +00:00
Loakesh Indiran c6a3aabb37 feat(alerts): stage 1a, shared notification send path
Add NotificationKind, NotificationEvent and the platform rule table.
The notification context carries the kind, the event, the cluster name
and an optional legacy payload. Template precedence takes ordered level 1
candidates, the D2 reserved rule and the transport rule. The
default_templates org key is written at org creation and by the startup
backfill.

notify() resolves the destination and the template, applies the platform
rule (D8), the Jira rule and the legacy rule (D1), sends once and writes
one log line. It never retries and never records. The alert render and
send function moved to notifications/send.rs; the alert loop and the new
kinds both call it, and alert output is unchanged.

A ServiceNow resolve that finds no open record now returns success.
Preview and test send accept a kind.
2026-11-03 12:19:56 +05:30
Huaijin b36c61ebd1 feat(profiles): support user-defined schema for profiles streams (#16237) 2026-11-03 06:43:36 +00:00
Shrinath Rao 476bbfb39c fix: reject a negative toolset list limit and publish satisfiable scorer schemas (#16301) 2026-11-03 06:35:00 +00:00
Harsh Mahajan 2e11c091a1 fix(ai-review): review every new commit, keep one comment, grade P0-P3 (#16100) 2026-11-03 06:25:51 +00:00
Abhay Padamani aee74c52c8 fix(recent-searches): distinct toolbar icon, Logs button size, refetch a stale stream list on restore (#16223) 2026-11-03 06:22:35 +00:00
Harsh Mahajan da6d472031 fix(ai-review): let the server price review LLM spans from token counts (#16197) 2026-11-03 06:12:34 +00:00
Huaijin 7fe726b73f fix: tell Prometheus remote write senders how much was written (#16214) 2026-11-03 06:06:35 +00:00
Shrinath Rao 2c7a161917 fix(metrics): search says "No metrics match" though matches with data exist (#16290) 2026-11-03 05:44:42 +00:00
Shrinath Rao e6a65bfa95 fix(authz): test overlong role users against the 512-byte OpenFGA limit (#16291) 2026-11-03 05:01:42 +00:00
uddhavdave 0bea83c325 fix(ci): push translation commits with a GitHub App token (#16255) 2026-11-03 04:44:58 +00:00
Manul PatelandManul 2287444a15 fix(db): propagate file_list registration errors to prevent silent da… (#15968)
Co-authored-by: Manul <manulpatel@users.noreply.github.com>
2026-11-03 04:35:08 +00:00
Huaijin cb10cb7f20 fix: do not acknowledge Firehose and Pub/Sub requests that stored nothing (#16253) 2026-11-03 04:15:31 +00:00
uddhavdaveandgithub-actions[bot] bc1e8d92b8 fix: withhold tokens and credentials from readers in fleet, destinations, synthetics and AI (#16044)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-11-03 02:44:28 +00:00
Harsh Mahajan 61cef336d3 fix(openapi): publish public API routes and guard spec coverage (#16280) 2026-11-02 22:59:27 +00:00
Harsh Mahajan 5511ba9d21 ci(telemetry): let the server price CI LLM spans from token counts (#16258) 2026-11-02 22:09:00 +00:00
Harsh Mahajan 04f6d0b8a9 fix(ci): cut wasted CI work and start enterprise checks on ready-for-ci (#16195) 2026-11-02 21:40:13 +00:00
Shrinath Rao fe9723950c test(fleet): API, RBAC, UI and real-collector coverage for fleet management (#16189) 2026-11-02 17:31:58 +00:00
ktx-vaidehiandgithub-actions[bot] e7d618de91 feat(dashboards): Chart | Data switch on panels, View panel and the panel editor (#16059)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-11-02 17:20:34 +00:00
Huaijin 820aa48c3c fix(streams): treat profiles as user data; original-data toggle only on logs (#16249) 2026-11-02 14:51:07 +00:00
Shrinath Rao b0780de250 fix: return clean errors from roles and groups APIs (#16205) 2026-11-02 14:47:39 +00:00
Neha Pandgithub-actions[bot] 97dd743693 fix(workflows): scope draft update and delete to the org (#16215)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-11-02 14:25:30 +00:00
Sai Nikhil 81f872310e ci(ui): shard the UI unit tests into 4 jobs and merge coverage (#16241) 2026-11-02 14:22:45 +00:00
Mina KaramandClaude Opus 5.5 4e58fb78ca fix(mcp): use the npm package in the skills install command (#16117)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:34:11 +00:00
Loakesh Indiran 0849e20e8a chore(agents): require streaming search endpoints in the UI and drop MySQL from the schema rules (#16260) 2026-11-02 13:27:30 +00:00
ktx-akshayandAbhay Padamani 4326bc220d fix(dashboards): show one No Data state on an empty logs panel (#16227)
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
2026-11-02 13:05:48 +00:00
uddhavdave 29cfe58986 fix(llm-eval): org-scope provider lookups; check experiment dataset, prompt and provider reads (#16174) 2026-11-02 12:50:01 +00:00
Sai Nikhil b0544e2280 fix(profiles): wire the frame menu in Compare (#16239) 2026-11-02 12:41:58 +00:00
Hengfei Yang 61cc2175a2 fix(search): match substrings that overlap a partial match in ContainsAutomaton (#16250) 2026-11-02 12:39:43 +00:00
Omkar Kesarkhaneandgithub-actions[bot] 305e0c2fc1 fix(alerts): faster alert library cards and a first-run path to the library (#16087)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-11-02 12:38:25 +00:00
Huaijin 11c0cb0a9b feat(profiles): build tantivy index for profiles streams (#16238) 2026-11-02 12:34:57 +00:00
ktx-vaidehi abe6b6290c fix(dashboards): range warning text, dashed comparison series, View Panel variables (#16013) (#16232) 2026-11-02 12:34:52 +00:00
Neha P 1b9f0764c5 fix(rum): keep Performance sub-tab links on their tab (#16212) 2026-11-02 12:32:48 +00:00
Ashish Kolheandgithub-actions[bot] 52bbd1634e fix(ui): name the right permission and surface every RBAC denial (#16204)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-11-02 12:18:56 +00:00
Shrinath RaoandAshish Kolhe b42ff72f2e chore: document PromQL 400/403/429 responses (#16224)
Co-authored-by: Ashish Kolhe <35160958+oasisk@users.noreply.github.com>
2026-11-02 11:52:29 +00:00
Huaijin 46a85bb9cc fix: skip compactor jobs for streams whose key cannot be stored (#16231) 2026-11-02 11:43:42 +00:00
Hengfei Yang 07ae6fc163 chore: say fleet tokens get 401 when fleet is disabled (#16243) 2026-11-02 11:42:36 +00:00