chore(antithesis): Add Pyld25, series are not empty#1961
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
This comment has been minimized.
This comment has been minimized.
Binary Size Analysis (Agent Data Plane)Baseline: 92cb9bd · Comparison: 5d2184d · diff ✅ Binary size difference within thresholdChanges by Module
Detailed Symbol Changes |
Regression Detector (Agent Data Plane)Run ID: Optimization Goals: ✅ No significant changes detectedFine details of change detection per experiment (5)Experiments configured
Bounds Checks: ✅ Passed (5)
ExplanationA 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 ( |
4b011df to
67ce101
Compare
2f2246a to
d82dd16
Compare
7024db6 to
9d89983
Compare
d82dd16 to
8696828
Compare
9d89983 to
d652f5f
Compare
8696828 to
7f923d5
Compare
d652f5f to
f924078
Compare
ba11f8a to
7830217
Compare
3436479 to
f08152f
Compare
7830217 to
3ddec3a
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new Antithesis intake payload property (Pyld25) to assert that certain /api/v2/series MetricSeries entries are not shipped with empty points, and wires it into the per-series evaluation flow so it is checked for each observed series.
Changes:
- Add a new per-series payload property
points_non_empty(Pyld25) forMetricSeries. - Invoke Pyld25 as part of
/api/v2/seriesobservation evaluation. - Document Pyld25 in the intake README property table.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| test/antithesis/intake/src/series_observation.rs | Wires the new Pyld25 assertion into per-series evaluation. |
| test/antithesis/intake/src/properties/payload/series.rs | Implements Pyld25 (points_non_empty) to detect empty-point series. |
| test/antithesis/intake/README.md | Adds Pyld25 to the documented payload property list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| /// Pyld25 -- a flushed COUNT or GAUGE series carries at least one point. | ||
| pub(crate) fn points_non_empty(target: Target, ms: &MetricSeries) { | ||
| let materialized = matches!(ms.type_.enum_value(), Ok(MetricType::COUNT | MetricType::GAUGE)); | ||
| let empty = (materialized && ms.points.is_empty()).then(|| ms.type_.value()); | ||
| assert_always!( | ||
| empty.is_none(), | ||
| "Pyld25.series_points_non_empty", | ||
| &json!({ "lane": target, "metric": ms.metric(), "type": ms.type_.value() }) | ||
| ); | ||
| } |
| | Pyld22 | Bytes | Content-Length | `Content-Length` absent or value equals body byte count | | ||
| | Pyld23 | MetricSeries | Tag Length | each tag `<= 200` bytes (`MaxTagLength`) | | ||
| | Pyld24 | MetricSeries | Tag Set Size | total tag bytes per series `<= 100 KiB` (`MaxTagSetSize`) | | ||
| | Pyld25 | MetricSeries | Points Non-Empty | a flushed `COUNT` or `GAUGE` series carries at least one point | |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f08152f058
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| /// Pyld25 -- a flushed COUNT or GAUGE series carries at least one point. | ||
| pub(crate) fn points_non_empty(target: Target, ms: &MetricSeries) { | ||
| let materialized = matches!(ms.type_.enum_value(), Ok(MetricType::COUNT | MetricType::GAUGE)); |
There was a problem hiding this comment.
Include RATE series in the non-empty check
When an empty RATE MetricSeries is flushed, materialized is false here, so empty stays None and Pyld25 passes; RATE is already an in-domain /api/v2/series type under Pyld12 and the v2 encoder writes rate metrics into the same MetricSeries.points field, so the empty-series scenario remains uncaught for rates while the point-level Pyld20/Pyld21 checks are vacuous on an empty points list.
Useful? React with 👍 / 👎.
| | Pyld22 | Bytes | Content-Length | `Content-Length` absent or value equals body byte count | | ||
| | Pyld23 | MetricSeries | Tag Length | each tag `<= 200` bytes (`MaxTagLength`) | | ||
| | Pyld24 | MetricSeries | Tag Set Size | total tag bytes per series `<= 100 KiB` (`MaxTagSetSize`) | | ||
| | Pyld25 | MetricSeries | Points Non-Empty | a flushed `COUNT` or `GAUGE` series carries at least one point | |
There was a problem hiding this comment.
Update the scratchbook for Pyld25
Adding Pyld25 here changes the Antithesis property catalog, but test/antithesis/AGENTS.md says the scratchbook contains property catalogs and to “Keep it up to date as Antithesis-related decisions change.” The persistent notes in test/antithesis/scratchbook/w-property-intake.md still describe W1-W22 as the full set, so operators using that scratchbook will miss this new assertion unless it is updated alongside the README entry.
Useful? React with 👍 / 👎.
3ddec3a to
e676f37
Compare
f08152f to
55effb5
Compare
This commit adds a new simple payload property asserting that series if shipped are not empty. It's not really a correctness bug per se but it is wasteful.
55effb5 to
5d2184d
Compare
e676f37 to
490d1fa
Compare

Summary
This commit adds a new simple payload property asserting that
series if shipped are not empty. It's not really a correctness
bug per se but it is wasteful.
Change Type
How did you test this PR?
References