Dash0 acquires Polar Signals

Last updated: September 16, 2026

Key Concepts

The data model and terminology behind AI SDLC Insights in Dash0.

AI SDLC Insights reads two streams together: the OpenTelemetry telemetry your coding harnesses emit, and the pull request lifecycle from your version control provider. Understanding how those map onto the concepts below makes the tabs easier to read and the numbers easier to trust.

How the Data Flows

Claude Code emits token usage and model calls over OpenTelemetry on its own. That base stream is enough to populate cost and adoption. The Dash0 agent plugin adds the rest: session-level enrichment, tool calls, skills, and full conversation replay. It is the recommended path because it records the complete set of spans and attributes the views below rely on, rather than only what a harness reports on its own. Every session becomes a set of spans covering:

  • Tool calls: Every tool the harness invokes, with its duration and any errors.
  • LLM invocations: The model calls behind each response, including token usage and the model identity used to compute cost.
  • Errors: Failures the harness encounters, including failed tool calls.

Dash0 ingests these spans through the standard OTLP endpoint, stores them natively, and the AI SDLC Insights page queries them. To populate everything that involves a pull request, Dash0 joins these sessions with pull request events from the GitHub integration. Because the data is plain OpenTelemetry, you can also explore it directly in Tracing and Metrics.

What Requires the GitHub Integration

Harness telemetry alone answers what you spend and who is using AI coding. Every metric that counts, times, or classifies a pull request needs the GitHub integration as well:

  • Cycle time, time to merge, and time to first review
  • Flow through the pipeline, and the jam it reports
  • PRs assisted, share of assisted PRs, AI penetration, and cost per merged assisted PR
  • Assisted vs non-assisted cycle time
  • Review depth per merge, AI review agents, and human reviews
  • Investment distribution and time to merge by PR type

Until GitHub is connected, those read as empty or zero. See Set Up AI SDLC Insights.

Dash0 links a session to a pull request by repository and branch name. A session that never reported a branch is not counted against any pull request.

Dash0 counts only the pull requests it observed, and never backfills from your Git provider. A repository connected today has no history before that day, so these counts do not match the numbers your provider reports for the same period.

Filtering

Every tab shares one filter bar: Harness, Model, Team, and Repository, each set to All by default. The filters apply to the whole page, so a metric that counts pull requests is narrowed to the pull requests a matching coding session worked on. Selecting a harness, model, or team therefore turns a whole-organization number into an AI-assisted one.

Two exceptions do not follow the header:

  • Weekly vs monthly users uses fixed 7-day and 28-day windows regardless of the selected time range.
  • Trend lines under a headline number are measured over their own window. See the entries for Cycle time and Time to merge.

Headline metrics that expose a percentile offer p50, p75, and p90.

Terminology

The terminology used throughout AI SDLC Insights, in alphabetical order.

Active user

A developer whose coding harness emitted telemetry within the selected time range.

AI penetration

The share of merged pull requests with at least one AI coding session on the branch. It measures reach, not quality: a pull request counts whether the agent wrote most of it or a single line.

AI review agent

An automation that reviews pull requests, such as a review bot posting inline comments. The Productivity tab counts their comments, reviews, and the share of those comments that were resolved. An AI review agent is not a harness and does not produce sessions; it acts on pull requests, not in a developer's editor. Reviews by an automation never count as human review in review depth per merge.

Activity

The kind of work a session did, such as planning, refactoring, reviewing, or debugging. Activity comes from the evaluation Dash0 runs over sampled sessions, not from a span attribute your harness emits. Do not confuse it with effort, which is a model setting, or with PR type, which classifies pull requests rather than sessions.

Assisted vs non-assisted cycle time

A comparison of cycle time across three groups at the selected percentile: all pull requests, those an AI coding agent assisted, and those it did not.

Cost

The spend attributed to model usage, aggregated by session, user, model, and team. Cost is computed from token usage, not subscription billing, using a Dash0-maintained pricing catalog that applies API-equivalent pay-as-you-go rates to the reported token counts.

Tip

This distinction matters because many developers use subscription plans where the provider's billing dashboard shows usage as zero or heavily subsidized, hiding the actual consumption. Dash0 calculates what those same tokens would cost at public API rates, giving you visibility into the real cost of AI assistance even when your subscription absorbs it today. This view becomes critical as providers move away from unlimited subscriptions toward usage-based billing, because the costs Dash0 shows now are what will really be paid later.

For developers on pay-as-you-go plans, the cost matches their provider bill. For flat-rate or subsidized subscriptions, it is the estimated cost at market rates. Models the catalog cannot resolve land in an explicit unpriced bucket rather than counting as zero.

Cost per merged assisted PR

Total spend in the selected range divided by the number of merged pull requests an AI coding agent assisted. It is the unit-economic headline: what one shipped, agent-assisted change cost in tokens.

Cycle time

The time from a branch's first commit to the merge, or from the pull request being opened where no earlier commit is on record, at the percentile picked in the header. The start is the commit's author date where Dash0 recorded one, so a rebase before the pull request opened does not shorten it.

Cycle time covers merges from every developer. Selecting a harness, model, or team narrows it to the pull requests a coding agent worked on. The headline number covers the selected time range. Each point on the line beneath it is measured over the pull requests merged in the week ending there, so the earliest points read a week of merges from before the selected range.

Cycle time and time to merge are different measurements. Cycle time starts at the first commit; time to merge starts when the pull request is created.

Derived Metrics

Aggregated time-series counters and histograms that Dash0 computes from spans, such as dash0.gen_ai.tokens.input and dash0.gen_ai.conversations. Use these to query token consumption over time and build dashboards. See Derived Metrics for the complete reference.

Effort

