Skip to content

feat(llmobs): remote evaluation devserver POC#16665

Closed
alexbarksdale wants to merge 4 commits intomainfrom
alex.barksdale/remote-eval-poc
Closed

feat(llmobs): remote evaluation devserver POC#16665
alexbarksdale wants to merge 4 commits intomainfrom
alex.barksdale/remote-eval-poc

Conversation

@alexbarksdale
Copy link
Member

Summary

  • Adds a lightweight HTTP devserver (_devserver.py) that exposes registered Experiment objects via /list and /eval endpoints, enabling remote/UI-driven experiment execution with NDJSON streaming support
  • Extends Experiment with remote_config (typed config fields for UI rendering), progress_callback / on_start hooks, and span event capture for real-time progress reporting
  • Adds LLMObs.devserver() class method and LLMObs.async_experiment() / LLMObs.experiment() accept a new remote_config parameter
  • Includes a runnable example (_examples/devserver_example.py) demonstrating the full flow

Test plan

  • Run the devserver example end-to-end: DD_API_KEY=... DD_APP_KEY=... DD_SITE=... python -m ddtrace.llmobs._examples.devserver_example
  • Verify /list returns experiment metadata and config schema
  • Verify /eval with stream: false returns JSON results
  • Verify /eval with stream: true returns NDJSON progress events
  • Verify config_override and evaluators filtering work correctly
  • Verify CORS headers are set properly

🤖 Generated with Claude Code

alexbarksdale and others added 3 commits February 25, 2026 15:29
…o Experiment

- Add ConfigFieldType and ConfigField types for typed devserver UI config schema
- Add remote_config parameter to Experiment, SyncExperiment, and LLMObs factory methods
- Add _user_tags to preserve user-provided tags before auto-tag injection
- Add ProgressEvent, ProgressCallbackType, and OnStartCallbackType
- Add span_event to TaskResult for full span data after task completion
- Thread progress_callback and on_start through run(), _run_task(), _process_record()
- Add _emit_post_eval_progress() for evaluation-complete and success events
- Add LLMObs.devserver() classmethod

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
HTTP devserver that exposes registered experiments for remote execution.
Supports NDJSON streaming (/eval with stream=true), config overrides,
evaluator selection, sample sizing, and CORS.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Capital-city experiment demonstrating async task, evaluators,
remote_config with typed fields, and devserver startup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alexbarksdale alexbarksdale added the changelog/no-changelog A changelog entry is not required for this PR. label Feb 25, 2026
@cit-pr-commenter-54b7da
Copy link

Codeowners resolved as

ddtrace/llmobs/_examples/devserver_example.py                           @DataDog/ml-observability
ddtrace/llmobs/_experiment.py                                           @DataDog/ml-observability

@pr-commenter
Copy link

pr-commenter bot commented Feb 25, 2026

Performance SLOs

Comparing candidate alex.barksdale/remote-eval-poc (7dd9e2e) with baseline main (b43e1e7)

📈 Performance Regressions (2 suites)
📈 iastaspects - 117/117

✅ add_aspect

Time: ✅ 103.170µs (SLO: <130.000µs 📉 -20.6%) vs baseline: +2.8%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.6%


✅ add_inplace_aspect

Time: ✅ 101.662µs (SLO: <130.000µs 📉 -21.8%) vs baseline: +1.0%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ add_inplace_noaspect

Time: ✅ 28.245µs (SLO: <40.000µs 📉 -29.4%) vs baseline: ~same

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ add_noaspect

Time: ✅ 48.727µs (SLO: <70.000µs 📉 -30.4%) vs baseline: -0.2%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +5.1%


✅ bytearray_aspect

Time: ✅ 249.650µs (SLO: <400.000µs 📉 -37.6%) vs baseline: +0.1%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ bytearray_extend_aspect

Time: ✅ 640.150µs (SLO: <800.000µs 📉 -20.0%) vs baseline: +1.7%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ bytearray_extend_noaspect

Time: ✅ 264.116µs (SLO: <400.000µs 📉 -34.0%) vs baseline: +0.6%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ bytearray_noaspect

Time: ✅ 136.804µs (SLO: <300.000µs 📉 -54.4%) vs baseline: +1.0%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ bytes_aspect

Time: ✅ 217.774µs (SLO: <300.000µs 📉 -27.4%) vs baseline: -0.5%

Memory: ✅ 43.057MB (SLO: <46.000MB -6.4%)


✅ bytes_noaspect

Time: ✅ 132.680µs (SLO: <200.000µs 📉 -33.7%) vs baseline: -0.3%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ bytesio_aspect

Time: ✅ 3.782ms (SLO: <5.000ms 📉 -24.4%) vs baseline: +0.4%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.8%


✅ bytesio_noaspect

Time: ✅ 314.274µs (SLO: <420.000µs 📉 -25.2%) vs baseline: -1.1%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ capitalize_aspect

Time: ✅ 88.873µs (SLO: <300.000µs 📉 -70.4%) vs baseline: -0.7%

Memory: ✅ 43.018MB (SLO: <46.000MB -6.5%) vs baseline: +5.1%


✅ capitalize_noaspect

Time: ✅ 253.713µs (SLO: <300.000µs 📉 -15.4%) vs baseline: +0.8%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +4.8%


✅ casefold_aspect

Time: ✅ 93.271µs (SLO: <500.000µs 📉 -81.3%) vs baseline: +5.1%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.6%


✅ casefold_noaspect

Time: ✅ 306.845µs (SLO: <500.000µs 📉 -38.6%) vs baseline: +0.6%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ decode_aspect

Time: ✅ 86.893µs (SLO: <100.000µs 📉 -13.1%) vs baseline: ~same

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ decode_noaspect

Time: ✅ 152.279µs (SLO: <210.000µs 📉 -27.5%) vs baseline: -0.1%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.6%


✅ encode_aspect

Time: ✅ 84.031µs (SLO: <200.000µs 📉 -58.0%) vs baseline: -0.3%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ encode_noaspect

Time: ✅ 138.772µs (SLO: <200.000µs 📉 -30.6%) vs baseline: -1.3%


✅ format_aspect

Time: ✅ 14.717ms (SLO: <19.200ms 📉 -23.4%) vs baseline: +0.7%

Memory: ✅ 43.037MB (SLO: <46.000MB -6.4%) vs baseline: +4.9%


✅ format_map_aspect

Time: ✅ 16.460ms (SLO: <21.500ms 📉 -23.4%) vs baseline: -0.3%

Memory: ✅ 43.018MB (SLO: <46.000MB -6.5%) vs baseline: +4.8%


✅ format_map_noaspect

Time: ✅ 372.053µs (SLO: <500.000µs 📉 -25.6%) vs baseline: +1.0%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ format_noaspect

Time: ✅ 301.658µs (SLO: <500.000µs 📉 -39.7%) vs baseline: -0.3%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ index_aspect

Time: ✅ 120.482µs (SLO: <300.000µs 📉 -59.8%) vs baseline: -0.6%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


✅ index_noaspect

Time: ✅ 40.360µs (SLO: <300.000µs 📉 -86.5%) vs baseline: ~same

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +5.0%


✅ join_aspect

Time: ✅ 209.702µs (SLO: <300.000µs 📉 -30.1%) vs baseline: ~same

Memory: ✅ 43.136MB (SLO: <46.000MB -6.2%) vs baseline: +5.4%


✅ join_noaspect

Time: ✅ 144.409µs (SLO: <300.000µs 📉 -51.9%) vs baseline: +1.2%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ ljust_aspect

Time: ✅ 499.746µs (SLO: <700.000µs 📉 -28.6%) vs baseline: ~same

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +5.0%


✅ ljust_noaspect

Time: ✅ 261.026µs (SLO: <300.000µs 📉 -13.0%) vs baseline: ~same

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ lower_aspect

Time: ✅ 294.926µs (SLO: <500.000µs 📉 -41.0%) vs baseline: -0.2%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ lower_noaspect

Time: ✅ 233.521µs (SLO: <300.000µs 📉 -22.2%) vs baseline: -1.4%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ lstrip_aspect

Time: ✅ 0.274ms (SLO: <3.000ms 📉 -90.9%) vs baseline: +1.1%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ lstrip_noaspect

Time: ✅ 0.212ms (SLO: <3.000ms 📉 -92.9%) vs baseline: 📈 +20.0%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +5.0%


✅ modulo_aspect

Time: ✅ 14.496ms (SLO: <18.750ms 📉 -22.7%) vs baseline: +1.6%

Memory: ✅ 43.057MB (SLO: <46.000MB -6.4%) vs baseline: +4.7%


✅ modulo_aspect_for_bytearray_bytearray

Time: ✅ 14.785ms (SLO: <19.350ms 📉 -23.6%) vs baseline: +0.2%

Memory: ✅ 43.057MB (SLO: <46.000MB -6.4%) vs baseline: +4.6%


✅ modulo_aspect_for_bytes

Time: ✅ 14.334ms (SLO: <18.900ms 📉 -24.2%) vs baseline: -0.9%

Memory: ✅ 43.096MB (SLO: <46.000MB -6.3%) vs baseline: +5.0%


✅ modulo_aspect_for_bytes_bytearray

Time: ✅ 14.793ms (SLO: <19.150ms 📉 -22.8%) vs baseline: +0.6%

Memory: ✅ 43.018MB (SLO: <46.000MB -6.5%) vs baseline: +4.9%


✅ modulo_noaspect

Time: ✅ 0.360ms (SLO: <3.000ms 📉 -88.0%) vs baseline: ~same

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ replace_aspect

Time: ✅ 18.412ms (SLO: <24.000ms 📉 -23.3%) vs baseline: +0.2%

Memory: ✅ 43.096MB (SLO: <46.000MB -6.3%) vs baseline: +4.5%


✅ replace_noaspect

Time: ✅ 280.610µs (SLO: <300.000µs -6.5%) vs baseline: +0.1%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ repr_aspect

Time: ✅ 314.702µs (SLO: <420.000µs 📉 -25.1%) vs baseline: +0.2%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.7%


✅ repr_noaspect

Time: ✅ 46.439µs (SLO: <90.000µs 📉 -48.4%) vs baseline: -0.4%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ rstrip_aspect

Time: ✅ 384.119µs (SLO: <500.000µs 📉 -23.2%) vs baseline: +0.4%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ rstrip_noaspect

Time: ✅ 183.830µs (SLO: <300.000µs 📉 -38.7%) vs baseline: -0.5%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


✅ slice_aspect

Time: ✅ 184.773µs (SLO: <300.000µs 📉 -38.4%) vs baseline: +0.6%

Memory: ✅ 42.998MB (SLO: <46.000MB -6.5%) vs baseline: +4.9%


✅ slice_noaspect

Time: ✅ 53.813µs (SLO: <90.000µs 📉 -40.2%) vs baseline: ~same

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ stringio_aspect

Time: ✅ 3.824ms (SLO: <5.000ms 📉 -23.5%) vs baseline: +0.3%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.7%


✅ stringio_noaspect

Time: ✅ 381.756µs (SLO: <500.000µs 📉 -23.6%) vs baseline: 📈 +10.3%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


✅ strip_aspect

Time: ✅ 269.712µs (SLO: <350.000µs 📉 -22.9%) vs baseline: +0.7%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ strip_noaspect

Time: ✅ 175.761µs (SLO: <240.000µs 📉 -26.8%) vs baseline: -0.3%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ swapcase_aspect

Time: ✅ 330.482µs (SLO: <500.000µs 📉 -33.9%) vs baseline: ~same

Memory: ✅ 42.998MB (SLO: <46.000MB -6.5%) vs baseline: +5.0%


✅ swapcase_noaspect

Time: ✅ 268.646µs (SLO: <400.000µs 📉 -32.8%) vs baseline: -1.3%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.6%


✅ title_aspect

Time: ✅ 320.328µs (SLO: <500.000µs 📉 -35.9%) vs baseline: ~same

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ title_noaspect

Time: ✅ 258.227µs (SLO: <400.000µs 📉 -35.4%) vs baseline: -0.4%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ translate_aspect

Time: ✅ 491.068µs (SLO: <700.000µs 📉 -29.8%) vs baseline: +0.6%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.7%


✅ translate_noaspect

Time: ✅ 422.803µs (SLO: <500.000µs 📉 -15.4%) vs baseline: -1.6%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ upper_aspect

Time: ✅ 296.191µs (SLO: <500.000µs 📉 -40.8%) vs baseline: +0.2%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ upper_noaspect

Time: ✅ 233.634µs (SLO: <400.000µs 📉 -41.6%) vs baseline: -0.6%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +5.0%


📈 iastaspectsospath - 24/24

✅ ospathbasename_aspect

Time: ✅ 508.481µs (SLO: <700.000µs 📉 -27.4%) vs baseline: 📈 +20.1%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ ospathbasename_noaspect

Time: ✅ 430.777µs (SLO: <700.000µs 📉 -38.5%) vs baseline: -0.5%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ ospathjoin_aspect

Time: ✅ 627.479µs (SLO: <700.000µs 📉 -10.4%) vs baseline: +0.4%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%


✅ ospathjoin_noaspect

Time: ✅ 633.986µs (SLO: <700.000µs -9.4%) vs baseline: -0.2%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ ospathnormcase_aspect

Time: ✅ 348.478µs (SLO: <700.000µs 📉 -50.2%) vs baseline: -0.8%

Memory: ✅ 42.861MB (SLO: <46.000MB -6.8%) vs baseline: +4.5%


✅ ospathnormcase_noaspect

Time: ✅ 356.894µs (SLO: <700.000µs 📉 -49.0%) vs baseline: -1.6%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.7%


✅ ospathsplit_aspect

Time: ✅ 487.851µs (SLO: <700.000µs 📉 -30.3%) vs baseline: ~same

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ ospathsplit_noaspect

Time: ✅ 500.809µs (SLO: <700.000µs 📉 -28.5%) vs baseline: -0.5%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.6%


✅ ospathsplitdrive_aspect

Time: ✅ 374.616µs (SLO: <700.000µs 📉 -46.5%) vs baseline: +0.5%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


✅ ospathsplitdrive_noaspect

Time: ✅ 73.125µs (SLO: <700.000µs 📉 -89.6%) vs baseline: +0.6%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


✅ ospathsplitext_aspect

Time: ✅ 457.540µs (SLO: <700.000µs 📉 -34.6%) vs baseline: -0.3%

Memory: ✅ 42.979MB (SLO: <46.000MB -6.6%) vs baseline: +4.9%


✅ ospathsplitext_noaspect

Time: ✅ 463.594µs (SLO: <700.000µs 📉 -33.8%) vs baseline: -0.4%

Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +4.8%

🟡 Near SLO Breach (1 suite)
🟡 tracer - 6/6

✅ large

