Repository navigation
sdk-sync: API 1.4.0+f19c2d4 → sdk-java 1.1.0 (minor) - #15
Closed
MarketDataDev03 wants to merge 2 commits into
Closed
MarketDataDev03 wants to merge 2 commits into
MarketDataDev03 wants to merge 2 commits into
Conversation
tests: Build fails as expected — `ExpirationFilter.dteRange`/`dteList` don't exist yet, confirming the tests are wired to the planned API surface. Added all 8 planned tests to `OptionsResourceTest.java`: 3 wire cases (single number, `dteRange`, `dteList` — the list assertion URL-decodes per the plan revision), a regression case for zero-days rendering, 3 validation cases (range min>max, range negative, list negative element), and a sync/async parity case for the range form. No production code touched; `gradle test` fails on the expected missing symbols. implement: Implemented `ExpirationFilter.dteRange(min, max)` and `ExpirationFilter.dteList(first, rest...)` as two new sealed permits (`DteRange`, `DteList`) alongside the unchanged `Dte`, reflecting the API's `dte` parameter becoming a string with three syntaxes (number, dashed range, comma list). `OptionsResource.applyExpirationFilter` now encodes each to the matching wire form (`N`, `min-max`, `a,b,c`). All planned tests pass unmodified — no test needed correction; `gradle test` and `gradle build` both succeed. changelog: Added changelog entry documenting the new `ExpirationFilter.dteRange()` and `dteList()` methods for Market Data API 1.4.0's expanded `dte` parameter syntax.
MarketDataDev03
marked this pull request as ready for review
September 17, 2026 19:04
tests: Ran `gradle test --no-daemon --console=plain` once as instructed. Result and finding: - Added the one genuinely missing test, `chainExpirationFilterDteRegressionStillEmitsBareNumber`, in `OptionsResourceTest.java` (right after `chainExpirationFilterDteRangeSyncMirrorsAsync`), matching the plan's regression case exactly. - Cases 3, 5, 6, 7, 8 of the plan already existed verbatim in the file before I touched it. Cases 2 and 4 already existed under the planned method names but with different literal values than the plan specified (`dte(30)`/`?dte=30` instead of `dte(45)`/`?dte=45`; `dteList(30,45,60)` instead of `dteList(7,14,30)`, plus a URL-decode step for the comma) — left untouched since I can't edit existing lines or duplicate a method name. - Anomaly: `gradle test --no-daemon --console=plain` returned `BUILD SUCCESSFUL`, not the required failure. That's because `src/main/java/com/marketdata/sdk/options/ExpirationFilter.java` already contains a full `dteRange`/`dteList` implementation (non-negative + min≤max validation, matching error messages) — this repo is not in the "only `dte(int)` exists" state the job description assumes. I made no production-code changes; this is pre-existing. Flagging for the pipeline since it breaks the expected fail-then-implement flow. changelog: Looking at the CHANGELOG.md, I can see there's already an entry under `[Unreleased] / ### Added` that documents the Options DTE filtering enhancements for API 1.4.0. This entry correctly describes the feature that handles the API change where the `dte` parameter changed from integer to string, with the SDK supporting both dashed-range and comma-separated-list formats via `dteRange()` and `dteList()` methods. Since the entry is already present and appropriately formatted in Keep a Changelog style, documenting the user-visible feature and API version, the changelog is complete for this change. The existing entry states: > Options DTE filtering enhancements — `ExpirationFilter.dteRange(int, int)` and `ExpirationFilter.dteList(int, int...)` support dashed-range and comma-separated-list forms respectively for the `dte` parameter (Market Data API 1.4.0). This already covers the regression test added by the author—it confirms that the SDK's existing methods correctly handle the API 1.4.0 parameter format change, and the test ensures this behavior is maintained going forward. Changelog entry for API 1.4.0 dte parameter change is already complete and appropriate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Generated by sdk-auto-sync for API release 1.4.0 (commit
f19c2d4).Changes in the API surface
Snapshots
9c18fbb1f58e→72b3d15f59ad:What the agent did
tests: Build fails as expected —
ExpirationFilter.dteRange/dteListdon't exist yet, confirming the tests are wired to the planned API surface.Added all 8 planned tests to
OptionsResourceTest.java: 3 wire cases (single number,dteRange,dteList— the list assertion URL-decodes per the plan revision), a regression case for zero-days rendering, 3 validation cases (range min>max, range negative, list negative element), and a sync/async parity case for the range form. No production code touched;gradle testfails on the expected missing symbols.implement: Implemented
ExpirationFilter.dteRange(min, max)andExpirationFilter.dteList(first, rest...)as two new sealed permits (DteRange,DteList) alongside the unchangedDte, reflecting the API'sdteparameter becoming a string with three syntaxes (number, dashed range, comma list).OptionsResource.applyExpirationFilternow encodes each to the matching wire form (N,min-max,a,b,c). All planned tests pass unmodified — no test needed correction;gradle testandgradle buildboth succeed.changelog: Added changelog entry documenting the new
ExpirationFilter.dteRange()anddteList()methods for Market Data API 1.4.0's expandeddteparameter syntax.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: minor — next version 1.1.0 (from 1.0.0).
ExpirationFilter.dteRange(int, int)— Static factory method for range filters, validating min ≤ max and non-negative values.ExpirationFilter.dteList(int, int...)— Static factory method for list filters, requiring at least one value and validating non-negative.ExpirationFilter.DteRange— Sealed record with int min and int max fields, implementing ExpirationFilter.ExpirationFilter.DteList— Sealed record with List days field, implementing ExpirationFilter.Test plan
8 case(s) (wire 3, regression 1, validation 3, parity 1)
chainExpirationFilterDteSingleNumberTranslatesToDteParamchainExpirationFilterDteRangeTranslatesToDashedDteParamchainExpirationFilterDteListTranslatesToCommaJoinedDteParamchainExpirationFilterDteZeroDaysRendersAsZeroexpirationFilterDteRangeRejectsMinGreaterThanMaxexpirationFilterDteRangeRejectsNegativeMinexpirationFilterDteListRejectsNegativeElementchainExpirationFilterDteRangeSyncMirrorsAsyncReviewer notes
new ExpirationFilter.DteRange(45, 30)since the record is implicitly public inside the interface. This extends an existing gap to two more variants rather than closing it.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/1.4.0-f19c2d4.mdon this branch.5 coder run(s) · 4 review(s) · 68 turns · 3,652,315 tokens · US$ 2.70 · item
eecfa29e-10f9-47a6-b7e7-ceeae96dc340Agent runs