The reasoning level requested of the model, reported as low, medium, high, or xhigh. Effort is a model setting, carried on the span as gen_ai.request.reasoning.level, and the Cost tab can break spend down by it.

Note

Only Claude Code reports an effort level. Sessions from Cursor, OpenAI Codex, and GitHub Copilot CLI carry no effort value, so an organization running only those harnesses sees nothing in the Effort breakdown.

Evaluation

An assessment Dash0 runs over sampled sessions to label the activity each one worked on. A session can carry more than one evaluation, for example planning and reviewing. Evaluations appear as a column on the Sessions list and as a field in the session detail panel.

Evaluations are computed by Dash0, not emitted by your harness, and they run over a sample rather than every session. Metrics built on them are labelled as covering sampled sessions. See Share of sampled sessions.

Flow through the pipeline

A visualization of how merged pull requests move through four stages: coding, awaiting review, in review, and awaiting merge. Each stage reports the time pull requests spend in it at the selected percentile, and the stage with the longest wait is marked as the worst jam.

Awaiting review, for example, measures from ready for review to the first thing that unblocked the pull request: a review by someone other than the author, or an approval by anyone, an automated reviewer's included.

Harness

The coding tool that produces sessions: Claude Code, Cursor, OpenAI Codex, or GitHub Copilot CLI. The harness is carried on the span as gen_ai.harness.name and is available as a filter on every tab.

Harness is not the only thing called an agent in this product. A subagent is an agent a session spawns inside itself, and an AI review agent is an automation that reviews pull requests. The three are distinct.

Model

The underlying language model that produced a response, for example claude-opus-4-8 or gpt-5.3-codex. A single session can use more than one model. Read per-model cost against cycle time to express throughput per dollar, the unit-economic answer to which model is worth the spend.

PR type

The classification Dash0 assigns to a pull request: dependency update, feature, bug fix, refactor, chore, internal tooling, documentation, test only, performance, or unclassified. PR types drive investment distribution, time to merge by PR type, and the coloring in flow through the pipeline.

PR type classifies pull requests. Activity classifies sessions. The two vocabularies overlap in wording and are not interchangeable.

PRs assisted

Pull requests opened in the selected range whose head branch a coding-agent session worked on. Each pull request counts once, however many sessions touched it.

See How Sessions Link to Pull Requests for the matching rule and its limits.

Prompt

A single user request within a session. The number of prompts per user feeds the usage histograms on the Adoption tab.

Redaction

Removing sensitive content from telemetry so it is not stored. Dash0 supports two layers: source redaction in the plugin (omit_io, omit_user_info), which strips content before it is sent, and ingestion redaction (GenAI Attribute Redaction, a per-dataset setting), which replaces conversation content, tool-call arguments and results, or tool-call error messages with <REDACTED> before storage. See Data Privacy & Redaction.

Review depth per merge

The pull requests merged in the selected range, grouped by how much human review each one attracted. Every merged pull request in scope falls in exactly one bucket.

Neither a review by an automation nor a review the pull request's own author submitted on it counts as human review. The provider records a review whenever somebody replies inline, so an author answering a review bot would otherwise read as their own pull request's only reviewer.

  • Rubber-stamp: An approval with a substanceless body and no other substantive review. This takes precedence over the reviewer count, so a pull request several people approved without writing anything reads as a rubber stamp. It grants no exemption to a reviewer who engaged only through their own commits or an earlier review.
  • Single reviewer: One human reviewer engaged substantively.
  • Multi-reviewer: More than one human reviewer engaged substantively.
  • Auto-merged: Nobody but the author reviewed the pull request and Dash0 approved it, with an approval that still stands.
  • No review: A floor rather than an exact count. A pull request whose reviews all predate the 90-day rescan window, or whose only reviewer has since deleted their account, lands here too.

Session

One run of a coding harness, scoped to a user and usually a repository. A session has a start time, a duration, one or more models, a cost, a prompt count, any evaluations it received, and a full conversation. Sessions are the unit you drill into on the Sessions tab.

Share of assisted PRs

The share of all pull requests opened in the selected time range that an AI coding agent assisted. See PRs assisted for what counts as assisted.

Share of sampled sessions

Of the sessions the evaluation sampled, the share that worked on each activity. A session that both debugged and planned counts in both, so the bars do not add up to 100%.

Skill

An encoded workflow the harness can apply during a session. The Tools and skills tab reports skills by invocations and by the number of developers using them.

Span Attributes

Metadata tags on individual spans, such as gen_ai.request.model, user.name, or dash0.gen_ai.vcs.repository.name. Use these to filter sessions and group metrics. See Span Attributes for the complete reference.

Team

The grouping used to attribute usage to a part of your organization, carried on the span as dash0.team.name. Telemetry that carries no team attribute is grouped under unknown. See Set Up AI SDLC Insights for how to attach team attributes.

Time to merge

The time from a pull request being created to being merged, attributed to the merge date. It covers coding, review wait, in review, and merge wait.

The headline number covers the selected time range. The line beneath it follows the trend window you pick:

  • 7-day rolling: Each point is measured over the pull requests merged in the week ending there.
  • Daily: Each point is measured over that day's merges alone, so a day that merged nothing has no point.

Selecting a harness, model, or team narrows this to the pull requests a coding agent worked on. See Cycle time for the related measurement that starts at the first commit instead.

Tool call

An invocation of a tool the harness has access to, such as Bash, Read, Edit, or a tool exposed by a connected MCP server. Failed tool calls are tracked separately so you can spot broken integrations.

Weekly vs monthly users

How habitual people are with AI coding harnesses: weekly active users over the last 7 days divided by monthly active users over the last 28 days. A high number means the same people come back week after week.

Both windows are fixed and do not follow the selected time range.

Further Reading