Repository navigation
sdk-sync: API 2.0.0+ffb34b7 → sdk-java 2.0.0 (major) - #82
marketdata-sdk-sync[bot] wants to merge 3 commits into
Conversation
tests: Build fails as expected — missing symbols (`dteList`, `dteRange`, `dteComparison`, `DteOperator`) confirm the tests target the not-yet-implemented API surface. There's also one benign redundant-cast warning I'll leave, since it's valid for the regression test's intent (documenting the record cast explicitly). Added 14 tests to `OptionsResourceTest.java` per the reviewed plan: 4 wire cases (single value, comma-list, closed range, comparison operator), 1 regression case (legacy `dte(int)`/`Dte` shape and negative-rejection unchanged), 8 validation cases (non-negative/≤36500 bounds across the single, list, range, and comparison entry points, plus range min>max), and 1 sync/async parity case for the range form. `gradle test --no-daemon --console=plain` fails at `compileTestJava` on the missing `dteList`/`dteRange`/`dteComparison`/`DteOperator` symbols, as expected since no production code was touched. implement: Only the expected files changed. Not committing, per instructions. Added three additive `ExpirationFilter` factories — `dteList`, `dteRange`, `dteComparison` — plus a `DteOperator` enum, implementing the API's new comma-list/range/comparison `dte` syntax while leaving the existing `dte(int)`/`Dte` record untouched for binary/source compatibility (per the repo's own ADR-008/REVIEW.md convention). Added shared `MAX_DTE_DAYS` (36500) bound validation across all four entry points. Wired the new variants into `OptionsResource.applyExpirationFilter` for wire encoding. Fixed one redundant-cast and two Spotless line-wrap issues in the tests I wrote in phase 1 (no assertions weakened). `gradle test` and `gradle build` both pass. changelog: Added two changelog sections under `[Unreleased]`: Added documenting the new `dteList`, `dteRange`, `dteComparison` factories and `DteOperator` enum for API 2.0.0, and Changed noting the breaking upper-bound validation on `dte(int)` with migration guidance.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #82 +/- ##
============================================
+ Coverage 98.27% 98.30% +0.02%
- Complexity 1043 1052 +9
============================================
Files 123 123
Lines 2606 2649 +43
Branches 301 308 +7
============================================
+ Hits 2561 2604 +43
Partials 45 45
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
⛔ Blocked — Code reviewAdds list, range, and comparison forms for options-chain DTE filters and caps individual values at 36,500 days. Version impact: major (1.0.0 -> 2.0.0); the release notes omit two public compatibility effects. Rating patch 3/6 (incomplete) · proof 5/6 (reproducible) · overall 3/6 Before merge
FindingsBlocking
The diff changes Should fix
Since last review
Reviewed |
code review fix 1: All changed files are within the allowed limits (`src/main/java/`, `src/test/java/`, `docs/`). Not committing, per instructions. Summary: - Public constructors bypass validation (Blocking): Added compact constructors to `DteList`, `DteRange`, and `DteComparison` records in `ExpirationFilter.java` that perform the same non-negative/≤36500/min≤max/non-null-operator checks previously only enforced by the factory methods. The factories now delegate directly to the record constructors instead of duplicating validation. Added three new tests in `OptionsResourceTest.java` that construct these records directly (bypassing the factories) to prove the invariants now hold at the constructor level. - Resource documentation omits new filters (Should fix): Updated `docs/options/chain.md` to document `dteList`, `dteRange`, and `dteComparison` alongside their wire forms (`?dte=15,30,45`, `?dte=0-45`, `?dte=>=30`) and bounds (non-negative, ≤36500 days, `min <= max` for range, `DteOperator` values). `gradle test` and `gradle build` both pass.
code review fix 2: Both `test` and `build` pass. [Blocking] Public constructors bypass validation — Added a validating compact constructor to the `Dte` record (`ExpirationFilter.java`), enforcing the same non-negative/≤36500 bounds that `DteList`/`DteRange`/`DteComparison` already had from fix round 1. The `dte(int)` factory now just delegates to `new Dte(days)` instead of duplicating the check. Added `dteRecordConstructorRejectsAbove36500` in `OptionsResourceTest.java`, proving `new ExpirationFilter.Dte(36501)` now throws directly, alongside the existing sibling tests for the other three records.
🙋 Needs a person — sdk-syncWhy: CI repair 1 failed: the agent changed no files · failures/2026-10-01T13-30-06Z_sdk-java_2.0.0_ci.md Failed checks
Code-review fix rounds used: 2 of 2 · CI repairs used: 0 of 2 What to do
This pull request is back to draft and labelled |
|
Closed to rerun the sdk-sync pipeline from scratch for API 2.0.0 (version rules, review alignment, CI re-runs). |
Generated by sdk-auto-sync for API release 2.0.0 (commit
ffb34b7).Changes in the API surface
Snapshots
ae2b047c8f6f→c2a31e277345:What the agent did
tests: Build fails as expected — missing symbols (
dteList,dteRange,dteComparison,DteOperator) confirm the tests target the not-yet-implemented API surface. There's also one benign redundant-cast warning I'll leave, since it's valid for the regression test's intent (documenting the record cast explicitly).Added 14 tests to
OptionsResourceTest.javaper the reviewed plan: 4 wire cases (single value, comma-list, closed range, comparison operator), 1 regression case (legacydte(int)/Dteshape and negative-rejection unchanged), 8 validation cases (non-negative/≤36500 bounds across the single, list, range, and comparison entry points, plus range min>max), and 1 sync/async parity case for the range form.gradle test --no-daemon --console=plainfails atcompileTestJavaon the missingdteList/dteRange/dteComparison/DteOperatorsymbols, as expected since no production code was touched.implement: Only the expected files changed. Not committing, per instructions.
Added three additive
ExpirationFilterfactories —dteList,dteRange,dteComparison— plus aDteOperatorenum, implementing the API's new comma-list/range/comparisondtesyntax while leaving the existingdte(int)/Dterecord untouched for binary/source compatibility (per the repo's own ADR-008/REVIEW.md convention). Added sharedMAX_DTE_DAYS(36500) bound validation across all four entry points. Wired the new variants intoOptionsResource.applyExpirationFilterfor wire encoding. Fixed one redundant-cast and two Spotless line-wrap issues in the tests I wrote in phase 1 (no assertions weakened).gradle testandgradle buildboth pass.changelog: Added two changelog sections under
[Unreleased]: Added documenting the newdteList,dteRange,dteComparisonfactories andDteOperatorenum for API 2.0.0, and Changed noting the breaking upper-bound validation ondte(int)with migration guidance.Files
CHANGELOG.mdsrc/main/java/com/marketdata/sdk/OptionsResource.javasrc/main/java/com/marketdata/sdk/options/ExpirationFilter.javasrc/test/java/com/marketdata/sdk/OptionsResourceTest.javaVersion
Public-surface change computed by the pipeline: major — next version 2.0.0 (from 1.0.0).
ExpirationFilter.MAX_DTE_DAYSExpirationFilter.dteList(int...)ExpirationFilter.DteListExpirationFilter.dteRange(int, int)ExpirationFilter.DteRangeExpirationFilter.dteComparison(DteOperator, int)ExpirationFilter.DteComparisonExpirationFilter.DteOperatorExpirationFilter.DteOperator.GTExpirationFilter.DteOperator.GTEExpirationFilter.DteOperator.LTExpirationFilter.DteOperator.LTEExpirationFilter.DteOperator.wireValue()ExpirationFilter.dte(int)— Now validates upper bound (36500 days); previously accepted any non-negative value.Test plan
14 case(s) (wire 4, regression 1, validation 8, parity 1)
dte_single_value_renders_bare_numberdte_comma_separated_list_renders_joined_valuesdte_closed_range_renders_as_dasheddte_comparison_operator_renders_with_operator_prefixlegacy_dte_int_factory_and_record_shape_unchangeddte_single_value_rejects_above_36500dte_list_rejects_negative_elementdte_list_rejects_element_above_36500dte_range_rejects_min_greater_than_maxdte_range_rejects_negative_mindte_range_rejects_max_above_36500dte_comparison_rejects_negative_valuedte_comparison_rejects_value_above_36500dte_range_sync_mirrors_async_wire_requestReviewer notes
Job log
The full record of this job — every phase, test and build result, review findings and how they were resolved — is in
.sdk-sync/2.0.0-ffb34b7.mdon this branch.4 coder run(s) · 3 review(s) · 63 turns · 4,108,833 tokens · US$ 2.95 · item
5c097984-5f7b-401b-abba-235a3f417767Agent runs