Repository navigation
[FAILED] sdk-sync: API 2.0.0+ffb34b7 - #87
marketdata-sdk-sync[bot] wants to merge 1 commit into
Conversation
tests: Confirmed: the build fails as expected (missing `DteFilter`, which phase 2 implements). Command was run exactly once. I added 17 tests to `OptionsResourceTest.java` (4 wire, 1 regression, 7 validation, 1 parity) and `OptionsIntegrationTest.java` (4 integration), matching the reviewed plan exactly, plus a `DteFilter` import in each file. No production code or existing lines were touched; `gradle test --no-daemon --console=plain` fails as required, on the not-yet-existing `DteFilter` symbol. implement: Good — existing `ExpirationFilter.dte(int)` is untouched (same error for negative values), and the new overload is purely additive. Build and tests are clean. Added a `DteFilter` sealed type (exact/values/range/comparison, mirroring `StrikeFilter`) and a new `ExpirationFilter.dte(DteFilter)` overload plus its `DteExpression` variant, wired into `OptionsResource`'s chain-query builder. The pre-existing `ExpirationFilter.dte(int)` overload is untouched, so old callers keep compiling and failing the same way. One test from the plan was corrected: the comma-separated wire assertion now expects `%2C` (the query encoder percent-encodes `,` like it already does `>=`), not a literal comma. `gradle test` and `gradle build` both pass, including Spotless and JaCoCo coverage verification. review fix 1: All findings addressed: - docs/options/chain.md: added the `ExpirationFilter.dte(DteFilter)` entry to the builder listing, a one-line description of `DteFilter`'s four forms, and a Java example (`DteFilter.range`) plus a Kotlin example (`DteFilter.comparison`). - OptionsResourceTest.java comparison coverage: replaced the single-operator wire test with a `@ParameterizedTest` over all four `DteFilter.Operator` constants, asserting each encoded prefix (`%3E`, `%3E%3D`, `%3C`, `%3C%3D`). - DteFilter.Values (minor): added a compact constructor that copies to an immutable list and validates every element, so a caller building `Values` directly (not through `values(...)`) can no longer bypass bounds/empty checks or hold a mutable/null-containing list; the factory method was simplified since validation now lives in one place. - Duplicate regression test (minor): dropped `chainExpirationFilterDteIntOverloadStillTranslatesToSingleValue` — it was byte-for-byte identical to the pre-existing `chainExpirationFilterDteTranslatesToDteParam`, which already guards that regression. `gradle test` and `gradle build` both pass, including Spotless and JaCoCo coverage verification.
🧾 Job log — sdk-syncsdk-auto-sync job log
Changes in the API surface1. test planCoder (24 turns, US$ 0.94) — test plan, 17 case(s) (wire 4, regression 1, validation 7, parity 1, integration 4):
Plan reviewer (14 turns, US$ 0.65): 1 blocking finding(s)
2. test plan (revised 1)Coder (2 turns, US$ 0.06) — test plan, 17 case(s) (wire 4, regression 1, validation 7, parity 1, integration 4):
Plan reviewer (3 turns, US$ 0.15): approved
3. testsCoder (10 turns, US$ 0.79):
Gates:
4. implementCoder (22 turns, US$ 0.73):
Gates:
5. review 1Reviewer (18 turns, US$ 1.74): 2 blocking finding(s)
Security (2 turns, US$ 0.37): approved
6. review fix 1Findings sent back to the coder:
Minor findings sent along, as optional:
Coder (22 turns, US$ 0.90):
Gates:
7. review 2Reviewer (7 turns, US$ 1.29): approved
Security (5 turns, US$ 0.43): approved
Totals
Agent runs
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #87 +/- ##
============================================
+ Coverage 98.27% 98.30% +0.02%
- Complexity 1043 1057 +14
============================================
Files 123 124 +1
Lines 2606 2652 +46
Branches 301 307 +6
============================================
+ Hits 2561 2607 +46
Partials 45 45
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
Closed to rerun the sdk-sync pipeline from scratch for API 2.0.0 (the analyst step is now retried). |
Changes in the API surface
Snapshots
ae2b047c8f6f→c2a31e277345:What the agent did
tests: Confirmed: the build fails as expected (missing
DteFilter, which phase 2 implements). Command was run exactly once.I added 17 tests to
OptionsResourceTest.java(4 wire, 1 regression, 7 validation, 1 parity) andOptionsIntegrationTest.java(4 integration), matching the reviewed plan exactly, plus aDteFilterimport in each file. No production code or existing lines were touched;gradle test --no-daemon --console=plainfails as required, on the not-yet-existingDteFiltersymbol.implement: Good — existing
ExpirationFilter.dte(int)is untouched (same error for negative values), and the new overload is purely additive. Build and tests are clean.Added a
DteFiltersealed type (exact/values/range/comparison, mirroringStrikeFilter) and a newExpirationFilter.dte(DteFilter)overload plus itsDteExpressionvariant, wired intoOptionsResource's chain-query builder. The pre-existingExpirationFilter.dte(int)overload is untouched, so old callers keep compiling and failing the same way. One test from the plan was corrected: the comma-separated wire assertion now expects%2C(the query encoder percent-encodes,like it already does>=), not a literal comma.gradle testandgradle buildboth pass, including Spotless and JaCoCo coverage verification.review fix 1: All findings addressed:
ExpirationFilter.dte(DteFilter)entry to the builder listing, a one-line description ofDteFilter's four forms, and a Java example (DteFilter.range) plus a Kotlin example (DteFilter.comparison).@ParameterizedTestover all fourDteFilter.Operatorconstants, asserting each encoded prefix (%3E,%3E%3D,%3C,%3C%3D).Valuesdirectly (not throughvalues(...)) can no longer bypass bounds/empty checks or hold a mutable/null-containing list; the factory method was simplified since validation now lives in one place.chainExpirationFilterDteIntOverloadStillTranslatesToSingleValue— it was byte-for-byte identical to the pre-existingchainExpirationFilterDteTranslatesToDteParam, which already guards that regression.gradle testandgradle buildboth pass, including Spotless and JaCoCo coverage verification.Files
docs/options/chain.mdsrc/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.javasrc/main/java/com/marketdata/sdk/OptionsResource.javasrc/main/java/com/marketdata/sdk/options/DteFilter.javasrc/main/java/com/marketdata/sdk/options/ExpirationFilter.javasrc/test/java/com/marketdata/sdk/OptionsResourceTest.javaTest plan
17 case(s) (wire 4, regression 1, validation 7, parity 1, integration 4)
chainDteFilterExactTranslatesToSingleValuechainDteFilterValuesTranslatesToCommaSeparatedListchainDteFilterRangeTranslatesToClosedRangechainDteFilterComparisonTranslatesToOperatorPrefixchainExpirationFilterDteIntOverloadStillTranslatesToSingleValuedteFilterExactRejectsBelowMindteFilterExactRejectsAboveMaxdteFilterRangeRejectsMinGreaterThanMaxdteFilterRangeRejectsOutOfBoundsMindteFilterValuesRejectsEmptyListdteFilterValuesRejectsOutOfBoundsValuedteFilterComparisonRejectsAboveMaxchainDteFilterRangeSyncAndAsyncProduceIdenticalRequestchainDteFilterExactReturnsSingleClosestExpirationchainDteFilterValuesReturnsAtMostOneExpirationPerRequestedValuechainDteFilterRangeReturnsExpirationsWithinBoundschainDteFilterComparisonReturnsExpirationsAboveThresholdLive-API suite
src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.javaFiles of this suite changed by this pull request. The pipeline did not run the suite (it has no API token); the repository runs it with
/integrationtest.Job log
The full record of this job — every phase, test and build result, review findings and how they were resolved, and each fix round after the PR was opened — is in the job log comment.
5 coder run(s) · 6 review(s) · 129 turns · 11,049,750 tokens · US$ 8.07 · item
5c097984-5f7b-401b-abba-235a3f417767Agent runs