Skip to content

sdk-sync: API 2.0.0+ffb34b7 → sdk-java (minor) - #104

Closed
marketdata-sdk-sync[bot] wants to merge 1 commit into
mainfrom
sdk-sync/2.0.0-ffb34b7
Closed

marketdata-sdk-sync[bot] wants to merge 1 commit into
mainfrom
sdk-sync/2.0.0-ffb34b7

Conversation

@marketdata-sdk-sync

@marketdata-sdk-sync marketdata-sdk-sync Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Generated by sdk-auto-sync for API release 2.0.0 (commit ffb34b7).

Changes in the API surface

Snapshots ae2b047c8f6f → c2a31e277345:

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

What the agent did

tests: Added wire tests (OptionsResourceTest.java) for the 4 forms the API now describes for dte: single value (regression, plus a new test proving the pre-existing dte(int) keeps accepting out-of-range values unchanged), comma list (dteList), closed range (dteRange), and comparison operator (dteComparison, with >= and < per the two operator examples given). Added validation tests for the three new factories (empty list, negative, >36500, min>max). Added 4 live integration tests in OptionsIntegrationTest.java covering each form against real AAPL expirations, anchored on values from an ExpirationFilter.all() call (never the unfiltered default) so each assertion fails against the unfiltered answer. The design adds new ExpirationFilter permitted variants/factories only — the existing dte(int) factory is untouched and unbroken, so no SdkSyncCompatProbe.java was needed (delta is purely additive).

implement: Implemented the dte string-syntax delta by adding three new permitted ExpirationFilter sealed variants — dteList/dteRange/dteComparison (reusing StrikeFilter.Operator) — alongside the unchanged dte(int), wired into OptionsResource's query serialization, with every bound validated in each record's own compact constructor so direct construction is covered too.

  • Docs: new methods documented with javadoc and an example (docs/options/chain.md, OptionsAdvancedExample.java); every new form has a wire test (unit) and all four forms have a live-anchor integration test.
  • New-type validation: compact constructors enforce non-empty/bounds/ordering on every public construction path, not just the factories; List.copyOf rejects null elements.
  • Coverage: 100% line coverage verified by the existing JaCoCo gate, no new @Generated exclusions.
  • Existing surface: dte(int) kept its exact signature and error contract (no upper-bound check added there); added a regression test proving it still accepts out-of-range values unchanged.
  • Fixed one phase-1 test (chainExpirationFilterDteListTranslatesToCommaSeparatedDte): it asserted a literal comma on the wire, but the transport's existing query encoder percent-encodes commas (confirmed by the pre-existing columns tests, which URL-decode first) — updated it to decode the URL before asserting, same as the repo's established pattern.
  • Live-test self-check: all four integration tests anchor on real values from an ExpirationFilter.all() call (never the unfiltered default) and each assertion was checked to fail against the unfiltered single-front-month answer.
  • README.md, docs/client.md, docs/options/{quotes,expirations,lookup,README}.md, docs/.sync-manifest.txt, MarketDataClient.java, OptionsCsvResource.java, OptionsHtmlResource.java, OptionsChain.java, JsonResponseParserTest.java, RequestValidationTest.java, OptionsExample.java: left unchanged — none reference dte's filter syntax specifically, only the unrelated chain/ExpirationFilter.all() paths, which remain correct.
  • Left outside limits: ADR-008's Context narrative still lists only the original OnDate/Dte/Between/MonthYear/All variants (now incomplete) and ADR-006 mentions chain( generically — both historical decision records, not updated per repo convention of not revising accepted ADRs for routine additions within their own convention.

changelog: Added changelog entry under ## [Unreleased] documenting ExpirationFilter.dteList(List<Integer>), ExpirationFilter.dteRange(int, int), and ExpirationFilter.dteComparison(StrikeFilter.Operator, int) — the three new factories that implement API 2.0.0's string-syntax forms for the dte parameter (comma-separated list, closed range, comparison operator). Entry notes that dte(int) remains unchanged. The three new permitted subtypes (DteList, DteRange, DteComparison) are not listed separately per the repo's rule 9 (sealed-type additions).

Questions for a person

The internal reviewers raised these for a person to answer. They did not block the change, and the coder was not asked to resolve them.

  • src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.java:243 — Question for a person, not for the author: the API's dte description says a comparison operator "(>=30, <45) returns every expiration whose dte falls within the bounds, inclusive", but "inclusive" cannot hold for <45. The live run of chainDteComparisonGteIncludesBoundaryLtExcludesIt (request dte=<M on AAPL, M = the largest live dte) came back without M, i.e. < is strictly exclusive, which is what "the syntax matches strike and delta" implies; the test and the SDK text follow that reading and are not findings. Please confirm with the API team which forms the word "inclusive" is meant to cover.

Files

  • CHANGELOG.md
  • docs/options/chain.md
  • examples/consumer-test/src/main/java/com/marketdata/examples/resources/OptionsAdvancedExample.java
  • src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.java
  • src/main/java/com/marketdata/sdk/OptionsResource.java
  • src/main/java/com/marketdata/sdk/options/ExpirationFilter.java
  • src/test/java/com/marketdata/sdk/OptionsResourceTest.java

Version

Public-surface change computed by the pipeline: minor

  • added: ExpirationFilter.dteList(List<Integer>) — New static factory; does not alter the existing dte(int) factory or any other overload.
  • added: ExpirationFilter.dteRange(int, int) — New static factory; purely additive.
  • added: ExpirationFilter.dteComparison(StrikeFilter.Operator, int) — New static factory; purely additive.
  • added: ExpirationFilter.DteList — New permitted subtype of the sealed ExpirationFilter interface; per repo rule 9 this is additive (an exhaustive switch gains a new case to handle) and the sealed parent ExpirationFilter is not listed as changed.
  • added: ExpirationFilter.DteRange — New permitted subtype of the sealed ExpirationFilter interface; additive per repo rule 9, same reasoning as DteList.
  • added: ExpirationFilter.DteComparison — New permitted subtype of the sealed ExpirationFilter interface; additive per repo rule 9, same reasoning as DteList.

Live-API suite

  • src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.java

Files of this suite changed by this pull request. The pipeline ran the ones the change added or modified against the live API before the pull request, and they passed; this pull request's CI runs the whole suite.

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.


3 coder run(s) · 2 review(s) · 151 turns · 14,992,067 tokens · US$ 7.12 · item 5c097984-5f7b-401b-abba-235a3f417767

Agent runs
  • coder · claude-haiku-4-5-20251001, claude-sonnet-5 · 3,967,744 tokens (128,992 in, 3,786,041 cached, 52,711 out) · 45 turns · US$ 1.81 · 9 min 22 s
  • coder · claude-sonnet-5 · 10,008,606 tokens (84,278 in, 9,883,100 cached, 41,228 out) · 82 turns · US$ 2.73 · 9 min 03 s
  • reviewer · claude-haiku-4-5-20251001, claude-opus-5 · 728,889 tokens (110,618 in, 598,088 cached, 20,183 out) · 13 turns · US$ 1.96 · 4 min 23 s
  • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 87,544 tokens (79,880 in, 6,552 cached, 1,112 out) · 2 turns · US$ 0.38 · 15 s
  • analyst · claude-haiku-4-5-20251001, claude-sonnet-5 · 43,165 tokens (34,643 in, 6,522 cached, 2,000 out) · 2 turns · US$ 0.18 · 21 s
  • changelog · claude-haiku-4-5-20251001 · 156,119 tokens (19,730 in, 134,120 cached, 2,269 out) · 7 turns · US$ 0.07 · 25 s

tests: Added wire tests (OptionsResourceTest.java) for the 4 forms the API now describes for `dte`: single value (regression, plus a new test proving the pre-existing dte(int) keeps accepting out-of-range values unchanged), comma list (dteList), closed range (dteRange), and comparison operator (dteComparison, with >= and < per the two operator examples given). Added validation tests for the three new factories (empty list, negative, >36500, min>max). Added 4 live integration tests in OptionsIntegrationTest.java covering each form against real AAPL expirations, anchored on values from an ExpirationFilter.all() call (never the unfiltered default) so each assertion fails against the unfiltered answer. The design adds new ExpirationFilter permitted variants/factories only — the existing dte(int) factory is untouched and unbroken, so no SdkSyncCompatProbe.java was needed (delta is purely additive).

implement: Implemented the `dte` string-syntax delta by adding three new permitted `ExpirationFilter` sealed variants — `dteList`/`dteRange`/`dteComparison` (reusing `StrikeFilter.Operator`) — alongside the unchanged `dte(int)`, wired into `OptionsResource`'s query serialization, with every bound validated in each record's own compact constructor so direct construction is covered too.
- Docs: new methods documented with javadoc and an example (docs/options/chain.md, OptionsAdvancedExample.java); every new form has a wire test (unit) and all four forms have a live-anchor integration test.
- New-type validation: compact constructors enforce non-empty/bounds/ordering on every public construction path, not just the factories; `List.copyOf` rejects null elements.
- Coverage: 100% line coverage verified by the existing JaCoCo gate, no new `@Generated` exclusions.
- Existing surface: `dte(int)` kept its exact signature and error contract (no upper-bound check added there); added a regression test proving it still accepts out-of-range values unchanged.
- Fixed one phase-1 test (`chainExpirationFilterDteListTranslatesToCommaSeparatedDte`): it asserted a literal comma on the wire, but the transport's existing query encoder percent-encodes commas (confirmed by the pre-existing `columns` tests, which URL-decode first) — updated it to decode the URL before asserting, same as the repo's established pattern.
- Live-test self-check: all four integration tests anchor on real values from an `ExpirationFilter.all()` call (never the unfiltered default) and each assertion was checked to fail against the unfiltered single-front-month answer.
- README.md, docs/client.md, docs/options/{quotes,expirations,lookup,README}.md, docs/.sync-manifest.txt, MarketDataClient.java, OptionsCsvResource.java, OptionsHtmlResource.java, OptionsChain.java, JsonResponseParserTest.java, RequestValidationTest.java, OptionsExample.java: left unchanged — none reference `dte`'s filter syntax specifically, only the unrelated `chain`/`ExpirationFilter.all()` paths, which remain correct.
- Left outside limits: ADR-008's Context narrative still lists only the original `OnDate/Dte/Between/MonthYear/All` variants (now incomplete) and ADR-006 mentions `chain(` generically — both historical decision records, not updated per repo convention of not revising accepted ADRs for routine additions within their own convention.

changelog: Added changelog entry under `## [Unreleased]` documenting `ExpirationFilter.dteList(List<Integer>)`, `ExpirationFilter.dteRange(int, int)`, and `ExpirationFilter.dteComparison(StrikeFilter.Operator, int)` — the three new factories that implement API 2.0.0's string-syntax forms for the `dte` parameter (comma-separated list, closed range, comparison operator). Entry notes that `dte(int)` remains unchanged. The three new permitted subtypes (`DteList`, `DteRange`, `DteComparison`) are not listed separately per the repo's rule 9 (sealed-type additions).
@marketdata-sdk-sync marketdata-sdk-sync Bot added minor adds to the SDK's public surface and breaks nothing sdk-sync: in progress sdk-sync is still working on this PR: CI, code review, fixes labels Nov 3, 2026
@marketdata-sdk-sync

marketdata-sdk-sync Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Author

🧾 Job log — sdk-sync

sdk-auto-sync job log

API release 2.0.0 (commit ffb34b7)
SDK sdk-java
Branch sdk-sync/2.0.0-ffb34b7
API surface ae2b047c8f6f → c2a31e277345
Date 2026-11-03 13:55:56Z
Outcome done

Changes in the API surface

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

1. tests

Coder (45 turns, US$ 1.81, 9 min 22 s):

Ran gradle test --no-daemon --console=plain: compileTestJava fails with 12 "cannot find symbol" errors for ExpirationFilter.dteList/dteRange/dteComparison, as required for phase 1 (red, awaiting phase-2 implementation).

Added wire tests (OptionsResourceTest.java) for the 4 forms the API now describes for dte: single value (regression, plus a new test proving the pre-existing dte(int) keeps accepting out-of-range values unchanged), comma list (dteList), closed range (dteRange), and comparison operator (dteComparison, with >= and < per the two operator examples given). Added validation tests for the three new factories (empty list, negative, >36500, min>max). Added 4 live integration tests in OptionsIntegrationTest.java covering each form against real AAPL expirations, anchored on values from an ExpirationFilter.all() call (never the unfiltered default) so each assertion fails against the unfiltered answer. The design adds new ExpirationFilter permitted variants/factories only — the existing dte(int) factory is untouched and unbroken, so no SdkSyncCompatProbe.java was needed (delta is purely additive).

The pipeline:

  • no compatibility probe: the coder wrote none, which means the change touches no existing public member; the code reviewer is told

Gates:

  • tests (expected to fail), attempt 1: failed — Execution failed for task ':compileTestJava' (registered by plugin class 'org.gradle.api.plugins.JavaBasePlugin'). (9 s)

2. implement

Coder (82 turns, US$ 2.73, 9 min 03 s):

gradle test --no-daemon --console=plain and gradle build --no-daemon --console=plain both green (BUILD SUCCESSFUL), including Spotless formatting check and 100% JaCoCo line-coverage verification.

Implemented the dte string-syntax delta by adding three new permitted ExpirationFilter sealed variants — dteList/dteRange/dteComparison (reusing StrikeFilter.Operator) — alongside the unchanged dte(int), wired into OptionsResource's query serialization, with every bound validated in each record's own compact constructor so direct construction is covered too.

  • Docs: new methods documented with javadoc and an example (docs/options/chain.md, OptionsAdvancedExample.java); every new form has a wire test (unit) and all four forms have a live-anchor integration test.
  • New-type validation: compact constructors enforce non-empty/bounds/ordering on every public construction path, not just the factories; List.copyOf rejects null elements.
  • Coverage: 100% line coverage verified by the existing JaCoCo gate, no new @Generated exclusions.
  • Existing surface: dte(int) kept its exact signature and error contract (no upper-bound check added there); added a regression test proving it still accepts out-of-range values unchanged.
  • Fixed one phase-1 test (chainExpirationFilterDteListTranslatesToCommaSeparatedDte): it asserted a literal comma on the wire, but the transport's existing query encoder percent-encodes commas (confirmed by the pre-existing columns tests, which URL-decode first) — updated it to decode the URL before asserting, same as the repo's established pattern.
  • Live-test self-check: all four integration tests anchor on real values from an ExpirationFilter.all() call (never the unfiltered default) and each assertion was checked to fail against the unfiltered single-front-month answer.
  • README.md, docs/client.md, docs/options/{quotes,expirations,lookup,README}.md, docs/.sync-manifest.txt, MarketDataClient.java, OptionsCsvResource.java, OptionsHtmlResource.java, OptionsChain.java, JsonResponseParserTest.java, RequestValidationTest.java, OptionsExample.java: left unchanged — none reference dte's filter syntax specifically, only the unrelated chain/ExpirationFilter.all() paths, which remain correct.
  • Left outside limits: ADR-008's Context narrative still lists only the original OnDate/Dte/Between/MonthYear/All variants (now incomplete) and ADR-006 mentions chain( generically — both historical decision records, not updated per repo convention of not revising accepted ADRs for routine additions within their own convention.

Gates:

  • tests, attempt 1: passed (7 s)
  • build, attempt 1: passed (7 s)
  • live API suite, attempt 1: passed (28 s) — gradle integrationTest --rerun --no-daemon --console=plain --tests com.marketdata.sdk.OptionsIntegrationTest

3. review 1

Reviewer (13 turns, US$ 1.96, 4 min 23 s): approved

The change covers all four dte forms the API now describes — single, comma list, closed range, comparison — as new permitted variants of the sealed ExpirationFilter, leaving the existing dte(int) factory and its error contract untouched (additive, no public break; version impact minor). Wire tests pin each form's exact query string (both documented operators), validation tests cover empty list, negative, >36500 and min>max on the three new records, and the four live tests each anchor on an expiration=all baseline so none of them would pass on the unfiltered front-month answer or on an empty one. Only small issues remain: one javadoc that misstates dte(int)'s bound, two result-discarding calls added to the example, and one documentation ambiguity worth settling with the API team.

  • [minor · question for a person] src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.java:243 — Question for a person, not for the author: the API's dte description says a comparison operator "(>=30, <45) returns every expiration whose dte falls within the bounds, inclusive", but "inclusive" cannot hold for <45. The live run of chainDteComparisonGteIncludesBoundaryLtExcludesIt (request dte=<M on AAPL, M = the largest live dte) came back without M, i.e. < is strictly exclusive, which is what "the syntax matches strike and delta" implies; the test and the SDK text follow that reading and are not findings. Please confirm with the API team which forms the word "inclusive" is meant to cover.
  • [minor] src/main/java/com/marketdata/sdk/options/ExpirationFilter.java:64 — dteList's javadoc says "Each value is bounded like {@link #dte} ({@code [0, 36500]})", but dte(int) only rejects negatives — the change's own test chainExpirationFilterDteStillAcceptsValuesAboveNewMaximum sends dte=50000, and docs/options/chain.md states the opposite. Reword to say the bound is enforced on dteList/dteRange/dteComparison only, and that dte(int) keeps its pre-existing non-negative-only check.
  • [minor] examples/consumer-test/src/main/java/com/marketdata/examples/resources/OptionsAdvancedExample.java:55 — The dteRange(0, 45) and dteComparison(GTE, 30) calls spend live API requests and discard the response — unlike every other block in this example, they print nothing, so a reader running runOptionsAdvanced sees no evidence either form worked. Print something derived from the response (e.g. the distinct-expiration count, as the dteList block does) or drop the two calls; the dteRange line is also the only >100-column line in the file.

4. security

Security (2 turns, US$ 0.38, 15 s): approved

The change adds three new ExpirationFilter variants (dteList, dteRange, dteComparison) for the options chain dte parameter. All new query-value construction uses bounded integers (validated 0–36500 in the record constructors) or a closed enum (StrikeFilter.Operator), concatenated into query strings that pass through the existing query-encoding path — there is no path for unescaped user-controlled strings to reach the URL. No secrets, dependencies, build/CI changes, deserialization of untrusted data, or logging of sensitive data are introduced. No security issues found.

  • no findings

5. assess

Analyst (2 turns, US$ 0.18, 21 s) — public surface:

The change adds three new sub-syntaxes for the dte expiration filter — a list, a closed range, and a comparison — each as a new permitted record subtype of the existing sealed ExpirationFilter interface, with a matching new static factory method on ExpirationFilter. The existing ExpirationFilter.dte(int) factory, the Dte record, and every other existing public member are untouched; OptionsResource's internal query-building branch is not part of the public surface. All touched members are additions: no existing caller's source or binary compatibility is affected.

  • added: ExpirationFilter.dteList(List<Integer>) — New static factory; does not alter the existing dte(int) factory or any other overload.
  • added: ExpirationFilter.dteRange(int, int) — New static factory; purely additive.
  • added: ExpirationFilter.dteComparison(StrikeFilter.Operator, int) — New static factory; purely additive.
  • added: ExpirationFilter.DteList — New permitted subtype of the sealed ExpirationFilter interface; per repo rule 9 this is additive (an exhaustive switch gains a new case to handle) and the sealed parent ExpirationFilter is not listed as changed.
  • added: ExpirationFilter.DteRange — New permitted subtype of the sealed ExpirationFilter interface; additive per repo rule 9, same reasoning as DteList.
  • added: ExpirationFilter.DteComparison — New permitted subtype of the sealed ExpirationFilter interface; additive per repo rule 9, same reasoning as DteList.

Computed by the pipeline: minor; changelog entry written

6. changelog

Coder (7 turns, US$ 0.07, 25 s):

Added changelog entry under ## [Unreleased] documenting ExpirationFilter.dteList(List<Integer>), ExpirationFilter.dteRange(int, int), and ExpirationFilter.dteComparison(StrikeFilter.Operator, int) — the three new factories that implement API 2.0.0's string-syntax forms for the dte parameter (comma-separated list, closed range, comparison operator). Entry notes that dte(int) remains unchanged. The three new permitted subtypes (DteList, DteRange, DteComparison) are not listed separately per the repo's rule 9 (sealed-type additions).

Gates:

  • build, attempt 1: passed (6 s)

Questions for a person

The internal reviewers raised these for a person to answer. They did not block the change, and the coder was not asked to resolve them.

  • src/integrationTest/java/com/marketdata/sdk/OptionsIntegrationTest.java:243 — Question for a person, not for the author: the API's dte description says a comparison operator "(>=30, <45) returns every expiration whose dte falls within the bounds, inclusive", but "inclusive" cannot hold for <45. The live run of chainDteComparisonGteIncludesBoundaryLtExcludesIt (request dte=<M on AAPL, M = the largest live dte) came back without M, i.e. < is strictly exclusive, which is what "the syntax matches strike and delta" implies; the test and the SDK text follow that reading and are not findings. Please confirm with the API team which forms the word "inclusive" is meant to cover.

Totals

  • Bump: minor
  • Coder runs: 3
  • Review runs: 2
  • Gates run: 5 (1 failed)
  • Files changed by the agent: 7
  • Turns: 151
  • Tokens: 14,992,067
  • Estimated cost: US$ 7.12
  • Time: 25 min 03 s (agents 23 min 49 s, gates 57 s)

Agent runs

  • coder · claude-haiku-4-5-20251001, claude-sonnet-5 · 3,967,744 tokens (128,992 in, 3,786,041 cached, 52,711 out) · 45 turns · US$ 1.81 · 9 min 22 s
  • coder · claude-sonnet-5 · 10,008,606 tokens (84,278 in, 9,883,100 cached, 41,228 out) · 82 turns · US$ 2.73 · 9 min 03 s
  • reviewer · claude-haiku-4-5-20251001, claude-opus-5 · 728,889 tokens (110,618 in, 598,088 cached, 20,183 out) · 13 turns · US$ 1.96 · 4 min 23 s
  • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 87,544 tokens (79,880 in, 6,552 cached, 1,112 out) · 2 turns · US$ 0.38 · 15 s
  • analyst · claude-haiku-4-5-20251001, claude-sonnet-5 · 43,165 tokens (34,643 in, 6,522 cached, 2,000 out) · 2 turns · US$ 0.18 · 21 s
  • changelog · claude-haiku-4-5-20251001 · 156,119 tokens (19,730 in, 134,120 cached, 2,269 out) · 7 turns · US$ 0.07 · 25 s

CI repair 1 — 2026-11-03 16:04:12Z

Outcome: failed — the agent changed no files

Time: 2 min 59 s (agents 2 min 59 s, gates 0 s)

1. CI fix 1

Coder (16 turns, US$ 0.46, 2 min 59 s):

Ran gradle test --no-daemon --console=plain (BUILD SUCCESSFUL) and gradle build --no-daemon --console=plain (BUILD SUCCESSFUL, integrationTest task SKIPPED locally since it's env-var gated). No source changes made since the reported CI failure (StocksIntegrationTest live-API 404) falls entirely outside this PR's diff.

The only CI failure, StocksIntegrationTest.earningsReturnsHistoryWithNullableFields() getting 404 instead of 200/203 for AAPL earnings, is in a file this PR never touches (src/integrationTest/java/com/marketdata/sdk/StocksIntegrationTest.java, last changed in commits 8ae8777/5a792ba, well before this sync branch). This PR's diff is limited to the options dte filter (OptionsResource.java, ExpirationFilter.java, OptionsResourceTest.java, OptionsIntegrationTest.java, OptionsAdvancedExample.java, docs/options/chain.md, CHANGELOG.md), and all 4 new dte integration tests plus the other 30 live tests reported passing (31 completed, 1 failed). I made no code change: the test's own 404 outcome for a free-trial "always-populated" symbol is data I cannot account for from here and is unrelated to the dte change, so per the rule against loosening a live test to force a pass, I left it as-is for a person to check against the live API (whether AAPL earnings data is genuinely missing right now, or the 404 exclusion needs revisiting separately from this PR).

@codecov

codecov Bot commented Nov 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.29%. Comparing base (ff83a90) to head (268d8fb).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff              @@
##               main     #104      +/-   ##
============================================
+ Coverage     98.27%   98.29%   +0.02%     
- Complexity     1043     1052       +9     
============================================
  Files           123      123              
  Lines          2606     2639      +33     
  Branches        301      308       +7     
============================================
+ Hits           2561     2594      +33     
  Partials         45       45              
Files with missing lines Coverage Δ
.../main/java/com/marketdata/sdk/OptionsResource.java 98.57% <100.00%> (+0.04%) ⬆️
...a/com/marketdata/sdk/options/ExpirationFilter.java 97.87% <100.00%> (+2.87%) ⬆️

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 47b35ea...268d8fb. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@marketdata-sdk-sync
marketdata-sdk-sync Bot marked this pull request as draft November 3, 2026 16:07
@marketdata-sdk-sync marketdata-sdk-sync Bot added sdk-sync: needs human sdk-sync stopped: a person has to look (see the PR's comments) and removed sdk-sync: in progress sdk-sync is still working on this PR: CI, code review, fixes labels Nov 3, 2026
@marketdata-sdk-sync

Copy link
Copy Markdown
Author

🙋 Needs a person — sdk-sync

Why: CI repair 1: the CI failure does not seem to be in the code; the agent found nothing to change · failures/2026-11-03T16-04-12Z_sdk-java_2.0.0_ci.md

Failed checks

  • Tests passed: failure
  • Integration tests (live API, JDK 17): failure

Code-review fix rounds used: 0 of 2 · CI repairs used: 1 of 2

What to do

  1. Look at the failed checks and fix them on sdk-sync/2.0.0-ffb34b7, or close this PR.
  2. Then mark the PR ready for review and comment @marketdata-code-review re-review: the review bot skips drafts. The pipeline does not touch this PR again.

This pull request is back to draft and labelled sdk-sync: needs human; the release row says PR_NEEDS_HUMAN_REVIEW.

@MarketDataDev03

Copy link
Copy Markdown
Collaborator

Closing to re-run the SDK sync for API 2.0.0 on all six SDKs, now that the earnings endpoint is fixed.

@MarketDataDev03
MarketDataDev03 deleted the sdk-sync/2.0.0-ffb34b7 branch November 10, 2026 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor adds to the SDK's public surface and breaks nothing sdk-sync: needs human sdk-sync stopped: a person has to look (see the PR's comments)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant