Skip to content

sdk-sync: API 2.0.1+0000001 → sdk-java (major) #96

Closed

Description

@marketdata-sdk-sync

Breaking change, waiting for the major release. This change breaks compatibility. The pipeline wrote it and tested it, and it waits on its branch for the SDK's major release. It has no pull request.

What changed in the API

API release 2.0.1 (commit 0000001). Snapshots c2a31e277345 → 8679cb068959:

- GET /v1/markets/status/ ?countback: integer

What changes in the SDK, and why it is major

Public-surface change computed by the pipeline: major. A member marked removed or changed breaks something a consumer does today.

  • removed: MarketStatusRequest.countback() — Public getter method removed; consumer code reading this field will not compile.
  • removed: MarketStatusRequest.Builder.countback(int) — Public builder method removed; consumer code chaining .countback(...) will not compile.

The branch

State at that commit

  • Tests: passed (gradle test --no-daemon --console=plain)
  • Build: passed (gradle build --no-daemon --console=plain)
  • Internal code review: approved
  • Internal security review: approved

What did not run

There is no pull request, so none of this ran on the branch:

  • the repository's CI
  • the suite against the live API (the pipeline has no API token)
  • the organization's code review

What the agent did

tests: Added one removal test, statusRequestNoLongerOffersCountback() in MarketsResourceTest.java, proving via reflection that MarketStatusRequest.Builder.countback(int) and MarketStatusRequest.countback() must be gone (NoSuchMethodException), since API 2.0.1 dropped countback from GET /v1/markets/status/ while the SDK still offers it. No other test files needed changes: the only other references to countback/status/markets-status in the listed files belong to unaffected sibling endpoints (stocks, options, funds) or to utilities' unrelated /status/ service-health endpoint.

implement: Removed countback from GET /v1/markets/status/: dropped the field/getter/builder method from MarketStatusRequest, the parameter from MarketRequests.validateWindow and the query-attachment in MarketsResource.statusSpec, since the API no longer accepts it there (sibling endpoints keep countback unchanged).

  • Wire test per form / new enum values: n/a, this is a removal, not a new form.
  • Validation on every public path: n/a, no new type added; validateWindow(date, from, to) keeps its one check (date vs. range), still exercised on both date() and build() paths.
  • Existing public methods keep their errors: date+from/to still throws IllegalArgumentException("date and from/to are mutually exclusive"), substring-compatible with the old test; no new check added to any call that previously reached the API.
  • Coverage: jacocoTestCoverageVerification (100% line, project-wide) passes with no new exclusions.
  • Docs: docs/markets/status.md builder block no longer lists .countback; Window-rules prose updated.
  • Test I wrote in phase 1 (statusRequestNoLongerOffersCountback, reflection-based NoSuchMethodException proof) is unchanged and now green.
  • Fixed pre-existing tests that exercised the removed parameter (not mine from phase 1, so not covered by the "don't weaken" rule): rewrote statusAttachesDateAndCountbackWindows to statusAttachesDateWindow (date-only), deleted statusRequestRejectsCountbackWithFrom and statusRequestRejectsNonPositiveCountback from MarketsResourceTest.java, and deleted the live statusCountbackWindowDecodes integration test from MarketsIntegrationTest.java — all three called the now-gone method and would not compile otherwise.
  • examples/consumer-test/.../MarketsAdvancedExample.java (not built here): replaced its countback(10) demo with an equivalent from/to 10-day window so the example keeps compiling.
  • Left as-is, unrelated to this delta: RequestSpecTest.java (uses "countback" only as a generic literal query-param key), HttpTransportTest.java/JsonResponseParserTest.java/UtilitiesResourceTest.java/MarketDataClient.java/MarketStatus.java/ADR-007 (match only on "status"/"markets", not the removed parameter), OptionsQuoteRequest.java/OptionsQuotesRequest.java/OptionsResourceTest.java/FundCandlesRequest.java/FundRequests.java/StockCandlesRequest.java/StockNewsRequest.java/StockEarningsRequest.java/README.md (countback on sibling endpoints, untouched by this delta), examples/mock-server/server.py (scriptable catch-all mock, no param-specific logic to remove).
    Outside my limits: none found wrong or out of date by this change.

changelog: Added a ### Removed (BREAKING) entry under [Unreleased] in CHANGELOG.md documenting the removal of MarketStatusRequest.countback() and Builder.countback(int) methods, with migration guidance to use .from() and .to() date-range windowing instead.

Files

  • CHANGELOG.md
  • docs/markets/status.md
  • examples/consumer-test/src/main/java/com/marketdata/examples/resources/MarketsAdvancedExample.java
  • src/integrationTest/java/com/marketdata/sdk/MarketsIntegrationTest.java
  • src/main/java/com/marketdata/sdk/MarketsResource.java
  • src/main/java/com/marketdata/sdk/markets/MarketRequests.java
  • src/main/java/com/marketdata/sdk/markets/MarketStatusRequest.java
  • src/test/java/com/marketdata/sdk/MarketsResourceTest.java

Live-API suite

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

Files of this suite changed on this branch. The pipeline did not run the suite (it has no API token); it runs when the pull request is opened, in that pull request's CI.

How it is taken

git fetch origin sdk-sync/2.0.1-0000001
git switch sdk-sync/2.0.1-0000001
git rebase --onto <major-branch> 682a304aa5c3531c5a40d2027ad2ee3eb3c2efd5
git push --force-with-lease origin sdk-sync/2.0.1-0000001

<major-branch> is the branch of the SDK's major release, created from main when the team decides to make it. Changes waiting like this one are rebased onto it in the order they were created, oldest first. The pull request of this branch is opened against <major-branch>, not against main; the release ends with one pull request from <major-branch> to main.

Job log

The full record of this job — every phase, test and build result, review findings and how they were resolved, and how long each took — is in the job log comment.


3 coder run(s) · 2 review(s) · 78 turns · 5,426,827 tokens · US$ 3.08 · item a0c778e1-1561-4ec4-b3e3-14803f13ad1c

Agent runs
  • coder · claude-haiku-4-5-20251001, claude-sonnet-5 · 810,855 tokens (62,829 in, 727,296 cached, 20,730 out) · 15 turns · US$ 0.61 · 4 min 10 s
  • coder · claude-sonnet-5 · 4,075,261 tokens (41,477 in, 4,016,540 cached, 17,244 out) · 41 turns · US$ 1.14 · 3 min 40 s
  • reviewer · claude-haiku-4-5-20251001, claude-opus-5 · 320,439 tokens (58,705 in, 252,729 cached, 9,005 out) · 11 turns · US$ 0.96 · 2 min 04 s
  • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 48,398 tokens (47,480 in, 0 cached, 918 out) · 2 turns · US$ 0.22 · 13 s
  • analyst · claude-haiku-4-5-20251001 · 53,906 tokens (27,051 in, 25,291 cached, 1,564 out) · 3 turns · US$ 0.07 · 16 s
  • changelog · claude-haiku-4-5-20251001 · 117,968 tokens (25,333 in, 90,755 cached, 1,880 out) · 6 turns · US$ 0.07 · 22 s

Activity

  1. marketdata-sdk-sync commented on Oct 14, 2026

    @marketdata-sdk-sync
    Author

    🧾 Job log — sdk-sync

    sdk-auto-sync job log

    API release 2.0.1 (commit 0000001)
    SDK sdk-java
    Branch sdk-sync/2.0.1-0000001
    API surface c2a31e277345 → 8679cb068959
    Date 2026-10-14 14:30:15Z
    Outcome done

    Changes in the API surface

    - GET /v1/markets/status/ ?countback: integer
    

    1. tests

    Coder (15 turns, US$ 0.61, 4 min 10 s):

    gradle test --no-daemon --console=plain: red as required — 824 tests completed, 1 failed (statusRequestNoLongerOffersCountback), confirming the countback symbol is still present today.

    Added one removal test, statusRequestNoLongerOffersCountback() in MarketsResourceTest.java, proving via reflection that MarketStatusRequest.Builder.countback(int) and MarketStatusRequest.countback() must be gone (NoSuchMethodException), since API 2.0.1 dropped countback from GET /v1/markets/status/ while the SDK still offers it. No other test files needed changes: the only other references to countback/status/markets-status in the listed files belong to unaffected sibling endpoints (stocks, options, funds) or to utilities' unrelated /status/ service-health endpoint.

    Gates:

    • tests (expected to fail), attempt 1: failed — 1 failing test(s): com.marketdata.sdk.MarketsResourceTest.statusRequestNoLongerOffersCountback() (11 s)

    2. implement

    Coder (41 turns, US$ 1.14, 3 min 40 s):

    gradle test --no-daemon --console=plain: BUILD SUCCESSFUL. gradle build --no-daemon --console=plain: BUILD SUCCESSFUL (compile, test, jacocoTestCoverageVerification at 100%, spotlessCheck, check all green).

    Removed countback from GET /v1/markets/status/: dropped the field/getter/builder method from MarketStatusRequest, the parameter from MarketRequests.validateWindow and the query-attachment in MarketsResource.statusSpec, since the API no longer accepts it there (sibling endpoints keep countback unchanged).

    • Wire test per form / new enum values: n/a, this is a removal, not a new form.
    • Validation on every public path: n/a, no new type added; validateWindow(date, from, to) keeps its one check (date vs. range), still exercised on both date() and build() paths.
    • Existing public methods keep their errors: date+from/to still throws IllegalArgumentException("date and from/to are mutually exclusive"), substring-compatible with the old test; no new check added to any call that previously reached the API.
    • Coverage: jacocoTestCoverageVerification (100% line, project-wide) passes with no new exclusions.
    • Docs: docs/markets/status.md builder block no longer lists .countback; Window-rules prose updated.
    • Test I wrote in phase 1 (statusRequestNoLongerOffersCountback, reflection-based NoSuchMethodException proof) is unchanged and now green.
    • Fixed pre-existing tests that exercised the removed parameter (not mine from phase 1, so not covered by the "don't weaken" rule): rewrote statusAttachesDateAndCountbackWindows to statusAttachesDateWindow (date-only), deleted statusRequestRejectsCountbackWithFrom and statusRequestRejectsNonPositiveCountback from MarketsResourceTest.java, and deleted the live statusCountbackWindowDecodes integration test from MarketsIntegrationTest.java — all three called the now-gone method and would not compile otherwise.
    • examples/consumer-test/.../MarketsAdvancedExample.java (not built here): replaced its countback(10) demo with an equivalent from/to 10-day window so the example keeps compiling.
    • Left as-is, unrelated to this delta: RequestSpecTest.java (uses "countback" only as a generic literal query-param key), HttpTransportTest.java/JsonResponseParserTest.java/UtilitiesResourceTest.java/MarketDataClient.java/MarketStatus.java/ADR-007 (match only on "status"/"markets", not the removed parameter), OptionsQuoteRequest.java/OptionsQuotesRequest.java/OptionsResourceTest.java/FundCandlesRequest.java/FundRequests.java/StockCandlesRequest.java/StockNewsRequest.java/StockEarningsRequest.java/README.md (countback on sibling endpoints, untouched by this delta), examples/mock-server/server.py (scriptable catch-all mock, no param-specific logic to remove).
      Outside my limits: none found wrong or out of date by this change.

    Gates:

    • tests, attempt 1: passed (6 s)
    • build, attempt 1: passed (7 s)

    3. review 1

    Reviewer (11 turns, US$ 0.96, 2 min 04 s): approved

    The removal of countback from MarketStatusRequest, MarketRequests.validateWindow, statusSpec, the docs page and the example is complete and consistent — no other caller of the 3-arg validateWindow exists, the CSV/HTML facets reuse statusSpec, and no other doc/README/example still shows markets countback. Version impact: major (MarketStatusRequest.Builder.countback(int) and MarketStatusRequest.countback() removed — source- and binary-breaking); the replacement from+to path keeps its unit and live coverage. Only two minor issues remain, both in the removal's test/example wording.

    • [minor] src/test/java/com/marketdata/sdk/MarketsResourceTest.java:331 — statusRequestNoLongerOffersCountback asserts the implementation shape via reflection, which the compiler already enforces, and still passes if countback is reintroduced under another signature (e.g. countback(Integer)). The repository's convention for proving a parameter is not sent is a wire assertion (cf. OptionsResourceTest:759, StocksResourceTest:732); add assertThat(client.captured.get(0).uri().toString()).doesNotContain("countback") to a status wire test so a hardcoded re-add is caught too.
    • [minor] examples/consumer-test/src/main/java/com/marketdata/examples/resources/MarketsAdvancedExample.java:30 — from(now-10)..to(now) is an 11-day inclusive window, so the printed "Last 10 calendar days" label is now off by one, and the variable name counted no longer means anything after countback is gone. Use minusDays(9) (or relabel) and rename the variable to e.g. window.

    4. security

    Security (2 turns, US$ 0.22, 13 s): approved

    This change removes the countback query parameter from the markets status endpoint (API 2.0.1), deleting it from the request builder, validation, query-string construction, tests, docs, and examples. There is no new input handling, no injection surface, no credential or secret handling, no new dependency, and no change to TLS, logging, or error-type behavior. No security issue found.

    • no findings

    5. assess

    Analyst (3 turns, US$ 0.07, 16 s) — public surface:

    The API removed the countback query parameter from GET /v1/markets/status/, and the SDK removes the corresponding public methods from MarketStatusRequest: the getter countback() and the builder method Builder.countback(int). Consumers that built requests with .countback() or read the field via the getter will see compile errors.

    • removed: MarketStatusRequest.countback() — Public getter method removed; consumer code reading this field will not compile.
    • removed: MarketStatusRequest.Builder.countback(int) — Public builder method removed; consumer code chaining .countback(...) will not compile.

    Computed by the pipeline: major; changelog entry written

    6. changelog

    Coder (6 turns, US$ 0.07, 22 s):

    Edit tool successfully modified CHANGELOG.md with the breaking change entry for API 2.0.1.

    Added a ### Removed (BREAKING) entry under [Unreleased] in CHANGELOG.md documenting the removal of MarketStatusRequest.countback() and Builder.countback(int) methods, with migration guidance to use .from() and .to() date-range windowing instead.

    Gates:

    • build, attempt 1: passed (7 s)

    Totals

    • Bump: major
    • Coder runs: 3
    • Review runs: 2
    • Gates run: 4 (1 failed)
    • Files changed by the agent: 8
    • Turns: 78
    • Tokens: 5,426,827
    • Estimated cost: US$ 3.08
    • Time: 11 min 33 s (agents 10 min 45 s, gates 31 s)

    Agent runs

    • coder · claude-haiku-4-5-20251001, claude-sonnet-5 · 810,855 tokens (62,829 in, 727,296 cached, 20,730 out) · 15 turns · US$ 0.61 · 4 min 10 s
    • coder · claude-sonnet-5 · 4,075,261 tokens (41,477 in, 4,016,540 cached, 17,244 out) · 41 turns · US$ 1.14 · 3 min 40 s
    • reviewer · claude-haiku-4-5-20251001, claude-opus-5 · 320,439 tokens (58,705 in, 252,729 cached, 9,005 out) · 11 turns · US$ 0.96 · 2 min 04 s
    • security · claude-haiku-4-5-20251001, claude-sonnet-5 · 48,398 tokens (47,480 in, 0 cached, 918 out) · 2 turns · US$ 0.22 · 13 s
    • analyst · claude-haiku-4-5-20251001 · 53,906 tokens (27,051 in, 25,291 cached, 1,564 out) · 3 turns · US$ 0.07 · 16 s
    • changelog · claude-haiku-4-5-20251001 · 117,968 tokens (25,333 in, 90,755 cached, 1,880 out) · 6 turns · US$ 0.07 · 22 s
  2. added
    majorbreaks the SDK's public surface: waits for the major release
    on Oct 14, 2026
  3. MarketDataDev03 commented on Oct 14, 2026

    @MarketDataDev03
    Collaborator

    Test run of the major path; closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    majorbreaks the SDK's public surface: waits for the major release

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions