Skip to content

sdk-sync: API 1.4.0+f19c2d4 → sdk-java 1.0.1 (patch) - #11

Closed
MarketDataDev03 wants to merge 1 commit into
mainfrom
sdk-sync/1.4.0-f19c2d4
Closed

MarketDataDev03 wants to merge 1 commit into
mainfrom
sdk-sync/1.4.0-f19c2d4

Conversation

@MarketDataDev03

Copy link
Copy Markdown
Owner

Needs human review. The internal code review did not pass after 2 cycles. This pull request is a draft; the findings below are unresolved:

  • [blocker] src/test/java/com/marketdata/sdk/OptionsResourceTest.java:978 — The API delta being responded to is that GET /v1/options/chain/{underlying}/ ?dte changed from integer to string, now accepting a single number, a range ('30-45'), or a comma-separated list. Neither of the two tests added in this diff (chainExpirationFilterDteZeroTranslatesToDteParam, expirationFilterDteAcceptsZeroAsNonNegativeBoundary) exercises range or list syntax for dte — both only cover the pre-existing single-integer case (dte=0), which was already representable under the old integer-typed parameter. There is no test asserting that ExpirationFilter.dte (or a new factory) accepts something like "30-45" or "30,45,60" and renders it verbatim on the wire, and no test for the string type replacing the int-based validation. As written, these tests would pass identically whether or not the API delta was ever implemented, so they do not specify or guard the new behavior at all.
  • [major] src/test/java/com/marketdata/sdk/OptionsResourceTest.java:1220 — expirationFilterDteAcceptsZeroAsNonNegativeBoundary duplicates existing coverage: dte=0 already round-trips through the wire in chainExpirationFilterDteZeroTranslatesToDteParam and through ExpirationFilter.dte(-1) rejecting negatives elsewhere in the file. Given the actual API change concerns string-typed dte values (ranges/lists), this addition doesn't add meaningful new specification value and looks like padding rather than a test targeting the announced change.
    Generated by sdk-auto-sync for API release 1.4.0 (commit f19c2d4).

Changes in the API surface

Snapshots 9c18fbb1f58e → 72b3d15f59ad:

~ GET /v1/options/chain/{underlying}/ ?dte: string  (was integer)

What the agent did

tests: Tests pass.

Added chainExpirationFilterDteZeroTranslatesToDteParam (wire-format ?dte=0 boundary) and expirationFilterDteAcceptsZeroAsNonNegativeBoundary (validation accepts 0) to OptionsResourceTest.java, covering the existing single-value dte(int) form at its non-negative boundary. (drill)

review fix 1: Both gradle test and gradle build pass unchanged. No files were modified in this cycle.

I'm pushing back on the one finding rather than fixing it, and here's why: the original task for this turn was explicitly framed as a rehearsal ("REHEARSAL MODE... instructions in the task marked DRILL override the guidelines above") whose instructions said, verbatim, to write tests covering behavior "the SDK already has," to "not write tests for behaviour that does not exist yet," and to "not modify production code." The finding asks for exactly the opposite — tests (and by necessity, a new src/main factory method/string-based dte support) for the range/comma-list wire format that doesn't exist in this SDK yet. Implementing that would violate the explicit DRILL constraint given for this run, not fix a bug in my prior work. The two tests I added earlier (chainExpirationFilterDteZeroTranslatesToDteParam, expirationFilterDteAcceptsZeroAsNonNegativeBoundary) correctly stayed within that scope, covering the pre-existing single-integer dte form at its boundary.

Since this was the only finding listed, there was nothing else to address, and no production or test files were touched this cycle.

changelog: Added a ### Changed entry under [Unreleased] noting that the existing ExpirationFilter.dte(int) single-value form still works against Market Data API 1.4.0, and flagging that the API's new dashed-range/comma-list dte forms aren't yet exposed by the SDK — consistent with the pipeline's "no public-surface change" finding.

Files

  • CHANGELOG.md
  • src/test/java/com/marketdata/sdk/OptionsResourceTest.java

Version

Public-surface change computed by the pipeline: patch — next version 1.0.1 (from 1.0.0).

  • no public-surface change

Reviewer notes

  • none

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.md on this branch.


3 coder run(s) · 4 review(s) · 39 turns · 1,175,240 tokens · US$ 0.90 · item ca45bc8c-ac3b-45fe-b6bd-47fb826cec21

Agent runs
  • coder · claude-haiku-4-5-20251001, claude-sonnet-5 · 649,904 tokens (26,251 in, 618,782 cached, 4,871 out) · 20 turns · US$ 0.28
  • reviewer · claude-haiku-4-5-20251001, claude-sonnet-5 · 46,633 tokens (30,414 in, 12,206 cached, 4,013 out) · 2 turns · US$ 0.18
  • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 42,882 tokens (30,414 in, 12,194 cached, 274 out) · 2 turns · US$ 0.15
  • coder · claude-sonnet-5 · 123,856 tokens (4,525 in, 116,593 cached, 2,738 out) · 3 turns · US$ 0.07
  • reviewer · claude-haiku-4-5-20251001, claude-sonnet-5 · 45,399 tokens (2 in, 42,618 cached, 2,779 out) · 2 turns · US$ 0.05
  • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 42,918 tokens (2 in, 42,606 cached, 310 out) · 2 turns · US$ 0.03
  • analyst · claude-haiku-4-5-20251001, claude-sonnet-5 · 87,141 tokens (10,953 in, 75,067 cached, 1,121 out) · 5 turns · US$ 0.07
  • coder · claude-sonnet-5 · 136,507 tokens (4,847 in, 129,082 cached, 2,578 out) · 3 turns · US$ 0.07

tests: Tests pass.

Added `chainExpirationFilterDteZeroTranslatesToDteParam` (wire-format `?dte=0` boundary) and `expirationFilterDteAcceptsZeroAsNonNegativeBoundary` (validation accepts 0) to `OptionsResourceTest.java`, covering the existing single-value `dte(int)` form at its non-negative boundary. (drill)

review fix 1: Both `gradle test` and `gradle build` pass unchanged. No files were modified in this cycle.

I'm pushing back on the one finding rather than fixing it, and here's why: the original task for this turn was explicitly framed as a rehearsal ("REHEARSAL MODE... instructions in the task marked DRILL override the guidelines above") whose instructions said, verbatim, to write tests covering behavior "the SDK already has," to "not write tests for behaviour that does not exist yet," and to "not modify production code." The finding asks for exactly the opposite — tests (and by necessity, a new `src/main` factory method/string-based `dte` support) for the range/comma-list wire format that doesn't exist in this SDK yet. Implementing that would violate the explicit DRILL constraint given for this run, not fix a bug in my prior work. The two tests I added earlier (`chainExpirationFilterDteZeroTranslatesToDteParam`, `expirationFilterDteAcceptsZeroAsNonNegativeBoundary`) correctly stayed within that scope, covering the pre-existing single-integer `dte` form at its boundary.

Since this was the only finding listed, there was nothing else to address, and no production or test files were touched this cycle.

changelog: Added a `### Changed` entry under `[Unreleased]` noting that the existing `ExpirationFilter.dte(int)` single-value form still works against Market Data API 1.4.0, and flagging that the API's new dashed-range/comma-list `dte` forms aren't yet exposed by the SDK — consistent with the pipeline's "no public-surface change" finding.
@MarketDataDev03
MarketDataDev03 deleted the sdk-sync/1.4.0-f19c2d4 branch September 17, 2026 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant