Skip to content

enhancement(antithesis): Expand SDK assertions, hammer sketch - #1785

Merged
blt merged 2 commits into
mainfrom
blt/antithesis_sdk_assertions_in_SUT
Jun 22, 2026
Merged

enhancement(antithesis): Expand SDK assertions, hammer sketch#1785
blt merged 2 commits into
mainfrom
blt/antithesis_sdk_assertions_in_SUT

Conversation

@blt

@blt blt commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Summary

This commit expands the SDK asserts in the SUT, allowing us to flag more
invariant flaws in runs. Of particular interest this commit introduces a
new driver, the 'sketchburst'. The goal of this driver is to transmit
sketch load in a way that 'bursts' load that will fall into a small
number of ddsketch bins.

This commit is also a demonstration of what antithesis sdk assertions
without some manner of shim or other way of tidying them up looks like
in a codebase, per recent review discussions.

Change Type

  • Bug fix
  • New feature
  • Non-functional (chore, refactoring, docs)
  • Performance

How did you test this PR?

Confirmed function via antithesis shot.

References

N/A

@dd-octo-sts dd-octo-sts Bot added area/core Core functionality, event model, etc. area/io General I/O and networking. area/config Configuration. area/components Sources, transforms, and destinations. area/memory Memory bounds and memory management. source/dogstatsd DogStatsD source. transform/aggregate Aggregate transform. area/test All things testing: unit/integration, correctness, SMP regression, etc. encoder/datadog-metrics Datadog Metrics encoder. labels Jun 1, 2026
@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Jun 1, 2026

Copy link
Copy Markdown

Pipelines

Fix all issues with BitsAI

⚠️ Warnings

🚦 1 Pipeline job failed

DataDog/saluki | test-integration-windows-amd64   View in Datadog   GitLab

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 77ba1c6 | Docs | Datadog PR Page | Give us feedback!

@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 00e3ec9 to ecd3b63 Compare June 1, 2026 15:33
@blt
blt force-pushed the blt/dogstatsd-load-generation branch from a31a487 to abbf74a Compare June 1, 2026 15:33
@pr-commenter

pr-commenter Bot commented Jun 1, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 318b493 · Comparison: 77ba1c6 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 40.33 MiB (baseline) vs 40.33 MiB (comparison)
Size Change: +4.11 KiB (+0.01%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
anon.3c6daed7130ac65f12c358dccf72eacf.5.llvm.12496690623383365869 +17.24 KiB 1
anon.cf415a02127c34346a6236308e2f2575.375.llvm.4508538544064774713 -17.24 KiB 1
anon.2a459e75aa534d8254a0c80ae7afc342.69.llvm.11858051905349669523 -16.69 KiB 1
anon.db13c838dff0ff8ee9d7f038b638fedf.281.llvm.9875580372017412076 +16.69 KiB 1
figment -14.77 KiB 32
core +7.65 KiB 1700
tokio_util +6.60 KiB 10
h2 -6.36 KiB 20
saluki_components::transforms::trace_obfuscation -5.68 KiB 16
axum -5.48 KiB 26
[sections] -5.41 KiB 7
std +5.30 KiB 55
saluki_api::DynamicRoute::http +4.92 KiB 2
hashbrown -4.89 KiB 44
anon.c5e1c530ddf2904b35c1263939261f08.241.llvm.1159996521132593281 +4.56 KiB 1
anon.041c5d0df62dca0864405ccd9777d0ae.6.llvm.18097319022462627246 -4.56 KiB 1
anon.0cdb6c17c6f65ce5d46409fbadd031b9.210.llvm.2224256004584807259 -3.89 KiB 1
anon.781685e7ede517c1f7c2c1a483910085.72.llvm.2359613053287896254 +3.80 KiB 1
anon.23fe722f1af02a4f7e40a983c402a8e0.154.llvm.5473497471263655972 +3.65 KiB 1
anon.27636cdec45966713c9ab2ca179fa065.356.llvm.14247243705585873529 -3.65 KiB 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW] +17.2Ki  [NEW]     +81    anon.3c6daed7130ac65f12c358dccf72eacf.5.llvm.12496690623383365869
  [NEW] +16.7Ki  [NEW]     +76    anon.db13c838dff0ff8ee9d7f038b638fedf.281.llvm.9875580372017412076
  [NEW] +14.1Ki  [NEW] +14.0Ki    saluki_components::transforms::trace_obfuscation::TraceObfuscation::obfuscate_span::h6dd3f8e64dbcf49c
  [NEW] +6.37Ki  [NEW] +6.24Ki    saluki_components::transforms::trace_obfuscation::redis::quantize_redis_string::h751bb6f4c9b37442
  [NEW] +6.35Ki  [NEW] +6.18Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h0407b0da49104ac2
  [NEW] +5.41Ki  [NEW] +5.16Ki    agent_data_plane::components::ottl_filter_processor::config::_::_<impl serde_core::de::Deserialize for agent_data_plane::components::ottl_filter_processor::config::OttlFilterConfig>::deserialize::hbabbe5fd999b851a
  [NEW] +5.30Ki  [NEW] +5.15Ki    _<figment::value::magic::RelativePathBuf as figment::value::magic::Magic>::deserialize_from::hb6b3f0ee02e986ee
  [NEW] +5.27Ki  [NEW]     +33    core::ptr::drop_in_place<http_body_util::combinators::map_err::MapErr<http_body_util::combinators::map_err::MapErr<http_body_util::combinators::map_frame::MapFrame<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic::codec::decode::Streaming<datadog_protos::agent_include::datadog::remoteagent::v1::RefreshRemoteAgentResponse>::new<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic_prost::codec::ProstDecoder<datadog_protos::agent_include::datadog::remoteagent::v1::RefreshRemoteAgentResponse>>::{{closure}}>,tonic::codec::decode::Streaming<datadog_protos::agent_include::datadog::remoteagent::v1::RefreshRemoteAgentResponse>::new<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic_prost::codec::ProstDecoder<datadog_protos::agent_include::datadog::remoteagent::v1::RefreshRemoteAgentResponse>>::{{closure}}>,tonic::status::Status::map_error<tonic::status::S
  [NEW] +5.09Ki  [NEW] +4.94Ki    _<figment::value::magic::Tagged<T> as figment::value::magic::Magic>::deserialize_from::hc8ca0335069f5391
  [NEW] +4.76Ki  [NEW] +4.67Ki    saluki_config::ConfigurationLoader::from_yaml::hfa7e1ddc4f30d9bc
  [DEL] -5.14Ki  [DEL] -4.99Ki    _<figment::value::magic::Tagged<T> as figment::value::magic::Magic>::deserialize_from::h3d2e35d998ca9664
  [DEL] -5.18Ki  [DEL] -4.91Ki    agent_data_plane::components::ottl_transform_processor::config::_::_<impl serde_core::de::Deserialize for agent_data_plane::components::ottl_transform_processor::config::OttlTransformConfig>::deserialize::h360e3e2b7138a195
  [DEL] -5.21Ki  [DEL] -5.05Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::hada233d12925fb3b
  [DEL] -5.28Ki  [DEL]     -33    core::ptr::drop_in_place<http_body_util::combinators::map_err::MapErr<http_body_util::combinators::map_err::MapErr<http_body_util::combinators::map_frame::MapFrame<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic::codec::decode::Streaming<datadog_protos::agent_include::datadog::model::v1::HostnameReply>::new<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic_prost::codec::ProstDecoder<datadog_protos::agent_include::datadog::model::v1::HostnameReply>>::{{closure}}>,tonic::codec::decode::Streaming<datadog_protos::agent_include::datadog::model::v1::HostnameReply>::new<tonic::service::interceptor::ResponseBody<tonic::body::Body>,tonic_prost::codec::ProstDecoder<datadog_protos::agent_include::datadog::model::v1::HostnameReply>>::{{closure}}>,tonic::status::Status::map_error<tonic::status::Status>>>::h9b6a3d1254672a8b
  [DEL] -5.37Ki  [DEL] -5.22Ki    _<figment::value::magic::RelativePathBuf as figment::value::magic::Magic>::deserialize_from::hba9a5ef32b63076f
  [DEL] -6.35Ki  [DEL] -6.19Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h31c0cfeca0f03705
  [DEL] -7.39Ki  [DEL] -7.25Ki    saluki_components::transforms::trace_obfuscation::obfuscator::Obfuscator::quantize_redis_string::h60572d833341d645
  +0.0% +2.15Ki  -0.2% -8.06Ki    [10890 Others]
 -95.4% -10.8Ki -97.2% -10.8Ki    _<saluki_components::transforms::trace_obfuscation::TraceObfuscation as saluki_core::components::transforms::SynchronousTransform>::transform_buffer::h9f577db428a0ee2c
  [DEL] -16.7Ki  [DEL]     -76    anon.2a459e75aa534d8254a0c80ae7afc342.69.llvm.11858051905349669523
  [DEL] -17.2Ki  [DEL]     -81    anon.cf415a02127c34346a6236308e2f2575.375.llvm.4508538544064774713
  +0.0% +4.11Ki  -0.0% -6.12Ki    TOTAL

@pr-commenter

pr-commenter Bot commented Jun 1, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: f9d3aedd-5ba4-40af-9b31-5c9b420d072e
Baseline: ed285181 · Comparison: 85bc7a92 · diff

Optimization Goals: ❌ 1 regression detected

experiment goal Δ mean % links
otlp_ingest_metrics_5mb_memory memory 🔴 +5.51 metrics profiles logs
Fine details of change detection per experiment (34)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
dsd_uds_512kb_3k_contexts_cpu (erratic) cpu ⚪ +15.75 metrics profiles logs
dsd_uds_1mb_3k_contexts_cpu (erratic) cpu ⚪ +11.10 metrics profiles logs
otlp_ingest_logs_5mb_memory (ignored) memory ⚪ +8.78 metrics profiles logs
otlp_ingest_metrics_5mb_cpu (erratic) cpu ⚪ +1.34 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ +0.60 metrics profiles logs
dsd_uds_100mb_3k_contexts_memory memory ⚪ +0.44 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_throughput throughput ⚪ -0.41 metrics profiles logs
otlp_ingest_traces_5mb_memory memory ⚪ +0.40 metrics profiles logs
dsd_uds_1mb_3k_contexts_memory memory ⚪ +0.30 metrics profiles logs
dsd_uds_500mb_3k_contexts_memory memory ⚪ +0.30 metrics profiles logs
dsd_uds_512kb_3k_contexts_memory memory ⚪ +0.30 metrics profiles logs
quality_gates_rss_idle memory ⚪ +0.26 metrics profiles logs
otlp_ingest_traces_5mb_throughput throughput ⚪ -0.09 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_memory memory ⚪ +0.07 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_throughput throughput ⚪ -0.05 metrics profiles logs
dsd_uds_100mb_3k_contexts_cpu (erratic) cpu ⚪ +0.05 metrics profiles logs
dsd_uds_10mb_3k_contexts_throughput throughput ⚪ -0.02 metrics profiles logs
otlp_ingest_logs_5mb_throughput (ignored) throughput ⚪ -0.01 metrics profiles logs
otlp_ingest_metrics_5mb_throughput throughput ⚪ -0.01 metrics profiles logs
dsd_uds_1mb_3k_contexts_throughput throughput ⚪ -0.00 metrics profiles logs
dsd_uds_512kb_3k_contexts_throughput throughput ⚪ -0.00 metrics profiles logs
dsd_uds_100mb_3k_contexts_throughput throughput ⚪ +0.00 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ -0.04 metrics profiles logs
otlp_ingest_traces_ottl_filtering_5mb_cpu (erratic) cpu ⚪ -0.24 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ -0.27 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_memory memory ⚪ -0.28 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ -0.29 metrics profiles logs
otlp_ingest_traces_ottl_transform_5mb_cpu (erratic) cpu ⚪ -0.43 metrics profiles logs
dsd_uds_500mb_3k_contexts_cpu (erratic) cpu ⚪ -0.50 metrics profiles logs
otlp_ingest_logs_5mb_cpu (ignored) cpu ⚪ -0.57 metrics profiles logs
dsd_uds_10mb_3k_contexts_memory memory ⚪ -1.00 metrics profiles logs
dsd_uds_500mb_3k_contexts_throughput throughput ⚪ +2.51 metrics profiles logs
otlp_ingest_traces_5mb_cpu (erratic) cpu ⚪ -3.13 metrics profiles logs
dsd_uds_10mb_3k_contexts_cpu (erratic) cpu ⚪ -4.18 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 132 MiB ≤ 140 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 42.2 MiB ≤ 50 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 64.9 MiB ≤ 75 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 191 MiB ≤ 200 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 28 MiB ≤ 40 MiB metrics profiles logs
Explanation

A change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression.

@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from ecd3b63 to bf19619 Compare June 1, 2026 18:17
@blt
blt force-pushed the blt/dogstatsd-load-generation branch from abbf74a to bb12c83 Compare June 1, 2026 18:17
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from bf19619 to b7e82dd Compare June 2, 2026 00:00
@blt
blt force-pushed the blt/dogstatsd-load-generation branch from bb12c83 to 51aa65b Compare June 2, 2026 12:23
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch 2 times, most recently from c63de60 to 32a48db Compare June 2, 2026 12:52
@blt
blt force-pushed the blt/dogstatsd-load-generation branch from 51aa65b to e4dc275 Compare June 2, 2026 16:25
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch 2 times, most recently from 7893e8b to c68f7bf Compare June 2, 2026 20:16
@blt
blt force-pushed the blt/dogstatsd-load-generation branch from e4dc275 to b9e6aa3 Compare June 2, 2026 20:16
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from c68f7bf to 2dbd8ab Compare June 2, 2026 20:33
@blt
blt changed the base branch from blt/dogstatsd-load-generation to graphite-base/1785 June 3, 2026 17:07
@blt
blt force-pushed the graphite-base/1785 branch from bc9e3b9 to efe110d Compare June 3, 2026 17:08
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 76f6d9b to 0995a19 Compare June 3, 2026 17:08
@graphite-app
graphite-app Bot changed the base branch from graphite-base/1785 to main June 3, 2026 17:08
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 0995a19 to 40e4b89 Compare June 3, 2026 17:08
Comment thread bin/agent-data-plane/src/main.rs Outdated
Comment thread bin/agent-data-plane/src/main.rs Outdated
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch 3 times, most recently from 973539e to 0a129a2 Compare June 3, 2026 21:30
@blt
blt requested a review from tobz June 3, 2026 22:51
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch 2 times, most recently from 43ded69 to b0073e7 Compare June 5, 2026 15:07
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from b0073e7 to 8fb5e2b Compare June 15, 2026 22:33
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 46f5fe5 to 516eee0 Compare June 18, 2026 21:34
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 516eee0 to 85bc7a9 Compare June 22, 2026 18:48
blt added 2 commits June 22, 2026 20:57
This commit expands the SDK asserts in the SUT, allowing us to flag more
invariant flaws in runs. Of particular interest this commit introduces a
new driver, the 'sketchburst'. The goal of this driver is to transmit
sketch load in a way that 'bursts' load that will fall into a small
number of ddsketch bins.

This commit is also a demonstration of what antithesis sdk assertions
without some manner of shim or other way of tidying them up looks like
in a codebase, per recent review discussions.
@blt
blt force-pushed the blt/antithesis_sdk_assertions_in_SUT branch from 85bc7a9 to 77ba1c6 Compare June 22, 2026 20:58
@blt
blt merged commit 67ea81b into main Jun 22, 2026
79 of 81 checks passed

blt commented Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

Merge activity

  • Jun 22, 9:29 PM UTC: @blt merged this pull request with Graphite.

@blt
blt deleted the blt/antithesis_sdk_assertions_in_SUT branch June 22, 2026 21:29
dd-octo-sts Bot pushed a commit that referenced this pull request Jun 22, 2026
## Summary
<!-- Please provide a brief summary about what this PR does.
This should help the reviewers give feedback faster and with higher quality. -->

This commit expands the SDK asserts in the SUT, allowing us to flag more
invariant flaws in runs. Of particular interest this commit introduces a
new driver, the 'sketchburst'. The goal of this driver is to transmit
sketch load in a way that 'bursts' load that will fall into a small
number of ddsketch bins.

This commit is also a demonstration of what antithesis sdk assertions
without some manner of shim or other way of tidying them up looks like
in a codebase, per recent review discussions.

## Change Type
- [ ] Bug fix
- [ ] New feature
- [x] Non-functional (chore, refactoring, docs)
- [ ] Performance

## How did you test this PR?

Confirmed function via antithesis shot.
<!-- Please how you tested these changes here -->

## References

N/A
<!-- Please list any issues closed by this PR. -->

<!--
- Closes: <issue link>
-->

<!-- Any other issues or PRs relevant to this PR? Feel free to list them here. --> 67ea81b
tobz pushed a commit that referenced this pull request Jun 30, 2026
<!-- Please provide a brief summary about what this PR does.
This should help the reviewers give feedback faster and with higher quality. -->

This commit expands the SDK asserts in the SUT, allowing us to flag more
invariant flaws in runs. Of particular interest this commit introduces a
new driver, the 'sketchburst'. The goal of this driver is to transmit
sketch load in a way that 'bursts' load that will fall into a small
number of ddsketch bins.

This commit is also a demonstration of what antithesis sdk assertions
without some manner of shim or other way of tidying them up looks like
in a codebase, per recent review discussions.

- [ ] Bug fix
- [ ] New feature
- [x] Non-functional (chore, refactoring, docs)
- [ ] Performance

Confirmed function via antithesis shot.
<!-- Please how you tested these changes here -->

N/A
<!-- Please list any issues closed by this PR. -->

<!--
- Closes: <issue link>
-->

<!-- Any other issues or PRs relevant to this PR? Feel free to list them here. -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/components Sources, transforms, and destinations. area/config Configuration. area/core Core functionality, event model, etc. area/io General I/O and networking. area/memory Memory bounds and memory management. area/test All things testing: unit/integration, correctness, SMP regression, etc. source/dogstatsd DogStatsD source. transform/aggregate Aggregate transform.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants