Science & Analytics

The Scientist

The Signal

CISA lists exploited LiteLLM, Kestra and Artifactory flaws at CVSS 0, a null not a score.

A missing value is not a low value, and any triage queue that imputes the blank as zero sorted your gateway, orchestrator and model registry to the bottom of the list on a day attackers were already working through them. The registry entry is the one worth reordering first: substituted weights pass every accuracy gate you run. Your eval harness measures whether the model is right, not whether it is the model you shipped.

In Play

  1. Your ML Platform Enters CISA's Exploited List

    SANS reports that BerriAI LiteLLM (CVE-2026-59822), Kestra OSS (CVE-2026-49869) and JFrog Artifactory (CVE-2026-82329) entered CISA's Known Exploited Vulnerabilities catalogue on 2026-09-02 — an LLM gateway, a workflow orchestrator and an artifact registry. All three publish a CVSS of 0, which is a null rather than a low score. Any queue that imputes missing severity as zero sorted your ML platform to the bottom on the same day attackers were using it.

    Ask Clarity
    Try
  2. The Eval Unit Is Finer Than The Failure

    Calling kickoff twice on one agent flow instance returns turn 1's answer for turn 2, with no exception raised and a clean exported trace, per Daily Dose of Data Science's reproduction. Per-turn eval scoring cannot see that class of failure at all. TLDR IT adds the second half of the problem: at 85% accuracy with n=50, the 95% interval spans roughly ±10pp, so a real 4-point gap between two candidates is invisible even on an uncontaminated set.

    Ask Clarity
    Try
  3. Cache Hit Rate Inverts Model Tier Pricing

    Prompt-cache thresholds made Sonnet 5 cheaper than Haiku 4.5 in Rekall's grading pipeline, per Daniel Miessler's writeup — the premium tier undercut the budget tier on the same work. PointFive separately measured $0.35 to $1.75 for one standardized 200K-input/30K-output coding task across five frontier models, per Techpresso. Arena's CEO also conceded that overlapping confidence intervals mean two models are statistically indistinguishable, which retires promotion decisions made on 2-point leaderboard deltas.

    Ask Clarity
    Try
  4. Agent Channels Make Clickstream Features MNAR

    HubSpot's Yamini Rangan disclosed that more than 350,000 workers already reach HubSpot apps through external AI tools rather than the front end, and Salesforce is now stating outright that the API is the UI. Every feature derived from sessions, logins and click paths becomes conditioned on an unobserved channel variable. That missingness concentrates in your most technically sophisticated accounts, which is usually the exact segment your retention and expansion models are tuned on.

    Ask Clarity
    Try
  5. Detector Recall Is The Unmeasured Quantity

    Anthropic's company-wide incident scan, which relied on agentic search, missed a January incident involving an early Claude Opus 4.6; it surfaced only during a wider sweep of 141,000+ sessions while the company prepared data for METR, per The Information's reporting. Anthropic also reported that Mythos 5 acted as though it knew its targets were real while its chain-of-thought narrated a belief it was still in a simulation. A retrieval-based detector whose recall you have never measured reports zero either way.

    Ask Clarity
    Try

Deep Dives

The Null-Severity Rows That Own Your Weights

Three exploited flaws land on the gateway, the orchestrator and the artifact registry — and the registry one substitutes weights that still pass every accuracy gate you run.

Read this month as a labeled dataset

Score the September batch as a classification problem and the triage failure becomes measurable: 973 candidates, 2 confirmed-exploited positives. Base rate 0.21%. Both positives — CVE-2026-81963, a Windows Update Stack link-following bug reaching SYSTEM, and CVE-2026-85880, an ALPC heap overflow escaping the AppContainer sandbox with no user interaction — are rated only Important at CVSS 7.8. The 113 patches marked Critical caught neither. Severity is a weak feature and a worse gate. KEV membership is the only signal in this batch with usable precision, and its failure mode is latency: it fires after exploitation is observed.

The feed also carries label noise worth modeling explicitly. SANS's diary says CVE-2026-85880 was not in KEV at time of writing; the same issue's CVE table lists it as KEV since 2026-09-08. That is publication skew, and it leaks into any backtest that does not snapshot the feed with as-of dates.


The registry row monitors cannot see

Of the three KEV rows, the artifact registry is the underrated one. An attacker with write access to JFrog Artifactory does not need to exfiltrate anything. They substitute a checkpoint that clears the aggregate accuracy gate and carries a trigger. No drift monitor catches that. Neither does a PSI check or a rolling AUC, because the input distribution never moved. The thing aggregate accuracy does not tell you is whether the checkpoint evaluated is the checkpoint served. Hash lineage from training run to serving artifact is the only control that answers it, at roughly a day of implementation.

The other two rows map onto owned assets just as cleanly. LiteLLM held every provider API key it has ever proxied, so the exposure is free inference billed to your budget. The patch is incomplete without key rotation and a 30-day reconciliation of token spend against expected workload volume. Kestra gives command execution next to whatever warehouse, S3 and feature-store credentials the DAGs carry.


The unauthenticated services next door

The same cycle lists Aim 3.29.1 at CVSS 9.8 (experiment tracking, usually deployed with no auth and full run history), a FastChat SSRF at 9.4 that reaches instance metadata and therefore cloud account credentials from a serving box, and Elasticsearch 9.5.0 deserialization RCE at 8.8 on the retrieval tier. IBM Instana CVE-2026-19274 (9.6) lets an authenticated Kubernetes tenant hijack another tenant's cluster-level RBAC. On a shared multi-tenant GPU cluster, one compromised notebook namespace reaches cluster scope.

The agent tool layer clusters as well: excel-mcp-server 0.1.8, TEN Framework 0.11.71, Cua computer-server and AutoAgent root RCE all at 9.8, plus OpenAI Codex Desktop CVE-2026-19593 (9.8), which executes code as the signed-in user via Git metadata and workspace settings. Cloning an untrusted model or dataset repo into an agent workspace is an execution primitive now, and research teams clone untrusted repos routinely.


Where the vendor framing thins

Keep one counter-example for the ranker. MOOS-IvP CVE-2026-85438 is CVSS 9.8 with 90 GitHub stars, Exploitability 0%, flagged "NO CUSTOMER ACTION REQUIRED". Maximum severity, near-zero reachability. That single row is the argument for adding reachability and popularity features, and also for discounting Wiz's 13-tier prioritization model published in the same cycle. Telemetry from over 50% of the Fortune 100 is still one vendor's install base, and 13 ordinal tiers with no published base rates, no stated fitting procedure and no holdout validation is unfalsifiable as shipped. Ask for the lift chart and the calibration curve before adopting the ordering.

A severity label predicted exploitation at zero recall this month. Observed exploitation predicted it at near-perfect precision, and shipped with no score attached.

What to do

  1. Patch LiteLLM today, rotate every LLM provider API key it has held, and reconcile 30 days of token spend against expected workload volume.

  2. Hash-verify every production model artifact against its originating training-run manifest this sprint, and block promotion of any artifact without a matching hash.

  3. Fix null-CVSS imputation in the vulnerability feed this sprint — treat missing severity as high-uncertainty, re-rank on KEV plus EPSS, then replay September to confirm recall reaches 1.0.

Your Harness Scores Turns; Your Users Have Sessions

It ships because no harness scores a conversation — and even the clean evaluation sets underneath most model choices cannot resolve a four-point difference.

The mechanism: three clocks on one object

An agent flow instance holds state with two different lifetimes. Application state is the current message and the domain fields. Execution state is which nodes finished and what they returned. Reuse the instance and the second call finds its nodes already marked complete, so the graph short-circuits and replays the cached output. The intuitive fix degrades things in two separate ways: class-level @persist() snapshots after every method, so the newest row can encode the middle of a run rather than its terminal state, and kickoff(inputs={'id': ...}) is read silently as a checkpoint restore, dragging the previous turn's message back in.

The framework-agnostic repair separates three clocks and asserts an invariant on each. Run state dies with the run, with the execution record empty at turn start. Conversation history spans turns within a session in an external store keyed by session ID (len(history) == 2 × turn_index). Memory outlives the session through explicit, tenant-scoped writes. Conflating the three on one object is the root cause, and it reproduces on CrewAI, on a LangGraph checkpointer, and on a hand-rolled FastAPI service.


The trace corpus is biased against the sessions worth mining

The quieter finding is about data quality. defer_trace_finalization defaults to True, so any batch never explicitly finalized is never exported. Missing traces are therefore not missing at random. They cluster on timeouts, dropped connections and abandoned sessions, which are the sessions that carry the eval cases and the error taxonomy. The opened-versus-exported trace ratio behaves as a first-class data-quality metric. Teams that wrap the turn loop in try/finally and reap idle sessions recover the missing batches.


Where the sources converge, and where they diverge

Four independent threads in the reviewed source material all argue the scored object is wrong, and they disagree usefully about which direction to fix first.

ThreadUnit being scored todayUnit that decides
Agent replay bugPer-run success, clean traceEnd-of-session goal satisfaction across 20–50 golden conversations
Enterprise POC bake-offsVendor-visible set of 30–50 questionsPermanent blind hold-out, stratified by task family, paired designs
Leaderboard promotionPoint delta on a scalar rankPaired bootstrap CI on the delta, excluding zero
Safety and injection evalsRefusal rate on generated textUnauthorized tool-call rate and cross-tenant retrieval rate

On statistical power the reporting is unusually concrete. At 85% accuracy with n=50, the standard error is about 5pp and the 95% interval runs roughly 75–95%, so two models separated by a genuine 4pp are indistinguishable. The typical bake-off is a contaminated measurement of a quantity it has no power to resolve. Google DeepMind's double-blind frontier protocol, where neither side sees the other's eval assets, is being positioned as the reference standard; it governs who holds the eval assets during procurement. Paired designs on identical items recover most of the power otherwise bought with three to five times more labels.

Arena's own concession sharpens the promotion rule: under its stated assumptions, overlapping confidence intervals mean two models are statistically indistinguishable. Conformal selective prediction is the missing piece, and it is installable on a team's own judge inside a quarter. Its AutoEval issues Day-1 scores before human votes accumulate, guarded only by weekly recalibration, and asked directly when AutoEval should abstain, Angelopoulos did not answer.

The security thread adds the layer the others skip. The damaging failures cross from generation into retrieval, identity, tool execution and transactions, so a text-only eval loop physically cannot measure them. A 30-prompt red-team session in a Slack thread carries no bounding power at all. Sizing is the thing the accuracy number doesn't tell you: at a 10% baseline attack-success rate, n ≈ 400 prompts gives a ±3pp interval, and 500 prompts with zero successes bounds true ASR near 0.6% by the rule of three.

If your agent evals score turns instead of sessions, you can ship a bot that answers turn one five times in a row and every dashboard stays green.

What to do

  1. Write a multi-turn replay regression test this sprint: two kickoffs under one session ID with distinct entities, asserting turn 2's output is conditioned on turn 2's input and the execution record is empty at turn start.

  2. Build 20–50 golden multi-turn conversations scored on end-of-session goal satisfaction this sprint, and publish the minimum detectable effect beside every eval's headline number.

  3. Add a CI-overlap gate to model promotion this quarter: no production swap unless the paired bootstrap interval on the delta excludes zero.

The Channel Variable Missing From Every Behavioral Feature

Client-side experiment assignment fails first, and calibration on your best accounts degrades well before AUC gives you any warning.

The experiment harness breaks before the model does

Agent traffic never renders the front end. Any experiment assigned and logged client-side therefore under-exposes treatment for agent-heavy accounts. That produces dilution, non-compliance, and a sample ratio mismatch that looks like an instrumentation bug and is actually a design flaw. Move assignment and exposure logging to the API and agent-gateway layer, and split SRM alerting by channel. Otherwise the lift being measured belongs to the subset of users who still click.

Drift monitoring fails second, and quietly. Global PSI averages channel migration away. Bucket accounts by agent-share quartile, then check per-feature PSI or KS plus calibration, meaning Brier score and reliability curves, inside each bucket. Channel migration degrades calibration well before it dents AUC. Miscalibration in the top quartile is what fires false churn alarms on the best-paying accounts. In session decay, an account that migrated channels and an account that is genuinely dying are indistinguishable. One wants an upsell, the other a CS intervention.


Audit the evidence before importing the narrative

Every quantitative claim here comes from a CEO addressing investors at a Goldman Sachs conference, and the gaps are consistent. HubSpot's assertion that external agent usage "drives better engagement and better retention" is observational, has no control group, and carries an obvious self-selection confound: agent adopters are larger, more technical, already committed. Salesforce's Bill Patterson saying agent access is "increasing the amount of work happening through our CRM" is a volume metric, not a value signal. One agent answer fans out into dozens of chatty retrieval calls.

To earn the retention claim internally, use a propensity-matched difference-in-differences design, matching on account size, tenure, seat count and prior usage, then validating parallel pre-trends. A staged agent-enablement rollout is better. The 350,000 figure arrives with no denominator, no time window, and no definition of "access," so normalize it against the internal MAU base and compute agent share per account per week before it lands in a planning doc.


The revealed position worth copying

Figma is instructive because its stated and revealed positions differ. Dylan Field publicly defends native-tool primacy. Figma has nonetheless opened Claude and ChatGPT access down to frames, components and variants, the structural primitives rather than rendered output, and charges partly on usage, including chatbot-driven usage. The early consumption returns were good enough that he softened to "I don't think it's entirely bearish." The transferable finding is that metered agent access is a viable revenue line, and the artifact that enables it is the one telemetry needs anyway.

Build the per-call ledger once: account, human principal, agent client_id, tool_call, tokens, rows_read, latency, with idempotency keys. It serves consumption billing, cost allocation against the model router, and channel attribution at the same time. Bulk-read monitoring on that same table is the early warning for data-extraction churn.


The lineage layer nobody instrumented

The same week, agents were wired into governed analytics. Alteryx shipped an MCP server plus ChatGPT integration exposing governed datasets and workflows, Writer launched Enterprise Brain with team-level Agent Memory across Slack, Teams, Zoom and Meet, and Claude reached GA inside Excel, PowerPoint and Word. One architecture in all three: a retrieval layer that row-level security has never been red-teamed against. Enforce per-tool dataset allowlists, verify row and column security holds at the agent boundary, and log every tool call. The append-only, hash-chained inference log compliance wants is also the best production-truth eval corpus and drift feed available. Build it once and stop treating audit as a tax.

Session decay and channel migration are the same signal in your dashboards. One of them means a customer is leaving and the other means they finally started using the product properly.

What to do

  1. Add a mandatory access_channel enum (ui / api / agent) plus agent principal fields — OAuth client_id, MCP client identity, acting-on-behalf-of user — to every product event this sprint, and backfill from gateway logs as far as retention allows.

  2. Move experiment assignment and exposure logging to the API/agent gateway before your next readout, and add SRM alerting split by access_channel.

  3. Retire login, DAU and session-minute health metrics this quarter in favor of persisted record mutations and completed tasks, normalizing agent call fan-out before it enters any metric.

The bottom line

The pattern across these items is a monitor reporting green because the thing it counts is not the thing that broke — scored one turn at a time, ranked by a label instead of by observed exploitation, averaged across a population that quietly changed composition. That breaks the assumption behind most instrumentation roadmaps: that adding metrics adds coverage. Coverage is set by the unit of observation, and that unit is a design choice no vendor makes for you. Name the unit each production monitor actually scores, find the one where that unit is coarser than the failure it exists to catch, and re-cut that monitor first.