Time: ✅ 31.456ms (SLO: <32.950ms -4.5%) vs baseline: ~same

Memory: ✅ 36.687MB (SLO: <39.250MB -6.5%) vs baseline: +4.9%


✅ medium

Time: ✅ 3.106ms (SLO: <3.200ms -2.9%) vs baseline: +0.7%

Memory: ✅ 35.606MB (SLO: <38.750MB -8.1%) vs baseline: +5.3%


✅ small

Time: ✅ 363.661µs (SLO: <370.000µs 🟡 -1.7%) vs baseline: +3.9%

Memory: ✅ 35.507MB (SLO: <38.750MB -8.4%) vs baseline: +4.7%

⚠️ Unstable Tests (2 suites)
⚠️ coreapiscenario - 10/10 (1 unstable)

⚠️ context_with_data_listeners

Time: ⚠️ 13.247µs (SLO: <20.000µs 📉 -33.8%) vs baseline: -0.3%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.5%


✅ context_with_data_no_listeners

Time: ✅ 3.287µs (SLO: <10.000µs 📉 -67.1%) vs baseline: +0.1%

Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +5.0%


✅ get_item_exists

Time: ✅ 0.579µs (SLO: <10.000µs 📉 -94.2%) vs baseline: -0.9%

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +4.6%


✅ get_item_missing

Time: ✅ 0.634µs (SLO: <10.000µs 📉 -93.7%) vs baseline: -0.9%

Memory: ✅ 35.488MB (SLO: <38.000MB -6.6%) vs baseline: +4.7%


✅ set_item

Time: ✅ 24.253µs (SLO: <30.000µs 📉 -19.2%) vs baseline: +0.6%

Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +4.6%


⚠️ packagesupdateimporteddependencies - 24/24 (1 unstable)

✅ import_many

Time: ✅ 155.486µs (SLO: <170.000µs -8.5%) vs baseline: +0.7%

Memory: ✅ 40.586MB (SLO: <46.000MB 📉 -11.8%) vs baseline: +4.6%


✅ import_many_cached

Time: ✅ 120.675µs (SLO: <130.000µs -7.2%) vs baseline: +0.3%

Memory: ✅ 40.446MB (SLO: <46.000MB 📉 -12.1%) vs baseline: +5.1%


✅ import_many_stdlib

Time: ✅ 0.770ms (SLO: <1.750ms 📉 -56.0%) vs baseline: +0.1%

Memory: ✅ 40.393MB (SLO: <46.000MB 📉 -12.2%) vs baseline: +4.5%


⚠️ import_many_stdlib_cached

Time: ⚠️ 0.175ms (SLO: <1.100ms 📉 -84.1%) vs baseline: +0.3%

Memory: ✅ 40.585MB (SLO: <46.000MB 📉 -11.8%) vs baseline: +5.6%


✅ import_many_unknown

Time: ✅ 833.102µs (SLO: <890.000µs -6.4%) vs baseline: -2.3%

Memory: ✅ 40.366MB (SLO: <46.000MB 📉 -12.2%) vs baseline: +4.3%


✅ import_many_unknown_cached

Time: ✅ 791.300µs (SLO: <870.000µs -9.0%) vs baseline: -1.2%

Memory: ✅ 40.212MB (SLO: <46.000MB 📉 -12.6%) vs baseline: +4.1%


✅ import_one

Time: ✅ 19.767µs (SLO: <30.000µs 📉 -34.1%) vs baseline: ~same

Memory: ✅ 40.469MB (SLO: <46.000MB 📉 -12.0%) vs baseline: +4.7%


✅ import_one_cache

Time: ✅ 6.285µs (SLO: <10.000µs 📉 -37.1%) vs baseline: +0.2%

Memory: ✅ 40.278MB (SLO: <46.000MB 📉 -12.4%) vs baseline: +4.3%


✅ import_one_stdlib

Time: ✅ 18.916µs (SLO: <20.000µs -5.4%) vs baseline: +1.6%

Memory: ✅ 40.293MB (SLO: <46.000MB 📉 -12.4%) vs baseline: +4.7%


✅ import_one_stdlib_cache

Time: ✅ 6.261µs (SLO: <10.000µs 📉 -37.4%) vs baseline: -0.6%

Memory: ✅ 40.284MB (SLO: <46.000MB 📉 -12.4%) vs baseline: +4.5%


✅ import_one_unknown

Time: ✅ 45.598µs (SLO: <50.000µs -8.8%) vs baseline: +0.5%

Memory: ✅ 40.482MB (SLO: <46.000MB 📉 -12.0%) vs baseline: +4.5%


✅ import_one_unknown_cache

Time: ✅ 6.268µs (SLO: <10.000µs 📉 -37.3%) vs baseline: -1.4%

Memory: ✅ 40.372MB (SLO: <43.000MB -6.1%) vs baseline: +4.9%

✅ All Tests Passing (20 suites)
djangosimple - 30/30

✅ appsec

Time: ✅ 19.566ms (SLO: <22.300ms 📉 -12.3%) vs baseline: +0.5%

Memory: ✅ 67.633MB (SLO: <73.500MB -8.0%) vs baseline: +4.9%


✅ exception-replay-enabled

Time: ✅ 1.379ms (SLO: <1.450ms -4.9%) vs baseline: -0.3%

Memory: ✅ 65.765MB (SLO: <71.500MB -8.0%) vs baseline: +5.0%


✅ iast

Time: ✅ 19.562ms (SLO: <22.250ms 📉 -12.1%) vs baseline: -0.3%

Memory: ✅ 67.633MB (SLO: <75.000MB -9.8%)


✅ profiler

Time: ✅ 15.261ms (SLO: <16.550ms -7.8%) vs baseline: +0.7%

Memory: ✅ 58.785MB (SLO: <61.000MB -3.6%) vs baseline: +4.8%


✅ resource-renaming

Time: ✅ 19.566ms (SLO: <21.750ms 📉 -10.0%) vs baseline: +0.6%

Memory: ✅ 67.613MB (SLO: <73.500MB -8.0%)


✅ span-code-origin

Time: ✅ 20.248ms (SLO: <28.200ms 📉 -28.2%) vs baseline: +2.3%

Memory: ✅ 67.670MB (SLO: <75.000MB -9.8%) vs baseline: +5.0%


✅ tracer

Time: ✅ 19.446ms (SLO: <21.750ms 📉 -10.6%) vs baseline: -0.2%

Memory: ✅ 67.633MB (SLO: <75.000MB -9.8%) vs baseline: +4.9%


✅ tracer-and-profiler

Time: ✅ 21.154ms (SLO: <23.500ms -10.0%) vs baseline: +0.3%

Memory: ✅ 69.049MB (SLO: <75.000MB -7.9%) vs baseline: +4.7%


✅ tracer-dont-create-db-spans

Time: ✅ 19.607ms (SLO: <21.500ms -8.8%) vs baseline: -0.1%

Memory: ✅ 67.633MB (SLO: <75.000MB -9.8%) vs baseline: +4.9%


✅ tracer-minimal

Time: ✅ 16.762ms (SLO: <17.500ms -4.2%) vs baseline: -0.4%

Memory: ✅ 67.594MB (SLO: <75.000MB -9.9%)


✅ tracer-native

Time: ✅ 19.440ms (SLO: <21.750ms 📉 -10.6%) vs baseline: ~same

Memory: ✅ 67.633MB (SLO: <72.500MB -6.7%)


✅ tracer-no-caches

Time: ✅ 17.566ms (SLO: <19.650ms 📉 -10.6%) vs baseline: -0.3%

Memory: ✅ 67.613MB (SLO: <75.000MB -9.8%) vs baseline: +4.9%


✅ tracer-no-databases

Time: ✅ 19.268ms (SLO: <20.100ms -4.1%) vs baseline: +0.2%

Memory: ✅ 67.613MB (SLO: <75.000MB -9.8%) vs baseline: +4.9%


✅ tracer-no-middleware

Time: ✅ 19.292ms (SLO: <21.500ms 📉 -10.3%) vs baseline: ~same

Memory: ✅ 67.633MB (SLO: <75.000MB -9.8%) vs baseline: +4.9%


✅ tracer-no-templates

Time: ✅ 19.409ms (SLO: <22.000ms 📉 -11.8%) vs baseline: ~same

Memory: ✅ 67.633MB (SLO: <73.500MB -8.0%)


errortrackingdjangosimple - 6/6

✅ errortracking-enabled-all

Time: ✅ 16.388ms (SLO: <19.850ms 📉 -17.4%) vs baseline: +0.4%

Memory: ✅ 67.544MB (SLO: <75.000MB -9.9%) vs baseline: +4.9%


✅ errortracking-enabled-user

Time: ✅ 16.381ms (SLO: <19.400ms 📉 -15.6%) vs baseline: -0.4%

Memory: ✅ 67.578MB (SLO: <75.000MB -9.9%) vs baseline: +4.9%


✅ tracer-enabled

Time: ✅ 16.296ms (SLO: <19.450ms 📉 -16.2%) vs baseline: -0.5%

Memory: ✅ 67.251MB (SLO: <75.000MB 📉 -10.3%) vs baseline: +5.1%


errortrackingflasksqli - 6/6

✅ errortracking-enabled-all

Time: ✅ 2.108ms (SLO: <2.300ms -8.4%) vs baseline: +0.3%

Memory: ✅ 55.070MB (SLO: <60.000MB -8.2%) vs baseline: +5.1%


✅ errortracking-enabled-user

Time: ✅ 2.113ms (SLO: <2.250ms -6.1%) vs baseline: +0.1%

Memory: ✅ 54.991MB (SLO: <60.000MB -8.3%) vs baseline: +4.8%


✅ tracer-enabled

Time: ✅ 2.104ms (SLO: <2.300ms -8.5%) vs baseline: ~same

Memory: ✅ 54.972MB (SLO: <60.000MB -8.4%) vs baseline: +5.0%


flasksimple - 18/18

✅ appsec-get

Time: ✅ 3.437ms (SLO: <4.750ms 📉 -27.7%) vs baseline: +0.2%

Memory: ✅ 55.090MB (SLO: <66.500MB 📉 -17.2%) vs baseline: +4.9%


✅ appsec-post

Time: ✅ 2.903ms (SLO: <6.750ms 📉 -57.0%) vs baseline: +0.4%

Memory: ✅ 54.991MB (SLO: <66.500MB 📉 -17.3%) vs baseline: +4.7%


✅ appsec-telemetry

Time: ✅ 3.434ms (SLO: <4.750ms 📉 -27.7%) vs baseline: +0.5%

Memory: ✅ 55.070MB (SLO: <66.500MB 📉 -17.2%) vs baseline: +4.9%


✅ debugger

Time: ✅ 1.867ms (SLO: <2.000ms -6.6%) vs baseline: ~same

Memory: ✅ 48.543MB (SLO: <51.500MB -5.7%) vs baseline: +4.8%


✅ iast-get

Time: ✅ 1.855ms (SLO: <2.000ms -7.2%) vs baseline: ~same

Memory: ✅ 45.220MB (SLO: <49.000MB -7.7%) vs baseline: +4.9%


✅ profiler

Time: ✅ 1.907ms (SLO: <2.100ms -9.2%) vs baseline: +0.3%

Memory: ✅ 51.315MB (SLO: <52.500MB -2.3%) vs baseline: +4.8%


✅ resource-renaming

Time: ✅ 3.399ms (SLO: <3.650ms -6.9%) vs baseline: ~same

Memory: ✅ 55.070MB (SLO: <60.000MB -8.2%) vs baseline: +4.7%


✅ tracer

Time: ✅ 3.413ms (SLO: <3.650ms -6.5%) vs baseline: -0.2%

Memory: ✅ 55.050MB (SLO: <60.000MB -8.2%) vs baseline: +4.9%


✅ tracer-native

Time: ✅ 3.418ms (SLO: <3.650ms -6.4%) vs baseline: +0.3%

Memory: ✅ 55.090MB (SLO: <60.000MB -8.2%) vs baseline: +4.9%


flasksqli - 6/6

✅ appsec-enabled

Time: ✅ 2.095ms (SLO: <4.200ms 📉 -50.1%) vs baseline: -0.5%

Memory: ✅ 54.952MB (SLO: <66.000MB 📉 -16.7%) vs baseline: +4.8%


✅ iast-enabled

Time: ✅ 2.108ms (SLO: <2.800ms 📉 -24.7%) vs baseline: +0.1%

Memory: ✅ 54.991MB (SLO: <62.500MB 📉 -12.0%) vs baseline: +5.0%


✅ tracer-enabled

Time: ✅ 2.105ms (SLO: <2.250ms -6.4%) vs baseline: +0.2%

Memory: ✅ 54.972MB (SLO: <60.000MB -8.4%) vs baseline: +4.7%


forktime - 4/4

✅ baseline

Time: ✅ 1.964ms (SLO: <3.000ms 📉 -34.5%) vs baseline: +5.2%

Memory: ✅ 29.196MB (SLO: <33.000MB 📉 -11.5%) vs baseline: +4.6%


✅ configured

Time: ✅ 8.545ms (SLO: <13.000ms 📉 -34.3%) vs baseline: ~same

Memory: ✅ 54.983MB (SLO: <60.000MB -8.4%) vs baseline: +5.0%


httppropagationextract - 60/60

✅ all_styles_all_headers

Time: ✅ 79.140µs (SLO: <100.000µs 📉 -20.9%) vs baseline: +5.1%

Memory: ✅ 35.665MB (SLO: <38.000MB -6.1%) vs baseline: +5.2%


✅ b3_headers

Time: ✅ 12.747µs (SLO: <20.000µs 📉 -36.3%) vs baseline: -0.2%

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.9%


✅ b3_single_headers

Time: ✅ 11.784µs (SLO: <20.000µs 📉 -41.1%) vs baseline: ~same

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.9%


✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: ✅ 60.802µs (SLO: <80.000µs 📉 -24.0%) vs baseline: ~same

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +4.7%


✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: ✅ 62.619µs (SLO: <80.000µs 📉 -21.7%) vs baseline: +0.4%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.5%


✅ empty_headers

Time: ✅ 1.299µs (SLO: <10.000µs 📉 -87.0%) vs baseline: ~same

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +4.7%


✅ full_t_id_datadog_headers

Time: ✅ 20.800µs (SLO: <30.000µs 📉 -30.7%) vs baseline: +0.3%

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.9%


✅ invalid_priority_header

Time: ✅ 5.922µs (SLO: <10.000µs 📉 -40.8%) vs baseline: +0.8%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.7%


✅ invalid_span_id_header

Time: ✅ 5.900µs (SLO: <10.000µs 📉 -41.0%) vs baseline: -0.3%

Memory: ✅ 35.743MB (SLO: <38.000MB -5.9%) vs baseline: +5.3%


✅ invalid_tags_header

Time: ✅ 5.928µs (SLO: <10.000µs 📉 -40.7%) vs baseline: +0.3%

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.4%


✅ invalid_trace_id_header

Time: ✅ 5.899µs (SLO: <10.000µs 📉 -41.0%) vs baseline: +0.3%

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +4.9%


✅ large_header_no_matches

Time: ✅ 26.877µs (SLO: <30.000µs 📉 -10.4%) vs baseline: -0.2%

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +5.1%


✅ large_valid_headers_all

Time: ✅ 28.133µs (SLO: <40.000µs 📉 -29.7%) vs baseline: +0.2%

Memory: ✅ 35.665MB (SLO: <38.000MB -6.1%) vs baseline: +4.7%


✅ medium_header_no_matches

Time: ✅ 9.218µs (SLO: <20.000µs 📉 -53.9%) vs baseline: ~same

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +5.1%


✅ medium_valid_headers_all

Time: ✅ 10.640µs (SLO: <20.000µs 📉 -46.8%) vs baseline: -0.1%

Memory: ✅ 35.665MB (SLO: <38.000MB -6.1%) vs baseline: +5.1%


✅ none_propagation_style

Time: ✅ 1.391µs (SLO: <10.000µs 📉 -86.1%) vs baseline: -0.6%

Memory: ✅ 35.665MB (SLO: <38.000MB -6.1%) vs baseline: +4.9%


✅ tracecontext_headers

Time: ✅ 32.408µs (SLO: <40.000µs 📉 -19.0%) vs baseline: ~same

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.7%


✅ valid_headers_all

Time: ✅ 5.906µs (SLO: <10.000µs 📉 -40.9%) vs baseline: +0.2%

Memory: ✅ 35.586MB (SLO: <38.000MB -6.4%) vs baseline: +4.6%


✅ valid_headers_basic

Time: ✅ 5.488µs (SLO: <10.000µs 📉 -45.1%) vs baseline: +0.2%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.8%


✅ wsgi_empty_headers

Time: ✅ 1.300µs (SLO: <10.000µs 📉 -87.0%) vs baseline: +0.1%

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +4.8%


✅ wsgi_invalid_priority_header

Time: ✅ 5.916µs (SLO: <10.000µs 📉 -40.8%) vs baseline: ~same

Memory: ✅ 35.704MB (SLO: <38.000MB -6.0%) vs baseline: +5.2%


✅ wsgi_invalid_span_id_header

Time: ✅ 1.301µs (SLO: <10.000µs 📉 -87.0%) vs baseline: -0.2%

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +5.1%


✅ wsgi_invalid_tags_header

Time: ✅ 5.938µs (SLO: <10.000µs 📉 -40.6%) vs baseline: +0.5%

Memory: ✅ 35.743MB (SLO: <38.000MB -5.9%) vs baseline: +5.1%


✅ wsgi_invalid_trace_id_header

Time: ✅ 5.914µs (SLO: <10.000µs 📉 -40.9%) vs baseline: -0.5%

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +4.8%


✅ wsgi_large_header_no_matches

Time: ✅ 28.097µs (SLO: <40.000µs 📉 -29.8%) vs baseline: ~same

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +5.1%


✅ wsgi_large_valid_headers_all

Time: ✅ 29.126µs (SLO: <40.000µs 📉 -27.2%) vs baseline: ~same

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.7%


✅ wsgi_medium_header_no_matches

Time: ✅ 9.529µs (SLO: <20.000µs 📉 -52.4%) vs baseline: +0.3%

Memory: ✅ 35.586MB (SLO: <38.000MB -6.4%) vs baseline: +4.9%


✅ wsgi_medium_valid_headers_all

Time: ✅ 11.069µs (SLO: <20.000µs 📉 -44.7%) vs baseline: +1.7%

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +4.8%


✅ wsgi_valid_headers_all

Time: ✅ 5.963µs (SLO: <10.000µs 📉 -40.4%) vs baseline: +0.6%

Memory: ✅ 35.724MB (SLO: <38.000MB -6.0%) vs baseline: +4.9%


✅ wsgi_valid_headers_basic

Time: ✅ 5.495µs (SLO: <10.000µs 📉 -45.1%) vs baseline: ~same

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.8%


httppropagationinject - 16/16

✅ ids_only

Time: ✅ 20.325µs (SLO: <30.000µs 📉 -32.2%) vs baseline: +3.3%

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +4.8%


✅ with_all

Time: ✅ 26.405µs (SLO: <40.000µs 📉 -34.0%) vs baseline: ~same

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.9%


✅ with_dd_origin

Time: ✅ 23.394µs (SLO: <30.000µs 📉 -22.0%) vs baseline: +0.2%

Memory: ✅ 35.566MB (SLO: <38.000MB -6.4%) vs baseline: +4.7%


✅ with_priority_and_origin

Time: ✅ 22.743µs (SLO: <40.000µs 📉 -43.1%) vs baseline: -0.4%

Memory: ✅ 35.684MB (SLO: <38.000MB -6.1%) vs baseline: +4.6%


✅ with_sampling_priority

Time: ✅ 19.631µs (SLO: <30.000µs 📉 -34.6%) vs baseline: -0.2%

Memory: ✅ 35.724MB (SLO: <38.000MB -6.0%) vs baseline: +5.1%


✅ with_tags

Time: ✅ 24.707µs (SLO: <40.000µs 📉 -38.2%) vs baseline: +0.7%

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.6%


✅ with_tags_invalid

Time: ✅ 25.933µs (SLO: <40.000µs 📉 -35.2%) vs baseline: ~same

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.7%


✅ with_tags_max_size

Time: ✅ 24.904µs (SLO: <40.000µs 📉 -37.7%) vs baseline: ~same

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +5.1%


iastaspectssplit - 12/12

✅ rsplit_aspect

Time: ✅ 154.936µs (SLO: <250.000µs 📉 -38.0%) vs baseline: +3.6%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.9%


✅ rsplit_noaspect

Time: ✅ 155.546µs (SLO: <250.000µs 📉 -37.8%) vs baseline: +0.5%

Memory: ✅ 42.939MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ split_aspect

Time: ✅ 148.729µs (SLO: <250.000µs 📉 -40.5%) vs baseline: +0.5%

Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +4.8%


✅ split_noaspect

Time: ✅ 153.881µs (SLO: <250.000µs 📉 -38.4%) vs baseline: -1.0%

Memory: ✅ 42.920MB (SLO: <46.000MB -6.7%) vs baseline: +4.9%


✅ splitlines_aspect

Time: ✅ 144.800µs (SLO: <250.000µs 📉 -42.1%) vs baseline: +0.6%

Memory: ✅ 42.861MB (SLO: <46.000MB -6.8%) vs baseline: +4.8%


✅ splitlines_noaspect

Time: ✅ 149.332µs (SLO: <250.000µs 📉 -40.3%) vs baseline: +0.4%

Memory: ✅ 42.959MB (SLO: <46.000MB -6.6%) vs baseline: +5.0%


iastpropagation - 8/8

✅ no-propagation

Time: ✅ 48.839µs (SLO: <60.000µs 📉 -18.6%) vs baseline: -0.3%

Memory: ✅ 39.164MB (SLO: <42.000MB -6.8%) vs baseline: +5.3%


✅ propagation_enabled

Time: ✅ 135.547µs (SLO: <190.000µs 📉 -28.7%) vs baseline: ~same

Memory: ✅ 38.948MB (SLO: <42.000MB -7.3%) vs baseline: +4.8%


✅ propagation_enabled_100

Time: ✅ 1.549ms (SLO: <2.300ms 📉 -32.7%) vs baseline: -0.8%

Memory: ✅ 38.968MB (SLO: <42.000MB -7.2%) vs baseline: +4.8%


✅ propagation_enabled_1000

Time: ✅ 29.040ms (SLO: <34.550ms 📉 -15.9%) vs baseline: -0.5%

Memory: ✅ 39.046MB (SLO: <42.000MB -7.0%) vs baseline: +4.9%


otelsdkspan - 24/24

✅ add-event

Time: ✅ 40.346ms (SLO: <42.000ms -3.9%) vs baseline: ~same

Memory: ✅ 37.985MB (SLO: <40.750MB -6.8%) vs baseline: +5.1%


✅ add-link

Time: ✅ 36.185ms (SLO: <38.550ms -6.1%) vs baseline: -0.2%

Memory: ✅ 38.044MB (SLO: <40.750MB -6.6%) vs baseline: +4.7%


✅ add-metrics

Time: ✅ 218.262ms (SLO: <232.000ms -5.9%) vs baseline: -0.7%

Memory: ✅ 38.024MB (SLO: <40.750MB -6.7%) vs baseline: +4.9%


✅ add-tags

Time: ✅ 210.859ms (SLO: <221.600ms -4.8%) vs baseline: -0.3%

Memory: ✅ 37.985MB (SLO: <40.750MB -6.8%) vs baseline: +4.9%


✅ get-context

Time: ✅ 29.278ms (SLO: <31.300ms -6.5%) vs baseline: +0.5%

Memory: ✅ 38.063MB (SLO: <40.750MB -6.6%) vs baseline: +5.1%


✅ is-recording

Time: ✅ 29.439ms (SLO: <31.000ms -5.0%) vs baseline: +0.9%

Memory: ✅ 37.965MB (SLO: <40.750MB -6.8%) vs baseline: +4.8%


✅ record-exception

Time: ✅ 63.043ms (SLO: <65.850ms -4.3%) vs baseline: +0.1%

Memory: ✅ 37.906MB (SLO: <40.750MB -7.0%) vs baseline: +4.3%


✅ set-status

Time: ✅ 32.435ms (SLO: <34.150ms -5.0%) vs baseline: +1.4%

Memory: ✅ 37.945MB (SLO: <40.750MB -6.9%) vs baseline: +4.6%


✅ start

Time: ✅ 29.427ms (SLO: <30.150ms -2.4%) vs baseline: +1.6%

Memory: ✅ 38.142MB (SLO: <40.750MB -6.4%) vs baseline: +5.2%


✅ start-finish

Time: ✅ 33.854ms (SLO: <35.350ms -4.2%) vs baseline: -0.9%

Memory: ✅ 37.906MB (SLO: <40.750MB -7.0%) vs baseline: +4.6%


✅ start-finish-telemetry

Time: ✅ 34.133ms (SLO: <35.450ms -3.7%) vs baseline: -0.7%

Memory: ✅ 38.083MB (SLO: <40.750MB -6.5%) vs baseline: +5.2%


✅ update-name

Time: ✅ 31.199ms (SLO: <33.400ms -6.6%) vs baseline: +0.4%

Memory: ✅ 38.103MB (SLO: <40.750MB -6.5%) vs baseline: +5.1%


otelspan - 22/22

✅ add-event

Time: ✅ 40.994ms (SLO: <47.150ms 📉 -13.1%) vs baseline: ~same

Memory: ✅ 40.516MB (SLO: <47.000MB 📉 -13.8%) vs baseline: +4.8%


✅ add-metrics

Time: ✅ 251.574ms (SLO: <344.800ms 📉 -27.0%) vs baseline: -0.1%

Memory: ✅ 44.987MB (SLO: <47.500MB -5.3%) vs baseline: +4.9%


✅ add-tags

Time: ✅ 306.277ms (SLO: <330.000ms -7.2%) vs baseline: -0.3%

Memory: ✅ 44.947MB (SLO: <47.500MB -5.4%) vs baseline: +4.7%


✅ get-context

Time: ✅ 80.971ms (SLO: <92.350ms 📉 -12.3%) vs baseline: -0.2%

Memory: ✅ 40.835MB (SLO: <46.500MB 📉 -12.2%) vs baseline: +4.8%


✅ is-recording

Time: ✅ 37.170ms (SLO: <44.500ms 📉 -16.5%) vs baseline: -0.1%

Memory: ✅ 40.460MB (SLO: <47.500MB 📉 -14.8%) vs baseline: +5.2%


✅ record-exception

Time: ✅ 59.870ms (SLO: <67.650ms 📉 -11.5%) vs baseline: -0.5%

Memory: ✅ 40.995MB (SLO: <47.000MB 📉 -12.8%) vs baseline: +4.9%


✅ set-status

Time: ✅ 43.715ms (SLO: <50.400ms 📉 -13.3%) vs baseline: ~same

Memory: ✅ 40.446MB (SLO: <47.000MB 📉 -13.9%) vs baseline: +5.2%


✅ start

Time: ✅ 38.286ms (SLO: <43.450ms 📉 -11.9%) vs baseline: +4.7%

Memory: ✅ 40.494MB (SLO: <47.000MB 📉 -13.8%) vs baseline: +5.3%


✅ start-finish

Time: ✅ 85.549ms (SLO: <90.000ms -4.9%) vs baseline: +0.3%

Memory: ✅ 38.103MB (SLO: <46.500MB 📉 -18.1%) vs baseline: +4.9%


✅ start-finish-telemetry

Time: ✅ 87.220ms (SLO: <91.000ms -4.2%) vs baseline: +0.1%

Memory: ✅ 38.103MB (SLO: <46.500MB 📉 -18.1%) vs baseline: +4.7%


✅ update-name

Time: ✅ 38.214ms (SLO: <45.150ms 📉 -15.4%) vs baseline: -0.4%

Memory: ✅ 40.448MB (SLO: <47.000MB 📉 -13.9%) vs baseline: +4.4%


packagespackageforrootmodulemapping - 4/4

✅ cache_off

Time: ✅ 344.118ms (SLO: <354.300ms -2.9%) vs baseline: -0.4%

Memory: ✅ 41.076MB (SLO: <46.000MB 📉 -10.7%) vs baseline: +3.9%


✅ cache_on

Time: ✅ 0.389µs (SLO: <10.000µs 📉 -96.1%) vs baseline: -0.8%

Memory: ✅ 40.078MB (SLO: <46.000MB 📉 -12.9%) vs baseline: +4.6%


rand - 2/2

✅ rand128bits

Time: ✅ 0.193µs (SLO: <21.000µs 📉 -99.1%) vs baseline: -0.4%


✅ rand64bits

Time: ✅ 0.127µs (SLO: <15.000µs 📉 -99.2%) vs baseline: -1.9%


ratelimiter - 12/12

✅ defaults

Time: ✅ 2.363µs (SLO: <10.000µs 📉 -76.4%) vs baseline: -0.3%

Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +4.6%


✅ high_rate_limit

Time: ✅ 2.400µs (SLO: <10.000µs 📉 -76.0%) vs baseline: -1.3%

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +5.2%


✅ long_window

Time: ✅ 2.355µs (SLO: <10.000µs 📉 -76.5%) vs baseline: -0.2%

Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +4.7%


✅ low_rate_limit

Time: ✅ 2.363µs (SLO: <10.000µs 📉 -76.4%) vs baseline: -0.2%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.9%


✅ no_rate_limit

Time: ✅ 0.824µs (SLO: <10.000µs 📉 -91.8%) vs baseline: -0.7%

Memory: ✅ 35.507MB (SLO: <38.000MB -6.6%) vs baseline: +4.6%


✅ short_window

Time: ✅ 2.490µs (SLO: <10.000µs 📉 -75.1%) vs baseline: -0.5%

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +4.7%


recursivecomputation - 8/8

✅ deep

Time: ✅ 310.702ms (SLO: <320.950ms -3.2%) vs baseline: +0.2%

Memory: ✅ 36.392MB (SLO: <38.750MB -6.1%) vs baseline: +5.0%


✅ deep-profiled

Time: ✅ 327.586ms (SLO: <359.150ms -8.8%) vs baseline: ~same

Memory: ✅ 42.408MB (SLO: <46.000MB -7.8%) vs baseline: +4.9%


✅ medium

Time: ✅ 7.132ms (SLO: <7.400ms -3.6%) vs baseline: +0.2%

Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +5.0%


✅ shallow

Time: ✅ 0.986ms (SLO: <1.050ms -6.1%) vs baseline: +2.1%

Memory: ✅ 35.468MB (SLO: <38.000MB -6.7%) vs baseline: +4.7%


samplingrules - 8/8

✅ average_match

Time: ✅ 146.047µs (SLO: <290.000µs 📉 -49.6%) vs baseline: -0.6%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +5.1%


✅ high_match

Time: ✅ 192.923µs (SLO: <480.000µs 📉 -59.8%) vs baseline: -0.6%

Memory: ✅ 35.566MB (SLO: <38.000MB -6.4%) vs baseline: +4.7%


✅ low_match

Time: ✅ 100.334µs (SLO: <120.000µs 📉 -16.4%) vs baseline: ~same

Memory: ✅ 700.970MB (SLO: <780.000MB 📉 -10.1%) vs baseline: +4.9%


✅ very_low_match

Time: ✅ 2.873ms (SLO: <8.500ms 📉 -66.2%) vs baseline: ~same

Memory: ✅ 77.980MB (SLO: <85.000MB -8.3%) vs baseline: +4.7%


sethttpmeta - 32/32

✅ all-disabled

Time: ✅ 10.527µs (SLO: <20.000µs 📉 -47.4%) vs baseline: +0.4%

Memory: ✅ 35.999MB (SLO: <38.750MB -7.1%) vs baseline: +4.6%


✅ all-enabled

Time: ✅ 40.913µs (SLO: <50.000µs 📉 -18.2%) vs baseline: +1.5%

Memory: ✅ 36.196MB (SLO: <38.750MB -6.6%) vs baseline: +5.3%


✅ collectipvariant_exists

Time: ✅ 40.891µs (SLO: <50.000µs 📉 -18.2%) vs baseline: ~same

Memory: ✅ 36.137MB (SLO: <38.750MB -6.7%) vs baseline: +5.1%


✅ no-collectipvariant

Time: ✅ 40.236µs (SLO: <50.000µs 📉 -19.5%) vs baseline: ~same

Memory: ✅ 36.058MB (SLO: <38.750MB -6.9%) vs baseline: +5.0%


✅ no-useragentvariant

Time: ✅ 38.900µs (SLO: <50.000µs 📉 -22.2%) vs baseline: -0.2%

Memory: ✅ 36.117MB (SLO: <38.750MB -6.8%) vs baseline: +5.0%


✅ obfuscation-no-query

Time: ✅ 40.604µs (SLO: <50.000µs 📉 -18.8%) vs baseline: ~same

Memory: ✅ 36.078MB (SLO: <38.750MB -6.9%) vs baseline: +4.7%


✅ obfuscation-regular-case-explicit-query

Time: ✅ 75.809µs (SLO: <90.000µs 📉 -15.8%) vs baseline: -0.2%

Memory: ✅ 36.372MB (SLO: <38.750MB -6.1%) vs baseline: +4.9%


✅ obfuscation-regular-case-implicit-query

Time: ✅ 76.699µs (SLO: <90.000µs 📉 -14.8%) vs baseline: +0.1%

Memory: ✅ 36.392MB (SLO: <38.750MB -6.1%) vs baseline: +5.0%


✅ obfuscation-send-querystring-disabled

Time: ✅ 154.385µs (SLO: <170.000µs -9.2%) vs baseline: -0.3%

Memory: ✅ 36.392MB (SLO: <38.750MB -6.1%) vs baseline: +4.8%


✅ obfuscation-worst-case-explicit-query

Time: ✅ 149.098µs (SLO: <160.000µs -6.8%) vs baseline: -0.2%

Memory: ✅ 36.353MB (SLO: <38.750MB -6.2%) vs baseline: +4.9%


✅ obfuscation-worst-case-implicit-query

Time: ✅ 155.385µs (SLO: <170.000µs -8.6%) vs baseline: ~same

Memory: ✅ 36.392MB (SLO: <38.750MB -6.1%) vs baseline: +4.7%


✅ useragentvariant_exists_1

Time: ✅ 39.938µs (SLO: <50.000µs 📉 -20.1%) vs baseline: +1.0%

Memory: ✅ 36.019MB (SLO: <38.750MB -7.0%) vs baseline: +4.7%


✅ useragentvariant_exists_2

Time: ✅ 40.653µs (SLO: <50.000µs 📉 -18.7%) vs baseline: -0.1%

Memory: ✅ 36.235MB (SLO: <38.750MB -6.5%) vs baseline: +4.9%


✅ useragentvariant_exists_3

Time: ✅ 40.076µs (SLO: <50.000µs 📉 -19.8%) vs baseline: -0.4%

Memory: ✅ 36.097MB (SLO: <38.750MB -6.8%) vs baseline: +5.0%


✅ useragentvariant_not_exists_1

Time: ✅ 39.643µs (SLO: <50.000µs 📉 -20.7%) vs baseline: -0.4%

Memory: ✅ 36.156MB (SLO: <38.750MB -6.7%) vs baseline: +5.3%


✅ useragentvariant_not_exists_2

Time: ✅ 39.508µs (SLO: <50.000µs 📉 -21.0%) vs baseline: -0.4%

Memory: ✅ 36.274MB (SLO: <38.750MB -6.4%) vs baseline: +5.4%


span - 26/26

✅ add-event

Time: ✅ 18.609ms (SLO: <22.500ms 📉 -17.3%) vs baseline: -0.3%

Memory: ✅ 37.513MB (SLO: <53.000MB 📉 -29.2%) vs baseline: +4.8%


✅ add-metrics

Time: ✅ 89.294ms (SLO: <93.500ms -4.5%) vs baseline: +1.3%

Memory: ✅ 42.231MB (SLO: <53.000MB 📉 -20.3%) vs baseline: +4.7%


✅ add-tags

Time: ✅ 144.994ms (SLO: <155.000ms -6.5%) vs baseline: -0.4%

Memory: ✅ 42.117MB (SLO: <53.000MB 📉 -20.5%) vs baseline: +5.0%


✅ get-context

Time: ✅ 16.945ms (SLO: <20.500ms 📉 -17.3%) vs baseline: -0.3%

Memory: ✅ 37.513MB (SLO: <53.000MB 📉 -29.2%) vs baseline: +4.8%


✅ is-recording

Time: ✅ 17.078ms (SLO: <20.500ms 📉 -16.7%) vs baseline: -0.3%

Memory: ✅ 37.532MB (SLO: <53.000MB 📉 -29.2%) vs baseline: +4.9%


✅ record-exception

Time: ✅ 38.009ms (SLO: <41.000ms -7.3%) vs baseline: +0.6%

Memory: ✅ 38.117MB (SLO: <53.000MB 📉 -28.1%) vs baseline: +4.9%


✅ set-status

Time: ✅ 18.754ms (SLO: <22.000ms 📉 -14.8%) vs baseline: -0.4%

Memory: ✅ 37.552MB (SLO: <53.000MB 📉 -29.1%) vs baseline: +5.0%


✅ start

Time: ✅ 17.959ms (SLO: <20.500ms 📉 -12.4%) vs baseline: +5.6%

Memory: ✅ 37.591MB (SLO: <53.000MB 📉 -29.1%) vs baseline: +5.1%


✅ start-finish

Time: ✅ 53.603ms (SLO: <56.000ms -4.3%) vs baseline: +0.3%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +5.0%


✅ start-finish-telemetry

Time: ✅ 54.789ms (SLO: <58.000ms -5.5%) vs baseline: +0.2%

Memory: ✅ 35.566MB (SLO: <38.000MB -6.4%) vs baseline: +4.7%


✅ start-finish-traceid128

Time: ✅ 56.359ms (SLO: <60.000ms -6.1%) vs baseline: +0.3%

Memory: ✅ 35.606MB (SLO: <38.000MB -6.3%) vs baseline: +4.9%


✅ start-traceid128

Time: ✅ 16.964ms (SLO: <22.500ms 📉 -24.6%) vs baseline: +0.8%

Memory: ✅ 37.650MB (SLO: <53.000MB 📉 -29.0%) vs baseline: +5.0%


✅ update-name

Time: ✅ 17.605ms (SLO: <22.000ms 📉 -20.0%) vs baseline: +0.1%

Memory: ✅ 37.552MB (SLO: <53.000MB 📉 -29.1%) vs baseline: +4.6%


telemetryaddmetric - 30/30

✅ 1-count-metric-1-times

Time: ✅ 2.261µs (SLO: <20.000µs 📉 -88.7%) vs baseline: +8.0%

Memory: ✅ 35.507MB (SLO: <38.000MB -6.6%) vs baseline: +4.3%


✅ 1-count-metrics-100-times

Time: ✅ 148.717µs (SLO: <220.000µs 📉 -32.4%) vs baseline: -0.4%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +5.4%


✅ 1-distribution-metric-1-times

Time: ✅ 2.455µs (SLO: <20.000µs 📉 -87.7%) vs baseline: -0.2%

Memory: ✅ 35.586MB (SLO: <38.000MB -6.4%) vs baseline: +4.7%


✅ 1-distribution-metrics-100-times

Time: ✅ 163.483µs (SLO: <230.000µs 📉 -28.9%) vs baseline: -0.8%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +5.3%


✅ 1-gauge-metric-1-times

Time: ✅ 1.954µs (SLO: <20.000µs 📉 -90.2%) vs baseline: +0.2%

Memory: ✅ 35.586MB (SLO: <38.000MB -6.4%) vs baseline: +4.8%


✅ 1-gauge-metrics-100-times

Time: ✅ 136.302µs (SLO: <150.000µs -9.1%) vs baseline: -0.6%

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +4.9%


✅ 1-rate-metric-1-times

Time: ✅ 2.215µs (SLO: <20.000µs 📉 -88.9%) vs baseline: +0.7%

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +4.6%


✅ 1-rate-metrics-100-times

Time: ✅ 162.420µs (SLO: <250.000µs 📉 -35.0%) vs baseline: -0.2%

Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +4.7%


✅ 100-count-metrics-100-times

Time: ✅ 15.139ms (SLO: <22.000ms 📉 -31.2%) vs baseline: -0.1%

Memory: ✅ 35.566MB (SLO: <38.000MB -6.4%) vs baseline: +4.9%


✅ 100-distribution-metrics-100-times

Time: ✅ 1.726ms (SLO: <2.550ms 📉 -32.3%) vs baseline: -0.4%

Memory: ✅ 35.488MB (SLO: <38.000MB -6.6%) vs baseline: +4.8%


✅ 100-gauge-metrics-100-times

Time: ✅ 1.403ms (SLO: <1.550ms -9.5%) vs baseline: +0.7%

Memory: ✅ 35.507MB (SLO: <38.000MB -6.6%) vs baseline: +4.6%


✅ 100-rate-metrics-100-times

Time: ✅ 1.685ms (SLO: <2.550ms 📉 -33.9%) vs baseline: ~same

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +5.1%


✅ flush-1-metric

Time: ✅ 3.524µs (SLO: <20.000µs 📉 -82.4%) vs baseline: -1.0%

Memory: ✅ 35.645MB (SLO: <38.000MB -6.2%) vs baseline: +5.0%


✅ flush-100-metrics

Time: ✅ 174.447µs (SLO: <250.000µs 📉 -30.2%) vs baseline: +0.3%

Memory: ✅ 35.625MB (SLO: <38.000MB -6.2%) vs baseline: +4.8%


✅ flush-1000-metrics

Time: ✅ 2.172ms (SLO: <2.500ms 📉 -13.1%) vs baseline: -0.7%

Memory: ✅ 36.372MB (SLO: <38.750MB -6.1%) vs baseline: +4.8%

ℹ️ Scenarios Missing SLO Configuration (46 scenarios)

The following scenarios exist in candidate data but have no SLO thresholds configured:

  • coreapiscenario-core_dispatch_listeners
  • coreapiscenario-core_dispatch_no_listeners
  • coreapiscenario-core_dispatch_with_results_listeners
  • coreapiscenario-core_dispatch_with_results_no_listeners
  • djangosimple-baseline
  • errortrackingdjangosimple-baseline
  • errortrackingflasksqli-baseline
  • flasksimple-baseline
  • flasksqli-baseline
  • iast_aspects-re_expand_aspect
  • iast_aspects-re_expand_noaspect
  • iast_aspects-re_findall_aspect
  • iast_aspects-re_findall_noaspect
  • iast_aspects-re_finditer_aspect
  • iast_aspects-re_finditer_noaspect
  • iast_aspects-re_fullmatch_aspect
  • iast_aspects-re_fullmatch_noaspect
  • iast_aspects-re_group_aspect
  • iast_aspects-re_group_noaspect
  • iast_aspects-re_groups_aspect
  • iast_aspects-re_groups_noaspect
  • iast_aspects-re_match_aspect
  • iast_aspects-re_match_noaspect
  • iast_aspects-re_search_aspect
  • iast_aspects-re_search_noaspect
  • iast_aspects-re_sub_aspect
  • iast_aspects-re_sub_noaspect
  • iast_aspects-re_subn_aspect
  • iast_aspects-re_subn_noaspect
  • sethttpmeta-obfuscation-disabled
  • startup-baseline
  • startup-baseline_django
  • startup-baseline_flask
  • startup-ddtrace_run
  • startup-ddtrace_run_appsec
  • startup-ddtrace_run_profiling
  • startup-ddtrace_run_runtime_metrics
  • startup-ddtrace_run_send_span
  • startup-ddtrace_run_telemetry_disabled
  • startup-ddtrace_run_telemetry_enabled
  • startup-import_ddtrace
  • startup-import_ddtrace_auto
  • startup-import_ddtrace_auto_django
  • startup-import_ddtrace_auto_flask
  • startup-import_ddtrace_django
  • startup-import_ddtrace_flask

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant